[
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]\npatreon: # Replace with a single Patreon username\nopen_collective: # Replace with a single Open Collective username\nko_fi: arrow_kb\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\nlfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry\npolar: # Replace with a single Polar username\nbuy_me_a_coffee: # Replace with a single Buy Me a Coffee username\nthanks_dev: # Replace with a single thanks.dev username\ncustom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<https://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<https://www.gnu.org/licenses/why-not-lgpl.html>.\n"
  },
  {
    "path": "README.md",
    "content": "### Important Notice\n\nDue to several factors (mainly due to a long persistent trend of _difficulty_ with GIANTS Software), development and maintenance of all my mods are hereby ceased. I have removed all my mods from the GIANTS ModHub, and no further development will be supported on any platform.\n\nFor certain mods, I will be uploading my private development versions to their respective GitHub projects. Anyone who wishes to continue development or maintenance of any mod is allowed to do so, and upload it to the ModHub, with appropriate credit. Any questions related to continued development can be directed to **arrow_kb** on discord.\n\n\n# FS25_RealisticLivestock\n\n[![Github All Releases](https://img.shields.io/github/downloads/Arrow-kb/FS25_RealisticLivestock/total.svg)]()\n\n[Requires FS25_FontLibrary](https://github.com/Arrow-kb/FS25_FontLibrary)\n\nRealistic Livestock mod for FS25.\n\n# Features:\n<ins>**Male Animals**</ins>\n- Higher value\n- Required for reproduction\n- No male models (im not a 3d artist)\n\n<ins>**Visual Animals**</ins>\n- The limit of visual animals per husbandry has been increased from 25 in the vanilla game, up to 200 at maximum which can be changed with a slider\n\n<ins>**Individual Animals**</ins>\n- All animals are now 100% individual and the archaic cluster system has been scrapped, allowing for more variety in gameplay and animals\n- Every animal has its own unique identifier based on the UK's cattle identification system\n- Every animal has a birthday and a country of origin\n- Every animal can be named\n- Supported animals have ear tags on their left and right ears, detailing their country of origin, farm ID, animal ID, name and birthday, as well as a partial identifier on their behind\n- Supported animals have nose rings\n\n<ins>**Enhanced Pregnancy System**</ins>\n- Animals of different species have varying amounts of potential offspring per each pregnancy (example: cows can have 0-3 calves)\n- Offspring is created inside the mother when she is impregnated instead of at birth\n- Ability to view the number of expected offspring and their due date\n- The reproduction duration is now unique for every animal, not every animal of the same species will take the same length of time to deliver their offspring\n\n<ins>**Genetics System**</ins>\n- New genetics system\n- Every animal has several genetic modifiers completely unique to them\n- Current genetics are health, fertility, metabolism, productivity and meat quality\n- Genetics impact several different areas of the animal, such as pregnancy and sale value\n\n<ins>**Weight System**</ins>\n- New weight system\n- Every animal has a weight unique to them, and each day they will gravitate to/from their ideal weight (based on their metabolism) due to how much they eat and drink\n- Weight affects sale value and health, and can unhealthy weight can result in death especially for young animals\n\n<ins>**Enhanced UI**</ins>\n- New family tree visible in the animal screen\n- Lots of additional information is shown in the animal screen and the info box about each animal\n\n<ins>**Enhanced Production**</ins>\n- Supported animals will have their production based on various factors\n- Cows will only produce milk when lactating, and their yield will rise and fall based on their previous pregnancy\n- Sheep will only produce wool in warm months\n\n<ins>**Death and Aging**</ins>\n- Animal aging is no longer limited to 5 years\n- Every animal type has an expected lifespan, and every animal has a chance to die of old age the older they get, but can live past their expected lifespan\n- Animals can die from health, random accidents and bad pregnancies\n\n<ins>**Enhanced Animal Dealer**</ins>\n- The animal dealer has been completely overhauled\n- Every supported country in the world now has several unique farms, which each produce up to 3 types of animals\n- Each farm will send some of their animals to the animal dealer every day\n- Every animal is unique and is no longer a template, and are generated based on the quality of the farm they come from\n- Every animal sent to the dealer will eventually disappear and will no longer be able to be bought, but will be replaced with new ones\n- Most animals are local to your country, but some will be imported from abroad\n- Animals at the dealer have a chance to be pregnant and will all have unique genetic qualities which will impact their price and usefulness\n\n# Screenshots\n\n![fsScreen_2025_05_07_17_28_58-min](https://github.com/user-attachments/assets/724f08c2-ce0a-48b7-9056-50a8622f5742)\n![screenshot4](https://github.com/user-attachments/assets/333ffa00-1041-457c-b406-2efe4127d5a4)\n![screenshot3](https://github.com/user-attachments/assets/3731d7e0-6bae-411d-957f-5b4496a1607f)\n![screenshot5](https://github.com/user-attachments/assets/cee43caf-9401-421d-8ada-745d4fa41c7a)\n\n# In Progress\n- Diseases\n- Message log tab for husbandries\n"
  },
  {
    "path": "animals/domesticated/bullRing.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"bullRing.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"3\" filename=\"$data/shaders/vehicleShader.xml\"/>\n    <File fileId=\"5\" filename=\"$data/shared/detailLibrary/flat_normal.png\"/>\n    <File fileId=\"6\" filename=\"$data/shared/detailLibrary/metallic/clear_diffuse.png\"/>\n    <File fileId=\"4\" filename=\"$data/shared/detailLibrary/metallic/clear_specular.png\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"chromeMat.001\" materialId=\"13\" diffuseColor=\"0.8 0.8 0.8 1\" specularColor=\"0.501961 1 0\" customShaderId=\"3\">\n      <Custommap name=\"detailSpecular\" fileId=\"4\"/>\n      <Custommap name=\"detailNormal\" fileId=\"5\"/>\n      <Custommap name=\"detailDiffuse\" fileId=\"6\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"bullRing.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"noseRing\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"8\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"13\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/bumId.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"bumId.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"1\" filename=\"bumId_diffuse.dds\"/>\n    <File fileId=\"3\" filename=\"font_normal_white.dds\"/>\n    <File fileId=\"4\" filename=\"offsetUV.xml\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"Material.001\" materialId=\"5\" specularColor=\"1 1 0\">\n      <Texture fileId=\"1\"/>\n    </Material>\n    <Material name=\"Material.001\" materialId=\"6\" specularColor=\"1 1 0\" customShaderId=\"4\">\n      <Texture fileId=\"3\"/>\n      <CustomParameter name=\"playScale\" value=\"0 0 64 1\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"bumId.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"bumId\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"13\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"5\">\n      <Shape name=\"bumId1\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"14\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n      <Shape name=\"bumId2\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"15\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n      <Shape name=\"bumId3\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"16\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n      <Shape name=\"bumId4\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"17\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n    </Shape>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/colourShader.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<CustomShader version=\"5\">\r\n    <Parameters>\r\n\t    <Parameter name=\"colorScale\"                  target=\"colorScale\"                  type=\"float3\" group=\"base\"                 defaultValue=\"1.0 1.0 1.0\"          minValue=\"0.0 0.0 0.0\"              maxValue=\"10.0 10.0 10.0\" template=\"brandColor\" description=\"multiplied with baseMap\"/> \r\n    </Parameters>\r\n\t<UvUsages/>\r\n\t<Textures/>\r\n\t<VertexAttributes/>\r\n\t<Variations/>\r\n    <LodLevel startDistance = \"0\">\r\n        <CodeInjections>\r\n            <CodeInjection position=\"OBJECT_PARAMETERS\">\r\n<![CDATA[\r\n    float3 colorScale;\r\n]]>\r\n            </CodeInjection>\r\n            <CodeInjection position=\"LIB_FUNCTION_FS\">\r\n<![CDATA[\r\n// Custom pixel functions\r\n#include \"$data/shaders/sharedFunctions_fs.gsl\"\r\n// Extra functions related to the vehicleShader only\r\n]]>\r\n            </CodeInjection>\r\n            <CodeInjection position=\"POST_DIFFUSE_COLOR_FS\">\r\n<![CDATA[\r\n\tfloat3 mDiffuseColor   = float3(1.0,1.0,1.0);\r\n    #if defined( ALBEDO_MAP )\r\n        mDiffuseColor = tex2DSample( baseMap, ALBEDO_MAP_SAMPLER, ALBEDO_MAP_TEXCOORDS).rgb;\r\n    #endif\r\n    diffuseColor = mDiffuseColor * object.colorScale.rgb;\r\n]]>\r\n            </CodeInjection>\r\n        </CodeInjections>\r\n    </LodLevel>\r\n</CustomShader>\r\n"
  },
  {
    "path": "animals/domesticated/cow/angus/cattleAngus.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"cattleAngus.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"10\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"8\" filename=\"$dataS/character/animals/domesticated/cow/angus/cattleAngus_normal.png\"/>\n    <File fileId=\"9\" filename=\"$dataS/character/animals/domesticated/cow/angus/cattleAngus_specular.png\"/>\n    <File fileId=\"12\" filename=\"$dataS/character/animals/domesticated/cow/cattle_alpha.png\"/>\n    <File fileId=\"4\" filename=\"../../bullRing.i3d\"/>\n    <File fileId=\"5\" filename=\"../../bumId.i3d\"/>\n    <File fileId=\"7\" filename=\"cattleAngus_diffuse.png\"/>\n    <File fileId=\"1\" filename=\"../../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../../monitor.i3d\"/>\n    <File fileId=\"6\" filename=\"../../sprayedMarker_cattle.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"cattleAngus_alpha_mat\" materialId=\"5\" customShaderId=\"10\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"7\"/>\n      <Normalmap fileId=\"8\"/>\n      <Glossmap fileId=\"9\"/>\n      <Custommap name=\"alphaMap\" fileId=\"12\"/>\n    </Material>\n    <Material name=\"cattleAngus_mat\" materialId=\"6\" customShaderId=\"10\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"7\"/>\n      <Normalmap fileId=\"8\"/>\n      <Glossmap fileId=\"9\"/>\n    </Material>\n    <Material name=\"lambert1\" materialId=\"7\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"cattleAngus.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"cattleSkeleton\" nodeId=\"18\">\n      <TransformGroup name=\"cow_root_skin_jnt\" nodeId=\"19\">\n        <TransformGroup name=\"cow_spine_skin_jnt_01\" translation=\"0 1.02616 -0.573747\" rotation=\"0 -90 0\" nodeId=\"20\">\n          <TransformGroup name=\"cow_spine_skin_jnt_02\" translation=\"0.683473 0 0\" nodeId=\"21\">\n            <TransformGroup name=\"cow_spine_skin_jnt_03\" translation=\"0.683473 0 0\" nodeId=\"22\">\n              <TransformGroup name=\"cow_neck_skin_jnt_01\" rotation=\"0 0 26.1791\" nodeId=\"23\">\n                <TransformGroup name=\"cow_neck_skin_jnt_02\" translation=\"0.256434 0 0\" nodeId=\"24\">\n                  <TransformGroup name=\"cow_neck_skin_jnt_03\" translation=\"0.256434 0 0\" nodeId=\"25\">\n                    <TransformGroup name=\"cow_head_skin_jnt\" rotation=\"26.1791 90 0\" nodeId=\"26\">\n                      <TransformGroup name=\"cow_jaw_skin_jnt\" translation=\"0 -0.011625 0.178343\" rotation=\"90 -29.728 -90\" nodeId=\"27\">\n                        <TransformGroup name=\"cow_tongue_skin_jnt_01\" translation=\"0.0916 -0.039354 0\" rotation=\"0 0 22.2807\" nodeId=\"28\">\n                          <TransformGroup name=\"cow_tongue_skin_jnt_02\" translation=\"0.074053 0 0\" rotation=\"0 0 -8.7422\" nodeId=\"29\">\n                            <TransformGroup name=\"cow_tongue_skin_jnt_03\" translation=\"0.06141 0 0\" nodeId=\"30\"/>\n                          </TransformGroup>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"cow_ear_L_skin_jnt_01\" translation=\"0.117854 0.17158 0.054487\" rotation=\"107.169 -6.59255 4.81709\" nodeId=\"31\">\n                        <TransformGroup name=\"cow_ear_L_skin_jnt_02\" translation=\"0.170107 0 0\" nodeId=\"32\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.00541848 0.0423796 0.0845187\" rotation=\"-104 20 56\" referenceId=\"1\" nodeId=\"65\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.000352248 0.010719 0.00379659\" rotation=\"-1.46783 10.0338 66.2193\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"97\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"cow_ear_R_skin_jnt_01\" translation=\"-0.117854 0.17158 0.054487\" rotation=\"72.8312 -6.59255 175.183\" nodeId=\"98\">\n                        <TransformGroup name=\"cow_ear_R_skin_jnt_02\" translation=\"0.170107 0 0\" nodeId=\"99\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.00143903 0.0474845 -0.071097\" rotation=\"-109 -164 -98\" referenceId=\"3\" nodeId=\"121\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"cow_eyeball_L_skin_jnt\" translation=\"0.118432 0.061226 0.208758\" rotation=\"28.1893 -27.1069 -25.1407\" nodeId=\"140\"/>\n                      <TransformGroup name=\"cow_eyelid_up_L_skin_jnt\" translation=\"0.141939 0.071295 0.228962\" rotation=\"0.807093 -38.3111 23.1874\" nodeId=\"141\"/>\n                      <TransformGroup name=\"cow_eyeball_R_skin_jnt\" translation=\"-0.118432 0.061226 0.208758\" rotation=\"151.811 -27.1069 -154.859\" nodeId=\"142\"/>\n                      <TransformGroup name=\"cow_eyelid_up_R_skin_jnt\" translation=\"-0.141939 0.071295 0.228962\" rotation=\"179.193 -38.3111 156.813\" nodeId=\"143\"/>\n                      <ReferenceNode name=\"noseRing\" translation=\"0.00472863 -0.203413 0.400121\" rotation=\"60.0824 0.746844 0.335526\" scale=\"0.5 0.5 0.5\" referenceId=\"4\" nodeId=\"147\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"cow_chestFold_skin_jnt\" translation=\"0.026447 -0.435627 0\" rotation=\"40.2869 90 0\" nodeId=\"148\"/>\n              <TransformGroup name=\"cow_shoulder_L_skin_jnt\" translation=\"-0.017633 -0.098415 -0.129735\" rotation=\"0 0 -127.541\" nodeId=\"149\">\n                <TransformGroup name=\"cow_elbow_L_skin_jnt\" translation=\"0.322253 0 0\" rotation=\"0 0 46.0394\" nodeId=\"150\">\n                  <TransformGroup name=\"cow_wrist_L_skin_jnt\" translation=\"0.33156 0 0\" rotation=\"0 0 -13.4631\" nodeId=\"151\">\n                    <TransformGroup name=\"cow_front_foot_L_skin_jnt\" translation=\"0.227897 0 0\" rotation=\"0 0 46.3652\" nodeId=\"152\">\n                      <TransformGroup name=\"cow_front_ball_L_skin_jnt\" translation=\"0.06837 0 0\" nodeId=\"153\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"cow_shoulder_R_skin_jnt\" translation=\"-0.017633 -0.098415 0.129735\" rotation=\"0 0 52.459\" nodeId=\"154\">\n                <TransformGroup name=\"cow_elbow_R_skin_jnt\" translation=\"-0.322253 0 0\" rotation=\"0 0 46.0394\" nodeId=\"155\">\n                  <TransformGroup name=\"cow_wrist_R_skin_jnt\" translation=\"-0.33156 0 0\" rotation=\"0 0 -13.4631\" nodeId=\"156\">\n                    <TransformGroup name=\"cow_front_foot_R_skin_jnt\" translation=\"-0.227897 0 0\" rotation=\"0 0 -133.635\" nodeId=\"157\">\n                      <TransformGroup name=\"cow_front_ball_R_skin_jnt\" translation=\"0.06837 0 0\" nodeId=\"158\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"cow_belly_skin_jnt\" translation=\"0 -0.559509 0\" nodeId=\"159\"/>\n          </TransformGroup>\n          <TransformGroup name=\"cow_tail_skin_jnt_01\" translation=\"-0.004176 0.394836 0\" rotation=\"0 0 -179.538\" nodeId=\"160\">\n            <TransformGroup name=\"cow_tail_skin_jnt_02\" translation=\"0.281166 0 0\" rotation=\"0 0 38.8366\" nodeId=\"161\">\n              <TransformGroup name=\"cow_tail_skin_jnt_03\" translation=\"0.270555 0 0\" rotation=\"0 0 6.33215\" nodeId=\"162\">\n                <TransformGroup name=\"cow_tail_skin_jnt_04\" translation=\"0.258534 0 0\" rotation=\"0 0 0.690976\" nodeId=\"163\">\n                  <TransformGroup name=\"cow_tail_skin_jnt_05\" translation=\"0.224173 0 0\" nodeId=\"164\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"cow_hip_L_skin_jnt\" translation=\"-0.045639 0.128049 -0.183961\" rotation=\"0 0 -77.2923\" nodeId=\"165\">\n            <TransformGroup name=\"cow_knee_L_skin_jnt\" translation=\"0.421534 0 0\" rotation=\"0 0 -44.9243\" nodeId=\"166\">\n              <TransformGroup name=\"cow_hind_foot_L_skin_jnt\" translation=\"0.330603 0 0\" rotation=\"0 0 36.7066\" nodeId=\"167\">\n                <TransformGroup name=\"cow_hind_ball_L_skin_jnt\" translation=\"0.339512 0 0\" rotation=\"-1.85733 1.36531 31.8171\" nodeId=\"168\">\n                  <TransformGroup name=\"cow_hind_toe_tip_L_skin_jnt\" translation=\"0.070318 0 0\" rotation=\"2.86032 0 0\" nodeId=\"169\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"cow_hip_R_skin_jnt\" translation=\"-0.045639 0.128049 0.183961\" rotation=\"0 0 102.708\" nodeId=\"170\">\n            <TransformGroup name=\"cow_knee_R_skin_jnt\" translation=\"-0.421534 0 0\" rotation=\"0 0 -44.9243\" nodeId=\"171\">\n              <TransformGroup name=\"cow_hind_foot_R_skin_jnt\" translation=\"-0.330603 0 0\" rotation=\"0 0 36.7066\" nodeId=\"172\">\n                <TransformGroup name=\"cow_hind_ball_R_skin_jnt\" translation=\"-0.339512 0 0\" rotation=\"1.85733 -1.36531 -148.183\" nodeId=\"173\">\n                  <TransformGroup name=\"cow_hind_toe_tip_R_skin_jnt\" translation=\"0.070318 0 0\" rotation=\"-2.86032 0 0\" nodeId=\"174\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"cow_udder_R_skin_jnt\" translation=\"0.06875 -0.583851 0.069258\" rotation=\"0 90 0\" nodeId=\"175\"/>\n          <TransformGroup name=\"cow_udder_L_skin_jnt\" translation=\"0.068751 -0.583851 -0.069258\" rotation=\"0 90 0\" nodeId=\"176\"/>\n          <ReferenceNode name=\"bumId\" translation=\"-0.218794 0.137984 0.0328862\" rotation=\"-178.66 -2.67887 166.878\" referenceId=\"5\" nodeId=\"185\"/>\n          <ReferenceNode name=\"sprayedMarker\" translation=\"0.307737 0.450656 -0.00109262\" rotation=\"4.45738 90 0\" scale=\"0.171093 0.171093 0.171093\" referenceId=\"6\" nodeId=\"193\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"cattleAngusLOD\" lodDistance=\"0 10 30\" clipDistance=\"150\" nodeId=\"194\">\n      <TransformGroup name=\"LOD0\" clipDistance=\"300\" nodeId=\"195\">\n        <Shape name=\"horns\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"196\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"26 31 32 98 99 140 141 142 143\" materialIds=\"6\"/>\n        <Shape name=\"body\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"197\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"19 20 165 166 167 168 169 170 171 172 173 174 21 159 22 148 23 24 25 26 31 32 98 99 140 142 141 143 27 28 29 30 149 150 151 152 153 154 155 156 157 158 160 161 162 163 164 176 175\" materialIds=\"6\"/>\n        <Shape name=\"alpha\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"198\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"31 32 98 99 140 142 141 143 26 27 25 161 162 163 164 28 29 30 24\" materialIds=\"5\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD1\" clipDistance=\"300\" nodeId=\"199\">\n        <Shape name=\"horns\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"200\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"26 31 32 98 99 140 141 142 143\" materialIds=\"6\"/>\n        <Shape name=\"body\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"201\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"159 148 31 32 98 99 150 155 140 142 141 143 153 158 152 157 26 168 173 167 172 169 174 165 170 27 166 171 23 24 25 19 149 154 20 21 22 160 161 162 163 164 28 29 30 176 175 151 156\" materialIds=\"6\"/>\n        <Shape name=\"alpha\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"202\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"161 162 163 164\" materialIds=\"5\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD2\" clipDistance=\"300\" nodeId=\"203\">\n        <Shape name=\"horns\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"204\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"26 31 32 98 99 140 141 142 143\" materialIds=\"6\"/>\n        <Shape name=\"body\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"205\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"159 148 31 32 98 99 150 155 140 142 141 143 153 158 152 157 26 168 173 167 172 169 174 165 170 27 166 171 23 24 25 19 149 154 20 21 22 160 161 162 163 164 28 29 30 176 175 151 156\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"cowProxy\" shapeId=\"9\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x10200000\" collisionFilterMask=\"0xfffffbff\" density=\"0.0001\" nodeId=\"206\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/cow/angus/cattleCalf.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"cattleCalf.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"4\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"1\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_diffuse.png\"/>\n    <File fileId=\"2\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_normal.png\"/>\n    <File fileId=\"3\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_specular.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/cow/cattle_alpha.png\"/>\n    <File fileId=\"7\" filename=\"../../earTags.i3d\"/>\n    <File fileId=\"9\" filename=\"../../earTagsRight.i3d\"/>\n    <File fileId=\"8\" filename=\"../../monitor.i3d\"/>\n    <File fileId=\"10\" filename=\"../../sprayedMarker_cattle.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"cattleCalf_mat\" materialId=\"5\" customShaderId=\"4\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"1\"/>\n      <Normalmap fileId=\"2\"/>\n      <Glossmap fileId=\"3\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n    </Material>\n    <Material name=\"cattleCalfAlpha_mat1\" materialId=\"6\" customShaderId=\"4\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"1\"/>\n      <Normalmap fileId=\"2\"/>\n      <Glossmap fileId=\"3\"/>\n      <Custommap name=\"alphaMap\" fileId=\"6\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n    </Material>\n    <Material name=\"lambert1\" materialId=\"7\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"cattleCalf.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"cattleCalf\" nodeId=\"26\">\n      <Shape name=\"calf\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"27\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"46 47 48 49 50 51 52 53 56 57 123 124 167 168 169 170 171 172 173 174 175 176 177 178 180 181 182 183 185 186 187 188 189 190 191 192 193 194 179\" materialIds=\"5\"/>\n      <Shape name=\"eyes\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"28\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"165 166\" materialIds=\"5\"/>\n      <Shape name=\"teeth\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"29\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"53\" materialIds=\"5\"/>\n      <Shape name=\"tongue\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"30\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"54 55 53\" materialIds=\"5\"/>\n      <TransformGroup name=\"hair\" nodeId=\"31\">\n        <Shape name=\"tail\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"32\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"181 182 183 184\" materialIds=\"6\"/>\n        <Shape name=\"tail_reverse\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"33\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"181 183 182 184\" materialIds=\"6\"/>\n        <Shape name=\"ears\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"34\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 57 123 56 124\" materialIds=\"6\"/>\n        <Shape name=\"ears_reverse\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"35\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"ears2\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"36\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"ears2_reverse\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"37\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"whiskers\" shapeId=\"11\" clipDistance=\"300\" nodeId=\"38\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"53 52\" materialIds=\"6\"/>\n        <Shape name=\"whiskers_reverse\" shapeId=\"12\" clipDistance=\"300\" nodeId=\"39\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 53\" materialIds=\"6\"/>\n        <Shape name=\"lash\" shapeId=\"13\" clipDistance=\"300\" nodeId=\"40\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 167 168\" materialIds=\"6\"/>\n        <Shape name=\"lash_reverse\" shapeId=\"14\" clipDistance=\"300\" nodeId=\"41\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 167 168\" materialIds=\"6\"/>\n        <Shape name=\"mainHair\" shapeId=\"15\" clipDistance=\"300\" nodeId=\"42\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 51\" materialIds=\"6\"/>\n        <Shape name=\"mainHair_reverse\" shapeId=\"16\" clipDistance=\"300\" nodeId=\"43\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"51 52\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"calfSkeleton\" nodeId=\"44\">\n      <TransformGroup name=\"calf_root_skin_jnt\" nodeId=\"45\">\n        <TransformGroup name=\"calf_spine_skin_jnt_01\" translation=\"0 0.799706 -0.37449\" rotation=\"0 -90 0\" nodeId=\"46\">\n          <TransformGroup name=\"calf_spine_skin_jnt_02\" translation=\"0.409428 0 0\" nodeId=\"47\">\n            <TransformGroup name=\"calf_spine_skin_jnt_03\" translation=\"0.409428 0 0\" nodeId=\"48\">\n              <TransformGroup name=\"calf_neck_skin_jnt_01\" translation=\"0.026728 -0.062515 0\" rotation=\"0 0 26.2987\" nodeId=\"49\">\n                <TransformGroup name=\"calf_neck_skin_jnt_02\" translation=\"0.182713 -0.003189 0\" rotation=\"-1e-06 0 -1.08254\" nodeId=\"50\">\n                  <TransformGroup name=\"calf_neck_skin_jnt_03\" translation=\"0.182736 0.000263 0\" rotation=\"0 0 1.08254\" nodeId=\"51\">\n                    <TransformGroup name=\"calf_head_skin_jnt\" rotation=\"41.4004 90 0\" nodeId=\"52\">\n                      <TransformGroup name=\"calf_jaw_skin_jnt\" translation=\"0 0.002489 0.10088\" rotation=\"90 -44.6541 -90\" nodeId=\"53\">\n                        <TransformGroup name=\"calf_tongue_skin_jnt_01\" translation=\"0.047346 -0.025854 0\" rotation=\"0 0 22.6571\" nodeId=\"54\">\n                          <TransformGroup name=\"calf_tongue_skin_jnt_02\" translation=\"0.081416 0 0\" nodeId=\"55\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_L_skin_jnt_01\" translation=\"0.089441 0.100203 -0.007355\" rotation=\"6.44066 2.46226 -80.5955\" nodeId=\"56\">\n                        <TransformGroup name=\"calf_ear_L_skin_jnt_02\" translation=\"0 0.124647 0\" rotation=\"0.036943 0 0\" nodeId=\"57\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0699839 0.000187986 0.0302259\" rotation=\"-116.579 67.8286 -22.6305\" scale=\"1 0.9 0.9\" referenceId=\"7\" nodeId=\"90\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"0.00358793 -0.0305141 0.0058119\" rotation=\"-1.02736 -73.0891 91.854\" scale=\"1 0.5 0.5\" referenceId=\"8\" nodeId=\"122\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_R_skin_jnt_01\" translation=\"-0.089441 0.100203 -0.007355\" rotation=\"173.559 2.46226 -99.4045\" nodeId=\"123\">\n                        <TransformGroup name=\"calf_ear_R_skin_jnt_02\" translation=\"0 0.124647 0\" rotation=\"-0.036943 0 0\" nodeId=\"124\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0699214 0.0172316 -0.0258092\" rotation=\"109.188 -74.8847 -10.718\" scale=\"1 0.9 0.9\" referenceId=\"9\" nodeId=\"146\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_eyeball_L_skin_jnt\" translation=\"0.075814 0.05739 0.11308\" rotation=\"24.0112 -29.1566 -11.1239\" nodeId=\"165\"/>\n                      <TransformGroup name=\"calf_eyeball_R_skin_jnt\" translation=\"-0.075814 0.05739 0.11308\" rotation=\"155.989 -29.1566 -168.876\" nodeId=\"166\"/>\n                      <TransformGroup name=\"calf_eyelid_up_L_skin_jnt\" translation=\"0.093574 0.067584 0.128555\" rotation=\"0.236387 -37.078 29.8551\" nodeId=\"167\"/>\n                      <TransformGroup name=\"calf_eyelid_up_R_skin_jnt\" translation=\"-0.093574 0.067584 0.128555\" rotation=\"178.477 -37.078 150.145\" nodeId=\"168\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_L_skin_jnt\" translation=\"0.042433 -0.019034 -0.108618\" rotation=\"0 0 -117.485\" nodeId=\"169\">\n                <TransformGroup name=\"calf_elbow_L_skin_jnt\" translation=\"0.258394 0 0\" rotation=\"0 0 36.8626\" nodeId=\"170\">\n                  <TransformGroup name=\"calf_wrist_L_skin_jnt\" translation=\"0.277234 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"171\">\n                    <TransformGroup name=\"calf_front_foot_L_skin_jnt\" translation=\"0.188997 0 0\" rotation=\"0 0 13.1416\" nodeId=\"172\">\n                      <TransformGroup name=\"calf_front_ball_L_skin_jnt\" translation=\"0.046149 0 0\" nodeId=\"173\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_R_skin_jnt\" translation=\"0.042433 -0.019034 0.108618\" rotation=\"0 0 62.5155\" nodeId=\"174\">\n                <TransformGroup name=\"calf_elbow_R_skin_jnt\" translation=\"-0.258394 0 0\" rotation=\"0 0 36.8626\" nodeId=\"175\">\n                  <TransformGroup name=\"calf_wrist_R_skin_jnt\" translation=\"-0.277234 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"176\">\n                    <TransformGroup name=\"calf_front_foot_R_skin_jnt\" translation=\"-0.188997 0 0\" rotation=\"0 0 -166.858\" nodeId=\"177\">\n                      <TransformGroup name=\"calf_front_ball_R_skin_jnt\" translation=\"0.046149 0 0\" nodeId=\"178\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"calf_belly_skin_jnt\" translation=\"0 -0.333799 0\" rotation=\"0 90 0\" nodeId=\"179\"/>\n          </TransformGroup>\n          <TransformGroup name=\"calf_tail_skin_jnt_01\" translation=\"-0.013093 0.203392 0\" rotation=\"-180 0 176.891\" nodeId=\"180\">\n            <TransformGroup name=\"calf_tail_skin_jnt_02\" translation=\"0.170868 0 0\" rotation=\"0 0 -38.5557\" nodeId=\"181\">\n              <TransformGroup name=\"calf_tail_skin_jnt_03\" translation=\"0.190862 0 0\" rotation=\"0 0 -9.0121\" nodeId=\"182\">\n                <TransformGroup name=\"calf_tail_skin_jnt_04\" translation=\"0.207204 0 0\" rotation=\"0 0 -0.954205\" nodeId=\"183\">\n                  <TransformGroup name=\"calf_tail_skin_jnt_05\" translation=\"0.181002 0 0\" nodeId=\"184\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_L_skin_jnt\" translation=\"-0.062567 0.07868 -0.115513\" rotation=\"0 0 -60.4957\" nodeId=\"185\">\n            <TransformGroup name=\"calf_knee_L_skin_jnt\" translation=\"0.252317 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"186\">\n              <TransformGroup name=\"calf_ankle_L_skin_jnt\" translation=\"0.334579 0 0\" rotation=\"0 0 31.5306\" nodeId=\"187\">\n                <TransformGroup name=\"calf_hind_foot_L_skin_jnt\" translation=\"0.271793 0 0\" rotation=\"0 0 1.16099\" nodeId=\"188\">\n                  <TransformGroup name=\"calf_hind_ball_L_skin_jnt\" translation=\"0.044208 0 0\" nodeId=\"189\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_R_skin_jnt\" translation=\"-0.062567 0.07868 0.115513\" rotation=\"0 0 119.504\" nodeId=\"190\">\n            <TransformGroup name=\"calf_knee_R_skin_jnt\" translation=\"-0.252317 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"191\">\n              <TransformGroup name=\"calf_ankle_R_skin_jnt\" translation=\"-0.334579 0 0\" rotation=\"0 0 31.5306\" nodeId=\"192\">\n                <TransformGroup name=\"calf_hind_foot_R_skin_jnt\" translation=\"-0.271793 0 0\" rotation=\"0 0 -178.839\" nodeId=\"193\">\n                  <TransformGroup name=\"calf_hind_ball_R_skin_jnt\" translation=\"0.044208 0 0\" nodeId=\"194\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <ReferenceNode name=\"sprayedMarker\" translation=\"0.113666 0.233602 0.017996\" rotation=\"93.1997 87.3871 94.3253\" scale=\"0.1 0.1 0.1\" referenceId=\"10\" nodeId=\"198\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"calfProxy\" shapeId=\"17\" kinematic=\"true\" collisionFilterGroup=\"0x10200000\" collisionFilterMask=\"0xfffffbff\" density=\"0.0001\" nodeId=\"199\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n  <UserAttributes>\n    <UserAttribute nodeId=\"46\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"47\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"48\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"49\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"50\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"51\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"52\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"53\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"54\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"55\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"56\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"57\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"123\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"124\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"165\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"166\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"167\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"168\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"169\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"170\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"171\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"172\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"173\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"174\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"175\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"176\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"177\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"178\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"179\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"180\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"181\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"182\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"183\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"184\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"185\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"186\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"187\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"188\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"189\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"190\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"191\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"192\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"193\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"194\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n  </UserAttributes>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/cow/angus/cattleCalfBaby.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"cattleCalfBaby.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"4\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"1\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_diffuse.png\"/>\n    <File fileId=\"2\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_normal.png\"/>\n    <File fileId=\"3\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_specular.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/cow/cattle_alpha.png\"/>\n    <File fileId=\"7\" filename=\"../../earTags.i3d\"/>\n    <File fileId=\"9\" filename=\"../../earTagsRight.i3d\"/>\n    <File fileId=\"8\" filename=\"../../monitor.i3d\"/>\n    <File fileId=\"10\" filename=\"../../sprayedMarker_cattle.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"cattleCalf_mat\" materialId=\"5\" customShaderId=\"4\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"1\"/>\n      <Normalmap fileId=\"2\"/>\n      <Glossmap fileId=\"3\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n    </Material>\n    <Material name=\"cattleCalfAlpha_mat1\" materialId=\"6\" customShaderId=\"4\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"1\"/>\n      <Normalmap fileId=\"2\"/>\n      <Glossmap fileId=\"3\"/>\n      <Custommap name=\"alphaMap\" fileId=\"6\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n    </Material>\n    <Material name=\"lambert1\" materialId=\"7\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"cattleCalfBaby.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"cattleCalf\" nodeId=\"26\">\n      <Shape name=\"calf\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"27\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"46 47 48 49 50 51 52 53 56 57 123 124 167 168 169 170 171 172 173 174 175 176 177 178 180 181 182 183 185 186 187 188 189 190 191 192 193 194 179\" materialIds=\"5\"/>\n      <Shape name=\"eyes\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"28\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"165 166\" materialIds=\"5\"/>\n      <Shape name=\"teeth\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"29\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"53\" materialIds=\"5\"/>\n      <Shape name=\"tongue\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"30\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"54 55 53\" materialIds=\"5\"/>\n      <TransformGroup name=\"hair\" nodeId=\"31\">\n        <Shape name=\"tail\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"32\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"181 182 183 184\" materialIds=\"6\"/>\n        <Shape name=\"tail_reverse\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"33\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"181 183 182 184\" materialIds=\"6\"/>\n        <Shape name=\"ears\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"34\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 57 123 56 124\" materialIds=\"6\"/>\n        <Shape name=\"ears_reverse\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"35\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"ears2\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"36\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"ears2_reverse\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"37\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"whiskers\" shapeId=\"11\" clipDistance=\"300\" nodeId=\"38\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"53 52\" materialIds=\"6\"/>\n        <Shape name=\"whiskers_reverse\" shapeId=\"12\" clipDistance=\"300\" nodeId=\"39\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 53\" materialIds=\"6\"/>\n        <Shape name=\"lash\" shapeId=\"13\" clipDistance=\"300\" nodeId=\"40\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 167 168\" materialIds=\"6\"/>\n        <Shape name=\"lash_reverse\" shapeId=\"14\" clipDistance=\"300\" nodeId=\"41\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 167 168\" materialIds=\"6\"/>\n        <Shape name=\"mainHair\" shapeId=\"15\" clipDistance=\"300\" nodeId=\"42\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 51\" materialIds=\"6\"/>\n        <Shape name=\"mainHair_reverse\" shapeId=\"16\" clipDistance=\"300\" nodeId=\"43\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"51 52\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"calfSkeleton\" nodeId=\"44\">\n      <TransformGroup name=\"calf_root_skin_jnt\" nodeId=\"45\">\n        <TransformGroup name=\"calf_spine_skin_jnt_01\" translation=\"0 0.533138 -0.24966\" rotation=\"0 -90 0\" nodeId=\"46\">\n          <TransformGroup name=\"calf_spine_skin_jnt_02\" translation=\"0.272952 0 0\" nodeId=\"47\">\n            <TransformGroup name=\"calf_spine_skin_jnt_03\" translation=\"0.272952 0 0\" nodeId=\"48\">\n              <TransformGroup name=\"calf_neck_skin_jnt_01\" translation=\"0.017819 -0.041677 0\" rotation=\"0 0 26.2987\" nodeId=\"49\">\n                <TransformGroup name=\"calf_neck_skin_jnt_02\" translation=\"0.121809 -0.002126 0\" rotation=\"-1e-06 0 -1.08254\" nodeId=\"50\">\n                  <TransformGroup name=\"calf_neck_skin_jnt_03\" translation=\"0.121824 0.000175 0\" rotation=\"0 0 1.08254\" nodeId=\"51\">\n                    <TransformGroup name=\"calf_head_skin_jnt\" rotation=\"41.4004 90 0\" nodeId=\"52\">\n                      <TransformGroup name=\"calf_jaw_skin_jnt\" translation=\"0 0.001659 0.067253\" rotation=\"90 -44.6541 -90\" nodeId=\"53\">\n                        <TransformGroup name=\"calf_tongue_skin_jnt_01\" translation=\"0.031564 -0.017236 0\" rotation=\"0 0 22.6571\" nodeId=\"54\">\n                          <TransformGroup name=\"calf_tongue_skin_jnt_02\" translation=\"0.054278 0 0\" nodeId=\"55\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_L_skin_jnt_01\" translation=\"0.059628 0.066802 -0.004903\" rotation=\"6.44066 2.46226 -80.5955\" nodeId=\"56\">\n                        <TransformGroup name=\"calf_ear_L_skin_jnt_02\" translation=\"0 0.083098 0\" rotation=\"0.036943 0 0\" nodeId=\"57\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0495584 0.0137399 0.0216363\" rotation=\"-112.843 67.5304 -24.213\" scale=\"1 0.9 0.9\" referenceId=\"7\" nodeId=\"90\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.00597761 -0.0200814 0.00805046\" rotation=\"-109.976 -71.2945 98.4223\" scale=\"1 0.5 0.5\" referenceId=\"8\" nodeId=\"122\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_R_skin_jnt_01\" translation=\"-0.059628 0.066802 -0.004903\" rotation=\"173.559 2.46226 -99.4045\" nodeId=\"123\">\n                        <TransformGroup name=\"calf_ear_R_skin_jnt_02\" translation=\"0 0.083098 0\" rotation=\"-0.036943 0 0\" nodeId=\"124\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0485312 0.0317954 -0.018361\" rotation=\"113.044 -72.4724 -6.39521\" scale=\"1 0.9 0.9\" referenceId=\"9\" nodeId=\"146\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_eyeball_L_skin_jnt\" translation=\"0.050543 0.03826 0.075387\" rotation=\"24.0112 -29.1566 -11.1239\" nodeId=\"165\"/>\n                      <TransformGroup name=\"calf_eyeball_R_skin_jnt\" translation=\"-0.050543 0.03826 0.075387\" rotation=\"155.989 -29.1566 -168.876\" nodeId=\"166\"/>\n                      <TransformGroup name=\"calf_eyelid_up_L_skin_jnt\" translation=\"0.062382 0.045056 0.085703\" rotation=\"0.236387 -37.078 29.8551\" nodeId=\"167\"/>\n                      <TransformGroup name=\"calf_eyelid_up_R_skin_jnt\" translation=\"-0.062382 0.045056 0.085703\" rotation=\"178.477 -37.078 150.145\" nodeId=\"168\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_L_skin_jnt\" translation=\"0.028288 -0.012689 -0.072412\" rotation=\"0 0 -117.485\" nodeId=\"169\">\n                <TransformGroup name=\"calf_elbow_L_skin_jnt\" translation=\"0.172263 0 0\" rotation=\"0 0 36.8626\" nodeId=\"170\">\n                  <TransformGroup name=\"calf_wrist_L_skin_jnt\" translation=\"0.184823 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"171\">\n                    <TransformGroup name=\"calf_front_foot_L_skin_jnt\" translation=\"0.125998 0 0\" rotation=\"0 0 13.1416\" nodeId=\"172\">\n                      <TransformGroup name=\"calf_front_ball_L_skin_jnt\" translation=\"0.030766 0 0\" nodeId=\"173\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_R_skin_jnt\" translation=\"0.028288 -0.012689 0.072412\" rotation=\"0 0 62.5155\" nodeId=\"174\">\n                <TransformGroup name=\"calf_elbow_R_skin_jnt\" translation=\"-0.172263 0 0\" rotation=\"0 0 36.8626\" nodeId=\"175\">\n                  <TransformGroup name=\"calf_wrist_R_skin_jnt\" translation=\"-0.184823 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"176\">\n                    <TransformGroup name=\"calf_front_foot_R_skin_jnt\" translation=\"-0.125998 0 0\" rotation=\"0 0 -166.858\" nodeId=\"177\">\n                      <TransformGroup name=\"calf_front_ball_R_skin_jnt\" translation=\"0.030766 0 0\" nodeId=\"178\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"calf_belly_skin_jnt\" translation=\"0 -0.222533 0\" rotation=\"0 90 0\" nodeId=\"179\"/>\n          </TransformGroup>\n          <TransformGroup name=\"calf_tail_skin_jnt_01\" translation=\"-0.008728 0.135595 0\" rotation=\"-180 0 176.891\" nodeId=\"180\">\n            <TransformGroup name=\"calf_tail_skin_jnt_02\" translation=\"0.113912 0 0\" rotation=\"0 0 -38.5557\" nodeId=\"181\">\n              <TransformGroup name=\"calf_tail_skin_jnt_03\" translation=\"0.127242 0 0\" rotation=\"0 0 -9.0121\" nodeId=\"182\">\n                <TransformGroup name=\"calf_tail_skin_jnt_04\" translation=\"0.138136 0 0\" rotation=\"0 0 -0.954205\" nodeId=\"183\">\n                  <TransformGroup name=\"calf_tail_skin_jnt_05\" translation=\"0.120668 0 0\" nodeId=\"184\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_L_skin_jnt\" translation=\"-0.041711 0.052453 -0.077008\" rotation=\"0 0 -60.4957\" nodeId=\"185\">\n            <TransformGroup name=\"calf_knee_L_skin_jnt\" translation=\"0.168212 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"186\">\n              <TransformGroup name=\"calf_ankle_L_skin_jnt\" translation=\"0.223052 0 0\" rotation=\"0 0 31.5306\" nodeId=\"187\">\n                <TransformGroup name=\"calf_hind_foot_L_skin_jnt\" translation=\"0.181196 0 0\" rotation=\"0 0 1.16099\" nodeId=\"188\">\n                  <TransformGroup name=\"calf_hind_ball_L_skin_jnt\" translation=\"0.029472 0 0\" nodeId=\"189\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_R_skin_jnt\" translation=\"-0.041711 0.052453 0.077008\" rotation=\"0 0 119.504\" nodeId=\"190\">\n            <TransformGroup name=\"calf_knee_R_skin_jnt\" translation=\"-0.168212 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"191\">\n              <TransformGroup name=\"calf_ankle_R_skin_jnt\" translation=\"-0.223052 0 0\" rotation=\"0 0 31.5306\" nodeId=\"192\">\n                <TransformGroup name=\"calf_hind_foot_R_skin_jnt\" translation=\"-0.181196 0 0\" rotation=\"0 0 -178.839\" nodeId=\"193\">\n                  <TransformGroup name=\"calf_hind_ball_R_skin_jnt\" translation=\"0.029472 0 0\" nodeId=\"194\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <ReferenceNode name=\"sprayedMarker\" translation=\"0.115132 0.154848 0.00146503\" rotation=\"1.3001 90 0\" scale=\"0.08 0.08 0.08\" referenceId=\"10\" nodeId=\"198\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"calfProxy\" shapeId=\"17\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x10200000\" collisionFilterMask=\"0xfffffbff\" density=\"0.0001\" nodeId=\"199\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n  <UserAttributes>\n    <UserAttribute nodeId=\"46\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"47\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"48\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"49\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"50\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"51\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"52\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"53\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"54\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"55\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"56\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"57\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"123\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"124\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"165\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"166\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"167\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"168\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"169\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"170\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"171\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"172\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"173\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"174\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"175\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"176\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"177\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"178\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"179\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"180\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"181\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"182\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"183\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"184\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"185\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"186\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"187\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"188\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"189\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"190\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"191\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"192\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"193\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"194\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n  </UserAttributes>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/cow/animals.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<animalHusbandry>\r\n\t<animals milkRobotSoundGroup=\"milkRobot\" milkRobotDoorSoundGroup=\"milkRobotDoor\">\r\n\t\t<animal visualAnimalIndex=\"1\" radius=\"1.8\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"holstein/cattleHolstein.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/holstein/cattleHolstein_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/adult/cattleAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0|0\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"2\" radius=\"1.8\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"holstein/cattleHolstein.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/holstein/cattleHolstein_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/adult/cattleAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0|0\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"3\" radius=\"1.8\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"angus/cattleAngus.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/angus/cattleAngus_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/adult/cattleAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0|0\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<node index=\"1|0|0\" visibility=\"false\"/>\r\n\t\t\t\t<node index=\"1|1|0\" visibility=\"false\"/>\r\n\t\t\t\t<node index=\"1|2|0\" visibility=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"4\" radius=\"1.8\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"angus/cattleAngus.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/angus/cattleLimousin_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/adult/cattleAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0|0\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"5\" name=\"BABY_SWISS_BROWN\" radius=\"0.7\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"0\" grazeMax=\"0\" chewMin=\"0\" chewMax=\"0\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"holstein/cattleCalfBabyHolstein.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfBabyHolstein_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfBabyAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"6\" radius=\"0.7\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"0\" grazeMax=\"0\" chewMin=\"0\" chewMax=\"0\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"holstein/cattleCalfBabyHolstein.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfBabyHolstein_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfBabyAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"7\" radius=\"0.7\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"0\" grazeMax=\"0\" chewMin=\"0\" chewMax=\"0\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"angus/cattleCalfBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfBabyAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"8\" radius=\"0.7\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"0\" grazeMax=\"0\" chewMin=\"0\" chewMax=\"0\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"angus/cattleCalfBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfBabyAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"9\" radius=\"1.1\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"holstein/cattleCalfHolstein.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfHolstein_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"10\" radius=\"1.1\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"holstein/cattleCalfHolstein.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfHolstein_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"11\" radius=\"1.1\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"angus/cattleCalf.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"12\" radius=\"1.1\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"angus/cattleCalf.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"13\" name=\"WATER_BUFFALO_BABY\" radius=\"0.7\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"0\" grazeMax=\"0\" chewMin=\"0\" chewMax=\"0\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"waterBuffalo/waterBuffaloCalfBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalfBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/waterBuffalo/animations/young/waterBuffaloCalfBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|2\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/waterBuffalo/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBuffaloBaby\" yellMinInterval=\"12000\" yellMaxInterval=\"24000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"14\" name=\"WATER_BUFFALO_KID\" radius=\"1.1\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"waterBuffalo/waterBuffaloCalf.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalf_posed.i3d\" animation=\"$dataS/character/animals/domesticated/waterBuffalo/animations/young/waterBuffaloCalfAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|2\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/waterBuffalo/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBuffalo\" yellMinInterval=\"12000\" yellMaxInterval=\"24000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"15\" name=\"WATER_BUFFALO\" radius=\"1.8\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"waterBuffalo/waterBuffalo.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffalo/waterBuffalo_posed.i3d\" animation=\"$dataS/character/animals/domesticated/waterBuffalo/animations/adult/waterBuffaloAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/waterBuffalo/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBuffalo\" yellMinInterval=\"12000\" yellMaxInterval=\"24000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"16\" radius=\"1.8\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"angus/cattleAngus.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/angus/cattleAngus_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/adult/cattleAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0|0\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<node index=\"1|0|0\" visibility=\"false\"/>\r\n\t\t\t\t<node index=\"1|1|0\" visibility=\"false\"/>\r\n\t\t\t\t<node index=\"1|2|0\" visibility=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"17\" radius=\"1.1\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"angus/cattleCalf.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"18\" radius=\"0.7\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"0\" grazeMax=\"0\" chewMin=\"0\" chewMax=\"0\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"angus/cattleCalfBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/animations/young/cattleCalfBabyAnimations.i3d\" skeletonIndex=\"1\" meshIndex=\"0\" proxyIndex=\"2\" shaderIndex=\"0|0\" headIndex=\"1>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"19\" name=\"HIGHLAND_CATTLE_BABY\" radius=\"0.7\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"0\" grazeMax=\"0\" chewMin=\"0\" chewMax=\"0\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfHighlandBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfHighlandBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/highland/animations/young/cattleCalfHighlandBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|2\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"false\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"1\" numTilesV=\"1\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/highland/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"12000\" yellMaxInterval=\"24000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"20\" name=\"HIGHLAND_CATTLE_KID\" radius=\"1.1\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfHighland.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfHighland_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/highland/animations/young/cattleCalfHighlandAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|2\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"false\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"1\" numTilesV=\"1\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/highland/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"12000\" yellMaxInterval=\"24000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal visualAnimalIndex=\"21\" name=\"HIGHLAND_CATTLE\" radius=\"1.8\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"true\" headOffset=\"0.8\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\" canBeCleaned=\"true\" interessDistance=\"10.0\">\r\n\t\t\t<statesTimers idleMin=\"6666\" idleMax=\"19998\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"26666\" grazeMin=\"26666\" grazeMax=\"39999\" chewMin=\"9000\" chewMax=\"18000\" eatMin=\"66665\" eatMax=\"93331\" wanderMin=\"5000\" wanderMax=\"10000\"/>\r\n\t\t\t<assets filename=\"$dataS/character/animals/domesticated/cow/highland/cattleHighland.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/cow/highland/cattleHighland_posed.i3d\" animation=\"$dataS/character/animals/domesticated/cow/highland/animations/adult/cattleHighlandAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\" headIndex=\"0>0|0|0|0|0|0|0|0\">\r\n\t\t\t\t<texture multi=\"false\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"1\" numTilesV=\"1\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/cow/highland/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"12000\" yellMaxInterval=\"24000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t</animals>\r\n\t<sound>\r\n\t\t<soundGroup name=\"walk\" volume=\"1\" indoorVolume=\"0.1\" range=\"12\" innerRange=\"0.4\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_06.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"eat\" volume=\"0.4\" indoorVolume=\"0.03\" range=\"10\" innerRange=\"1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowEatLoop_01.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"milkRobot\" volume=\"0.8\" indoorVolume=\"0.1\" range=\"40\" innerRange=\"8\">\r\n\t\t\t<sample filename=\"$data/sounds/tools/milkrobot/milkrobot_work_loop.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"milkRobotDoor\" volume=\"0.8\" indoorVolume=\"0.1\" range=\"40\" innerRange=\"8\">\r\n\t\t\t<sample filename=\"$data/sounds/tools/milkrobot/milkrobot_door_01.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"yell\" volume=\"1.7\" indoorVolume=\"0.3\" volumeRandMin=\"-0.1\" volumeRandMax=\"0.1\" range=\"50\" innerRange=\"1\" pitch=\"1\" pitchRandMin=\"-0.1\" pitchRandMax=\"0.1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_06.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_07.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_08.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_09.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_10.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_11.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_12.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_13.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowYell_14.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"yellBuffalo\" volume=\"2.2\" indoorVolume=\"0.3\" volumeRandMin=\"-0.1\" volumeRandMax=\"0.1\" range=\"50\" innerRange=\"1\" pitch=\"1\" pitchRandMin=\"-0.1\" pitchRandMax=\"0.1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_06.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"yellBuffaloBaby\" volume=\"1.7\" indoorVolume=\"0.3\" volumeRandMin=\"-0.1\" volumeRandMax=\"0.1\" range=\"50\" innerRange=\"1\" pitch=\"1.3\" pitchRandMin=\"-0.1\" pitchRandMax=\"0.1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/waterBuffalo/anmlBuffaloYell_06.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"yellBaby\" volume=\"1.3\" indoorVolume=\"0.3\" volumeRandMin=\"-0.1\" volumeRandMax=\"0.1\" range=\"50\" innerRange=\"1\" pitch=\"1\" pitchRandMin=\"-0.1\" pitchRandMax=\"0.1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowBabyYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowBabyYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowBabyYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowBabyYell_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowBabyYell_05.wav\"/>\r\n\t\t</soundGroup>\r\n\t</sound>\r\n</animalHusbandry>"
  },
  {
    "path": "animals/domesticated/cow/holstein/cattleCalfBabyHolstein.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"cattleCalfBabyHolstein.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"4\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"1\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfHolstein_diffuse.png\"/>\n    <File fileId=\"2\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_normal.png\"/>\n    <File fileId=\"3\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_specular.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/cow/cattle_alpha.png\"/>\n    <File fileId=\"7\" filename=\"../../earTags.i3d\"/>\n    <File fileId=\"9\" filename=\"../../earTagsRight.i3d\"/>\n    <File fileId=\"8\" filename=\"../../monitor.i3d\"/>\n    <File fileId=\"10\" filename=\"../../sprayedMarker_cattle.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"cattleCalf_mat\" materialId=\"5\" customShaderId=\"4\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"1\"/>\n      <Normalmap fileId=\"2\"/>\n      <Glossmap fileId=\"3\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n    </Material>\n    <Material name=\"cattleCalfAlpha_mat1\" materialId=\"6\" customShaderId=\"4\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"1\"/>\n      <Normalmap fileId=\"2\"/>\n      <Glossmap fileId=\"3\"/>\n      <Custommap name=\"alphaMap\" fileId=\"6\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n    </Material>\n    <Material name=\"lambert1\" materialId=\"7\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"cattleCalfBabyHolstein.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"cattleCalf\" nodeId=\"26\">\n      <Shape name=\"calf\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"27\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"46 47 48 49 50 51 52 53 56 57 123 124 167 168 169 170 171 172 173 174 175 176 177 178 180 181 182 183 185 186 187 188 189 190 191 192 193 194 179\" materialIds=\"5\"/>\n      <Shape name=\"eyes\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"28\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"165 166\" materialIds=\"5\"/>\n      <Shape name=\"teeth\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"29\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"53\" materialIds=\"5\"/>\n      <Shape name=\"tongue\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"30\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"54 55 53\" materialIds=\"5\"/>\n      <TransformGroup name=\"hair\" nodeId=\"31\">\n        <Shape name=\"tail\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"32\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"181 182 183 184\" materialIds=\"6\"/>\n        <Shape name=\"tail_reverse\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"33\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"181 183 182 184\" materialIds=\"6\"/>\n        <Shape name=\"ears\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"34\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 57 123 56 124\" materialIds=\"6\"/>\n        <Shape name=\"ears_reverse\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"35\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"ears2\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"36\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"ears2_reverse\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"37\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"whiskers\" shapeId=\"11\" clipDistance=\"300\" nodeId=\"38\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"53 52\" materialIds=\"6\"/>\n        <Shape name=\"whiskers_reverse\" shapeId=\"12\" clipDistance=\"300\" nodeId=\"39\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 53\" materialIds=\"6\"/>\n        <Shape name=\"lash\" shapeId=\"13\" clipDistance=\"300\" nodeId=\"40\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 167 168\" materialIds=\"6\"/>\n        <Shape name=\"lash_reverse\" shapeId=\"14\" clipDistance=\"300\" nodeId=\"41\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 167 168\" materialIds=\"6\"/>\n        <Shape name=\"mainHair\" shapeId=\"15\" clipDistance=\"300\" nodeId=\"42\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 51\" materialIds=\"6\"/>\n        <Shape name=\"mainHair_reverse\" shapeId=\"16\" clipDistance=\"300\" nodeId=\"43\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"51 52\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"calfSkeleton\" nodeId=\"44\">\n      <TransformGroup name=\"calf_root_skin_jnt\" nodeId=\"45\">\n        <TransformGroup name=\"calf_spine_skin_jnt_01\" translation=\"0 0.533138 -0.24966\" rotation=\"0 -90 0\" nodeId=\"46\">\n          <TransformGroup name=\"calf_spine_skin_jnt_02\" translation=\"0.272952 0 0\" nodeId=\"47\">\n            <TransformGroup name=\"calf_spine_skin_jnt_03\" translation=\"0.272952 0 0\" nodeId=\"48\">\n              <TransformGroup name=\"calf_neck_skin_jnt_01\" translation=\"0.017819 -0.041677 0\" rotation=\"0 0 26.2987\" nodeId=\"49\">\n                <TransformGroup name=\"calf_neck_skin_jnt_02\" translation=\"0.121809 -0.002126 0\" rotation=\"-1e-06 0 -1.08254\" nodeId=\"50\">\n                  <TransformGroup name=\"calf_neck_skin_jnt_03\" translation=\"0.121824 0.000175 0\" rotation=\"0 0 1.08254\" nodeId=\"51\">\n                    <TransformGroup name=\"calf_head_skin_jnt\" rotation=\"41.4004 90 0\" nodeId=\"52\">\n                      <TransformGroup name=\"calf_jaw_skin_jnt\" translation=\"0 0.001659 0.067253\" rotation=\"90 -44.6541 -90\" nodeId=\"53\">\n                        <TransformGroup name=\"calf_tongue_skin_jnt_01\" translation=\"0.031564 -0.017236 0\" rotation=\"0 0 22.6571\" nodeId=\"54\">\n                          <TransformGroup name=\"calf_tongue_skin_jnt_02\" translation=\"0.054278 0 0\" nodeId=\"55\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_L_skin_jnt_01\" translation=\"0.059628 0.066802 -0.004903\" rotation=\"6.44066 2.46226 -80.5955\" nodeId=\"56\">\n                        <TransformGroup name=\"calf_ear_L_skin_jnt_02\" translation=\"0 0.083098 0\" rotation=\"0.036943 0 0\" nodeId=\"57\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0495584 0.0137399 0.0216363\" rotation=\"-112.843 67.5304 -24.213\" scale=\"1 0.9 0.9\" referenceId=\"7\" nodeId=\"90\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.00367043 -0.0200787 0.00172581\" rotation=\"-31.3625 -77.9591 31.4447\" scale=\"1 0.5 0.5\" referenceId=\"8\" nodeId=\"122\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_R_skin_jnt_01\" translation=\"-0.059628 0.066802 -0.004903\" rotation=\"173.559 2.46226 -99.4045\" nodeId=\"123\">\n                        <TransformGroup name=\"calf_ear_R_skin_jnt_02\" translation=\"0 0.083098 0\" rotation=\"-0.036943 0 0\" nodeId=\"124\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0485312 0.0317954 -0.018361\" rotation=\"113.044 -72.4724 -6.39521\" scale=\"1 0.9 0.9\" referenceId=\"9\" nodeId=\"146\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_eyeball_L_skin_jnt\" translation=\"0.050543 0.03826 0.075387\" rotation=\"24.0112 -29.1566 -11.1239\" nodeId=\"165\"/>\n                      <TransformGroup name=\"calf_eyeball_R_skin_jnt\" translation=\"-0.050543 0.03826 0.075387\" rotation=\"155.989 -29.1566 -168.876\" nodeId=\"166\"/>\n                      <TransformGroup name=\"calf_eyelid_up_L_skin_jnt\" translation=\"0.062382 0.045056 0.085703\" rotation=\"0.236387 -37.078 29.8551\" nodeId=\"167\"/>\n                      <TransformGroup name=\"calf_eyelid_up_R_skin_jnt\" translation=\"-0.062382 0.045056 0.085703\" rotation=\"178.477 -37.078 150.145\" nodeId=\"168\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_L_skin_jnt\" translation=\"0.028288 -0.012689 -0.072412\" rotation=\"0 0 -117.485\" nodeId=\"169\">\n                <TransformGroup name=\"calf_elbow_L_skin_jnt\" translation=\"0.172263 0 0\" rotation=\"0 0 36.8626\" nodeId=\"170\">\n                  <TransformGroup name=\"calf_wrist_L_skin_jnt\" translation=\"0.184823 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"171\">\n                    <TransformGroup name=\"calf_front_foot_L_skin_jnt\" translation=\"0.125998 0 0\" rotation=\"0 0 13.1416\" nodeId=\"172\">\n                      <TransformGroup name=\"calf_front_ball_L_skin_jnt\" translation=\"0.030766 0 0\" nodeId=\"173\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_R_skin_jnt\" translation=\"0.028288 -0.012689 0.072412\" rotation=\"0 0 62.5155\" nodeId=\"174\">\n                <TransformGroup name=\"calf_elbow_R_skin_jnt\" translation=\"-0.172263 0 0\" rotation=\"0 0 36.8626\" nodeId=\"175\">\n                  <TransformGroup name=\"calf_wrist_R_skin_jnt\" translation=\"-0.184823 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"176\">\n                    <TransformGroup name=\"calf_front_foot_R_skin_jnt\" translation=\"-0.125998 0 0\" rotation=\"0 0 -166.858\" nodeId=\"177\">\n                      <TransformGroup name=\"calf_front_ball_R_skin_jnt\" translation=\"0.030766 0 0\" nodeId=\"178\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"calf_belly_skin_jnt\" translation=\"0 -0.222533 0\" rotation=\"0 90 0\" nodeId=\"179\"/>\n          </TransformGroup>\n          <TransformGroup name=\"calf_tail_skin_jnt_01\" translation=\"-0.008728 0.135595 0\" rotation=\"-180 0 176.891\" nodeId=\"180\">\n            <TransformGroup name=\"calf_tail_skin_jnt_02\" translation=\"0.113912 0 0\" rotation=\"0 0 -38.5557\" nodeId=\"181\">\n              <TransformGroup name=\"calf_tail_skin_jnt_03\" translation=\"0.127242 0 0\" rotation=\"0 0 -9.0121\" nodeId=\"182\">\n                <TransformGroup name=\"calf_tail_skin_jnt_04\" translation=\"0.138136 0 0\" rotation=\"0 0 -0.954205\" nodeId=\"183\">\n                  <TransformGroup name=\"calf_tail_skin_jnt_05\" translation=\"0.120668 0 0\" nodeId=\"184\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_L_skin_jnt\" translation=\"-0.041711 0.052453 -0.077008\" rotation=\"0 0 -60.4957\" nodeId=\"185\">\n            <TransformGroup name=\"calf_knee_L_skin_jnt\" translation=\"0.168212 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"186\">\n              <TransformGroup name=\"calf_ankle_L_skin_jnt\" translation=\"0.223052 0 0\" rotation=\"0 0 31.5306\" nodeId=\"187\">\n                <TransformGroup name=\"calf_hind_foot_L_skin_jnt\" translation=\"0.181196 0 0\" rotation=\"0 0 1.16099\" nodeId=\"188\">\n                  <TransformGroup name=\"calf_hind_ball_L_skin_jnt\" translation=\"0.029472 0 0\" nodeId=\"189\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_R_skin_jnt\" translation=\"-0.041711 0.052453 0.077008\" rotation=\"0 0 119.504\" nodeId=\"190\">\n            <TransformGroup name=\"calf_knee_R_skin_jnt\" translation=\"-0.168212 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"191\">\n              <TransformGroup name=\"calf_ankle_R_skin_jnt\" translation=\"-0.223052 0 0\" rotation=\"0 0 31.5306\" nodeId=\"192\">\n                <TransformGroup name=\"calf_hind_foot_R_skin_jnt\" translation=\"-0.181196 0 0\" rotation=\"0 0 -178.839\" nodeId=\"193\">\n                  <TransformGroup name=\"calf_hind_ball_R_skin_jnt\" translation=\"0.029472 0 0\" nodeId=\"194\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <ReferenceNode name=\"sprayedMarker\" translation=\"0.115132 0.154848 0.00146503\" rotation=\"1.3001 90 0\" scale=\"0.08 0.08 0.08\" referenceId=\"10\" nodeId=\"198\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"calfProxy\" shapeId=\"17\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x10200000\" collisionFilterMask=\"0xfffffbff\" density=\"0.0001\" nodeId=\"199\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/cow/holstein/cattleCalfHolstein.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"cattleCalfHolstein.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"4\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"1\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalfHolstein_diffuse.png\"/>\n    <File fileId=\"2\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_normal.png\"/>\n    <File fileId=\"3\" filename=\"$dataS/character/animals/domesticated/cow/calf/cattleCalf_specular.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/cow/cattle_alpha.png\"/>\n    <File fileId=\"7\" filename=\"../../earTags.i3d\"/>\n    <File fileId=\"9\" filename=\"../../earTagsRight.i3d\"/>\n    <File fileId=\"8\" filename=\"../../monitor.i3d\"/>\n    <File fileId=\"10\" filename=\"../../sprayedMarker_cattle.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"cattleCalf_mat\" materialId=\"5\" customShaderId=\"4\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"1\"/>\n      <Normalmap fileId=\"2\"/>\n      <Glossmap fileId=\"3\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n    </Material>\n    <Material name=\"cattleCalfAlpha_mat1\" materialId=\"6\" customShaderId=\"4\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"1\"/>\n      <Normalmap fileId=\"2\"/>\n      <Glossmap fileId=\"3\"/>\n      <Custommap name=\"alphaMap\" fileId=\"6\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n    </Material>\n    <Material name=\"lambert1\" materialId=\"7\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"cattleCalfHolstein.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"cattleCalf\" nodeId=\"26\">\n      <Shape name=\"calf\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"27\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"46 47 48 49 50 51 52 53 56 57 123 124 167 168 169 170 171 172 173 174 175 176 177 178 180 181 182 183 185 186 187 188 189 190 191 192 193 194 179\" materialIds=\"5\"/>\n      <Shape name=\"eyes\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"28\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"165 166\" materialIds=\"5\"/>\n      <Shape name=\"teeth\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"29\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"53\" materialIds=\"5\"/>\n      <Shape name=\"tongue\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"30\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"54 55 53\" materialIds=\"5\"/>\n      <TransformGroup name=\"hair\" nodeId=\"31\">\n        <Shape name=\"tail\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"32\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"181 182 183 184\" materialIds=\"6\"/>\n        <Shape name=\"tail_reverse\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"33\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"181 183 182 184\" materialIds=\"6\"/>\n        <Shape name=\"ears\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"34\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 57 123 56 124\" materialIds=\"6\"/>\n        <Shape name=\"ears_reverse\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"35\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"ears2\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"36\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"ears2_reverse\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"37\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"123 56 57 124\" materialIds=\"6\"/>\n        <Shape name=\"whiskers\" shapeId=\"11\" clipDistance=\"300\" nodeId=\"38\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"53 52\" materialIds=\"6\"/>\n        <Shape name=\"whiskers_reverse\" shapeId=\"12\" clipDistance=\"300\" nodeId=\"39\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 53\" materialIds=\"6\"/>\n        <Shape name=\"lash\" shapeId=\"13\" clipDistance=\"300\" nodeId=\"40\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 167 168\" materialIds=\"6\"/>\n        <Shape name=\"lash_reverse\" shapeId=\"14\" clipDistance=\"300\" nodeId=\"41\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 167 168\" materialIds=\"6\"/>\n        <Shape name=\"mainHair\" shapeId=\"15\" clipDistance=\"300\" nodeId=\"42\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"52 51\" materialIds=\"6\"/>\n        <Shape name=\"mainHair_reverse\" shapeId=\"16\" clipDistance=\"300\" nodeId=\"43\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"51 52\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"calfSkeleton\" nodeId=\"44\">\n      <TransformGroup name=\"calf_root_skin_jnt\" nodeId=\"45\">\n        <TransformGroup name=\"calf_spine_skin_jnt_01\" translation=\"0 0.799706 -0.37449\" rotation=\"0 -90 0\" nodeId=\"46\">\n          <TransformGroup name=\"calf_spine_skin_jnt_02\" translation=\"0.409428 0 0\" nodeId=\"47\">\n            <TransformGroup name=\"calf_spine_skin_jnt_03\" translation=\"0.409428 0 0\" nodeId=\"48\">\n              <TransformGroup name=\"calf_neck_skin_jnt_01\" translation=\"0.026728 -0.062515 0\" rotation=\"0 0 26.2987\" nodeId=\"49\">\n                <TransformGroup name=\"calf_neck_skin_jnt_02\" translation=\"0.182713 -0.003189 0\" rotation=\"-1e-06 0 -1.08254\" nodeId=\"50\">\n                  <TransformGroup name=\"calf_neck_skin_jnt_03\" translation=\"0.182736 0.000263 0\" rotation=\"0 0 1.08254\" nodeId=\"51\">\n                    <TransformGroup name=\"calf_head_skin_jnt\" rotation=\"41.4004 90 0\" nodeId=\"52\">\n                      <TransformGroup name=\"calf_jaw_skin_jnt\" translation=\"0 0.002489 0.10088\" rotation=\"90 -44.6541 -90\" nodeId=\"53\">\n                        <TransformGroup name=\"calf_tongue_skin_jnt_01\" translation=\"0.047346 -0.025854 0\" rotation=\"0 0 22.6571\" nodeId=\"54\">\n                          <TransformGroup name=\"calf_tongue_skin_jnt_02\" translation=\"0.081416 0 0\" nodeId=\"55\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_L_skin_jnt_01\" translation=\"0.089441 0.100203 -0.007355\" rotation=\"6.44066 2.46226 -80.5955\" nodeId=\"56\">\n                        <TransformGroup name=\"calf_ear_L_skin_jnt_02\" translation=\"0 0.124647 0\" rotation=\"0.036943 0 0\" nodeId=\"57\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0699839 0.000187986 0.0302259\" rotation=\"-116.579 67.8286 -22.6305\" scale=\"1 0.9 0.9\" referenceId=\"7\" nodeId=\"90\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.0025048 -0.0240809 0.00372801\" rotation=\"-128.324 -88.2186 125.249\" scale=\"1 0.5 0.5\" referenceId=\"8\" nodeId=\"122\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_R_skin_jnt_01\" translation=\"-0.089441 0.100203 -0.007355\" rotation=\"173.559 2.46226 -99.4045\" nodeId=\"123\">\n                        <TransformGroup name=\"calf_ear_R_skin_jnt_02\" translation=\"0 0.124647 0\" rotation=\"-0.036943 0 0\" nodeId=\"124\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0699214 0.0172316 -0.0258092\" rotation=\"109.188 -74.8847 -10.718\" scale=\"1 0.9 0.9\" referenceId=\"9\" nodeId=\"146\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_eyeball_L_skin_jnt\" translation=\"0.075814 0.05739 0.11308\" rotation=\"24.0112 -29.1566 -11.1239\" nodeId=\"165\"/>\n                      <TransformGroup name=\"calf_eyeball_R_skin_jnt\" translation=\"-0.075814 0.05739 0.11308\" rotation=\"155.989 -29.1566 -168.876\" nodeId=\"166\"/>\n                      <TransformGroup name=\"calf_eyelid_up_L_skin_jnt\" translation=\"0.093574 0.067584 0.128555\" rotation=\"0.236387 -37.078 29.8551\" nodeId=\"167\"/>\n                      <TransformGroup name=\"calf_eyelid_up_R_skin_jnt\" translation=\"-0.093574 0.067584 0.128555\" rotation=\"178.477 -37.078 150.145\" nodeId=\"168\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_L_skin_jnt\" translation=\"0.042433 -0.019034 -0.108618\" rotation=\"0 0 -117.485\" nodeId=\"169\">\n                <TransformGroup name=\"calf_elbow_L_skin_jnt\" translation=\"0.258394 0 0\" rotation=\"0 0 36.8626\" nodeId=\"170\">\n                  <TransformGroup name=\"calf_wrist_L_skin_jnt\" translation=\"0.277234 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"171\">\n                    <TransformGroup name=\"calf_front_foot_L_skin_jnt\" translation=\"0.188997 0 0\" rotation=\"0 0 13.1416\" nodeId=\"172\">\n                      <TransformGroup name=\"calf_front_ball_L_skin_jnt\" translation=\"0.046149 0 0\" nodeId=\"173\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_R_skin_jnt\" translation=\"0.042433 -0.019034 0.108618\" rotation=\"0 0 62.5155\" nodeId=\"174\">\n                <TransformGroup name=\"calf_elbow_R_skin_jnt\" translation=\"-0.258394 0 0\" rotation=\"0 0 36.8626\" nodeId=\"175\">\n                  <TransformGroup name=\"calf_wrist_R_skin_jnt\" translation=\"-0.277234 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"176\">\n                    <TransformGroup name=\"calf_front_foot_R_skin_jnt\" translation=\"-0.188997 0 0\" rotation=\"0 0 -166.858\" nodeId=\"177\">\n                      <TransformGroup name=\"calf_front_ball_R_skin_jnt\" translation=\"0.046149 0 0\" nodeId=\"178\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"calf_belly_skin_jnt\" translation=\"0 -0.333799 0\" rotation=\"0 90 0\" nodeId=\"179\"/>\n          </TransformGroup>\n          <TransformGroup name=\"calf_tail_skin_jnt_01\" translation=\"-0.013093 0.203392 0\" rotation=\"-180 0 176.891\" nodeId=\"180\">\n            <TransformGroup name=\"calf_tail_skin_jnt_02\" translation=\"0.170868 0 0\" rotation=\"0 0 -38.5557\" nodeId=\"181\">\n              <TransformGroup name=\"calf_tail_skin_jnt_03\" translation=\"0.190862 0 0\" rotation=\"0 0 -9.0121\" nodeId=\"182\">\n                <TransformGroup name=\"calf_tail_skin_jnt_04\" translation=\"0.207204 0 0\" rotation=\"0 0 -0.954205\" nodeId=\"183\">\n                  <TransformGroup name=\"calf_tail_skin_jnt_05\" translation=\"0.181002 0 0\" nodeId=\"184\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_L_skin_jnt\" translation=\"-0.062567 0.07868 -0.115513\" rotation=\"0 0 -60.4957\" nodeId=\"185\">\n            <TransformGroup name=\"calf_knee_L_skin_jnt\" translation=\"0.252317 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"186\">\n              <TransformGroup name=\"calf_ankle_L_skin_jnt\" translation=\"0.334579 0 0\" rotation=\"0 0 31.5306\" nodeId=\"187\">\n                <TransformGroup name=\"calf_hind_foot_L_skin_jnt\" translation=\"0.271793 0 0\" rotation=\"0 0 1.16099\" nodeId=\"188\">\n                  <TransformGroup name=\"calf_hind_ball_L_skin_jnt\" translation=\"0.044208 0 0\" nodeId=\"189\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_R_skin_jnt\" translation=\"-0.062567 0.07868 0.115513\" rotation=\"0 0 119.504\" nodeId=\"190\">\n            <TransformGroup name=\"calf_knee_R_skin_jnt\" translation=\"-0.252317 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"191\">\n              <TransformGroup name=\"calf_ankle_R_skin_jnt\" translation=\"-0.334579 0 0\" rotation=\"0 0 31.5306\" nodeId=\"192\">\n                <TransformGroup name=\"calf_hind_foot_R_skin_jnt\" translation=\"-0.271793 0 0\" rotation=\"0 0 -178.839\" nodeId=\"193\">\n                  <TransformGroup name=\"calf_hind_ball_R_skin_jnt\" translation=\"0.044208 0 0\" nodeId=\"194\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <ReferenceNode name=\"sprayedMarker\" translation=\"0.113666 0.233602 0.017996\" rotation=\"93.1997 87.3871 94.3253\" scale=\"0.1 0.1 0.1\" referenceId=\"10\" nodeId=\"198\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"calfProxy\" shapeId=\"17\" kinematic=\"true\" collisionFilterGroup=\"0x10200000\" collisionFilterMask=\"0xfffffbff\" density=\"0.0001\" nodeId=\"199\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/cow/holstein/cattleHolstein.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"cattleHolstein.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.8\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"10\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"12\" filename=\"$dataS/character/animals/domesticated/cow/cattle_alpha.png\"/>\n    <File fileId=\"7\" filename=\"$dataS/character/animals/domesticated/cow/holstein/cattleHolstein_diffuse.png\"/>\n    <File fileId=\"8\" filename=\"$dataS/character/animals/domesticated/cow/holstein/cattleHolstein_normal.png\"/>\n    <File fileId=\"9\" filename=\"$dataS/character/animals/domesticated/cow/holstein/cattleHolstein_specular.png\"/>\n    <File fileId=\"4\" filename=\"../../bullRing.i3d\"/>\n    <File fileId=\"5\" filename=\"../../bumId.i3d\"/>\n    <File fileId=\"1\" filename=\"../../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../../monitor.i3d\"/>\n    <File fileId=\"6\" filename=\"../../sprayedMarker_cattle.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"cattleHolstein_mat\" materialId=\"5\" customShaderId=\"10\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"7\"/>\n      <Normalmap fileId=\"8\"/>\n      <Glossmap fileId=\"9\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n    </Material>\n    <Material name=\"cattleHolstein_mat1\" materialId=\"6\" customShaderId=\"10\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"7\"/>\n      <Normalmap fileId=\"8\"/>\n      <Glossmap fileId=\"9\"/>\n      <Custommap name=\"alphaMap\" fileId=\"12\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n    </Material>\n    <Material name=\"lambert1\" materialId=\"7\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"cattleHolstein.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"cattleSkeleton\" nodeId=\"15\">\n      <TransformGroup name=\"cow_root_skin_jnt\" nodeId=\"16\">\n        <TransformGroup name=\"cow_spine_skin_jnt_01\" translation=\"0 1.02616 -0.573747\" rotation=\"0 -90 0\" nodeId=\"17\">\n          <TransformGroup name=\"cow_spine_skin_jnt_02\" translation=\"0.683473 0 0\" nodeId=\"18\">\n            <TransformGroup name=\"cow_spine_skin_jnt_03\" translation=\"0.683473 0 0\" nodeId=\"19\">\n              <TransformGroup name=\"cow_neck_skin_jnt_01\" rotation=\"0 0 26.1791\" nodeId=\"20\">\n                <TransformGroup name=\"cow_neck_skin_jnt_02\" translation=\"0.256434 0 0\" nodeId=\"21\">\n                  <TransformGroup name=\"cow_neck_skin_jnt_03\" translation=\"0.256434 0 0\" nodeId=\"22\">\n                    <TransformGroup name=\"cow_head_skin_jnt\" rotation=\"26.1791 90 0\" nodeId=\"23\">\n                      <TransformGroup name=\"cow_jaw_skin_jnt\" translation=\"0 -0.011625 0.178343\" rotation=\"90 -29.728 -90\" nodeId=\"24\">\n                        <TransformGroup name=\"cow_tongue_skin_jnt_01\" translation=\"0.0916 -0.039354 0\" rotation=\"0 0 22.2807\" nodeId=\"25\">\n                          <TransformGroup name=\"cow_tongue_skin_jnt_02\" translation=\"0.074053 0 0\" rotation=\"0 0 -8.7422\" nodeId=\"26\">\n                            <TransformGroup name=\"cow_tongue_skin_jnt_03\" translation=\"0.06141 0 0\" nodeId=\"27\"/>\n                          </TransformGroup>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"cow_ear_L_skin_jnt_01\" translation=\"0.117854 0.17158 0.054487\" rotation=\"107.169 -6.59255 4.81709\" nodeId=\"28\">\n                        <TransformGroup name=\"cow_ear_L_skin_jnt_02\" translation=\"0.170107 0 0\" nodeId=\"29\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.00541848 0.0423796 0.0845187\" rotation=\"-104 20 56\" scale=\"1 0.9 0.9\" referenceId=\"1\" nodeId=\"33\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.0277775 0.0127195 0.00303031\" rotation=\"-2.77785e-06 -2.70115 76.2512\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"39\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"cow_ear_R_skin_jnt_01\" translation=\"-0.117854 0.17158 0.054487\" rotation=\"72.8312 -6.59255 175.183\" nodeId=\"40\">\n                        <TransformGroup name=\"cow_ear_R_skin_jnt_02\" translation=\"0.170107 0 0\" nodeId=\"41\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.00143903 0.0474845 -0.071097\" rotation=\"-109 -164 -98\" scale=\"1 0.9 0.9\" referenceId=\"3\" nodeId=\"44\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"cow_eyeball_L_skin_jnt\" translation=\"0.118432 0.061226 0.208758\" rotation=\"28.1893 -27.1069 -25.1407\" nodeId=\"47\"/>\n                      <TransformGroup name=\"cow_eyelid_up_L_skin_jnt\" translation=\"0.141939 0.071295 0.228962\" rotation=\"0.807093 -38.3111 23.1874\" nodeId=\"48\"/>\n                      <TransformGroup name=\"cow_eyeball_R_skin_jnt\" translation=\"-0.118432 0.061226 0.208758\" rotation=\"151.811 -27.1069 -154.859\" nodeId=\"49\"/>\n                      <TransformGroup name=\"cow_eyelid_up_R_skin_jnt\" translation=\"-0.141939 0.071295 0.228962\" rotation=\"179.193 -38.3111 156.813\" nodeId=\"50\"/>\n                      <ReferenceNode name=\"noseRing\" translation=\"0.00298175 -0.203423 0.400144\" rotation=\"60.0824 0.746844 0.335526\" scale=\"0.5 0.5 0.5\" referenceId=\"4\" nodeId=\"54\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"cow_chestFold_skin_jnt\" translation=\"0.026447 -0.435627 0\" rotation=\"40.2869 90 0\" nodeId=\"55\"/>\n              <TransformGroup name=\"cow_shoulder_L_skin_jnt\" translation=\"-0.017633 -0.098415 -0.129735\" rotation=\"0 0 -127.541\" nodeId=\"56\">\n                <TransformGroup name=\"cow_elbow_L_skin_jnt\" translation=\"0.322253 0 0\" rotation=\"0 0 46.0394\" nodeId=\"57\">\n                  <TransformGroup name=\"cow_wrist_L_skin_jnt\" translation=\"0.33156 0 0\" rotation=\"0 0 -13.4631\" nodeId=\"58\">\n                    <TransformGroup name=\"cow_front_foot_L_skin_jnt\" translation=\"0.227897 0 0\" rotation=\"0 0 46.3652\" nodeId=\"59\">\n                      <TransformGroup name=\"cow_front_ball_L_skin_jnt\" translation=\"0.06837 0 0\" nodeId=\"60\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"cow_shoulder_R_skin_jnt\" translation=\"-0.017633 -0.098415 0.129735\" rotation=\"0 0 52.459\" nodeId=\"61\">\n                <TransformGroup name=\"cow_elbow_R_skin_jnt\" translation=\"-0.322253 0 0\" rotation=\"0 0 46.0394\" nodeId=\"62\">\n                  <TransformGroup name=\"cow_wrist_R_skin_jnt\" translation=\"-0.33156 0 0\" rotation=\"0 0 -13.4631\" nodeId=\"63\">\n                    <TransformGroup name=\"cow_front_foot_R_skin_jnt\" translation=\"-0.227897 0 0\" rotation=\"0 0 -133.635\" nodeId=\"64\">\n                      <TransformGroup name=\"cow_front_ball_R_skin_jnt\" translation=\"0.06837 0 0\" nodeId=\"65\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"cow_belly_skin_jnt\" translation=\"0 -0.559509 0\" nodeId=\"66\"/>\n          </TransformGroup>\n          <TransformGroup name=\"cow_tail_skin_jnt_01\" translation=\"-0.004176 0.394836 0\" rotation=\"0 0 -179.538\" nodeId=\"67\">\n            <TransformGroup name=\"cow_tail_skin_jnt_02\" translation=\"0.281166 0 0\" rotation=\"0 0 38.8366\" nodeId=\"68\">\n              <TransformGroup name=\"cow_tail_skin_jnt_03\" translation=\"0.270555 0 0\" rotation=\"0 0 6.33215\" nodeId=\"69\">\n                <TransformGroup name=\"cow_tail_skin_jnt_04\" translation=\"0.258534 0 0\" rotation=\"0 0 0.690976\" nodeId=\"70\">\n                  <TransformGroup name=\"cow_tail_skin_jnt_05\" translation=\"0.224173 0 0\" nodeId=\"71\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"cow_hip_L_skin_jnt\" translation=\"-0.045639 0.128049 -0.183961\" rotation=\"0 0 -77.2923\" nodeId=\"72\">\n            <TransformGroup name=\"cow_knee_L_skin_jnt\" translation=\"0.421534 0 0\" rotation=\"0 0 -44.9243\" nodeId=\"73\">\n              <TransformGroup name=\"cow_hind_foot_L_skin_jnt\" translation=\"0.330603 0 0\" rotation=\"0 0 36.7066\" nodeId=\"74\">\n                <TransformGroup name=\"cow_hind_ball_L_skin_jnt\" translation=\"0.339512 0 0\" rotation=\"-1.85733 1.36531 31.8171\" nodeId=\"75\">\n                  <TransformGroup name=\"cow_hind_toe_tip_L_skin_jnt\" translation=\"0.070318 0 0\" rotation=\"2.86032 0 0\" nodeId=\"76\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"cow_hip_R_skin_jnt\" translation=\"-0.045639 0.128049 0.183961\" rotation=\"0 0 102.708\" nodeId=\"77\">\n            <TransformGroup name=\"cow_knee_R_skin_jnt\" translation=\"-0.421534 0 0\" rotation=\"0 0 -44.9243\" nodeId=\"78\">\n              <TransformGroup name=\"cow_hind_foot_R_skin_jnt\" translation=\"-0.330603 0 0\" rotation=\"0 0 36.7066\" nodeId=\"79\">\n                <TransformGroup name=\"cow_hind_ball_R_skin_jnt\" translation=\"-0.339512 0 0\" rotation=\"1.85733 -1.36531 -148.183\" nodeId=\"80\">\n                  <TransformGroup name=\"cow_hind_toe_tip_R_skin_jnt\" translation=\"0.070318 0 0\" rotation=\"-2.86032 0 0\" nodeId=\"81\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"cow_udder_R_skin_jnt\" translation=\"0.06875 -0.583851 0.069258\" rotation=\"0 90 0\" nodeId=\"82\"/>\n          <TransformGroup name=\"cow_udder_L_skin_jnt\" translation=\"0.068751 -0.583851 -0.069258\" rotation=\"0 90 0\" nodeId=\"83\"/>\n          <ReferenceNode name=\"bumId\" translation=\"-0.207106 0.0704122 0.0423419\" rotation=\"-179.669 -3.87791 -177.846\" referenceId=\"5\" nodeId=\"92\"/>\n          <ReferenceNode name=\"sprayedMarker\" translation=\"0.173698 0.457282 -0.00109261\" rotation=\"-0 90 0\" scale=\"0.171093 0.171093 0.171093\" referenceId=\"6\" nodeId=\"100\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"cattleHolstein\" rotation=\"3e-06 0 0\" lodDistance=\"0 10 30\" clipDistance=\"130\" nodeId=\"101\">\n      <TransformGroup name=\"LOD0\" nodeId=\"102\">\n        <Shape name=\"body\" rotation=\"-3e-06 0 0\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"103\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"16 17 18 19 20 21 22 23 24 25 26 27 28 29 40 41 47 48 49 50 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83\" materialIds=\"5\"/>\n        <Shape name=\"alpha\" rotation=\"-3e-06 0 0\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"104\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 29 40 41 47 48 49 50 68 69 70 71\" materialIds=\"6\"/>\n        <Shape name=\"alpha_reverse\" rotation=\"-3e-06 0 0\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"105\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 29 40 41 47 48 49 50 68 69 70 71\" materialIds=\"6\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD1\" nodeId=\"106\">\n        <Shape name=\"body\" rotation=\"-3e-06 0 0\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"107\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"16 17 18 19 20 21 22 23 24 25 26 27 28 29 40 41 47 48 49 50 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83\" materialIds=\"5\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD2\" nodeId=\"108\">\n        <Shape name=\"body\" rotation=\"-3e-06 0 0\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"109\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"66 55 28 29 40 41 57 62 47 49 48 50 60 65 59 64 23 75 80 74 79 76 81 72 77 24 73 78 20 21 22 16 56 61 17 18 19 67 68 69 70 71 25 26 27 83 82 58 63\" materialIds=\"5\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"cowProxy\" shapeId=\"6\" kinematic=\"true\" collisionFilterGroup=\"0x10200000\" collisionFilterMask=\"0xfffffbff\" density=\"0.0001\" nodeId=\"110\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/cow/waterBuffalo/waterBuffalo.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"waterBuffalo.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"10\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"13\" filename=\"$dataS/character/animals/domesticated/cow/cattle_alpha.png\"/>\n    <File fileId=\"12\" filename=\"$dataS/character/animals/domesticated/cow/cattle_alphanormal.png\"/>\n    <File fileId=\"14\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffalo/waterBuffaloHorns_diffuse.png\"/>\n    <File fileId=\"15\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffalo/waterBuffaloHorns_normal.png\"/>\n    <File fileId=\"16\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffalo/waterBuffaloHorns_specular.png\"/>\n    <File fileId=\"7\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffalo/waterBuffalo_diffuse.png\"/>\n    <File fileId=\"8\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffalo/waterBuffalo_normal.png\"/>\n    <File fileId=\"9\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffalo/waterBuffalo_specular.png\"/>\n    <File fileId=\"4\" filename=\"../../bullRing.i3d\"/>\n    <File fileId=\"5\" filename=\"../../bumId.i3d\"/>\n    <File fileId=\"1\" filename=\"../../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../../monitor.i3d\"/>\n    <File fileId=\"6\" filename=\"../../sprayedMarker_cattle.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"lambert1\" materialId=\"5\">\n      <Texture fileId=\"7\"/>\n    </Material>\n    <Material name=\"waterBuffalo_mat\" materialId=\"6\" customShaderId=\"10\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV_normalMapSecondUV\">\n      <Texture fileId=\"7\"/>\n      <Normalmap fileId=\"12\"/>\n      <Glossmap fileId=\"9\"/>\n      <Custommap name=\"alphaMap\" fileId=\"13\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"waterBuffalo_mat1\" materialId=\"7\" customShaderId=\"10\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"7\"/>\n      <Normalmap fileId=\"8\"/>\n      <Glossmap fileId=\"9\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n    </Material>\n    <Material name=\"waterBuffaloHorns_mat\" materialId=\"8\">\n      <Texture fileId=\"14\"/>\n      <Normalmap fileId=\"15\"/>\n      <Glossmap fileId=\"16\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"waterBuffalo.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"cowSkeleton\" nodeId=\"35\">\n      <TransformGroup name=\"cow_root_skin_jnt\" nodeId=\"36\">\n        <TransformGroup name=\"cow_spine_skin_jnt_01\" translation=\"0 1.02613 -0.573734\" rotation=\"0 -90 0\" nodeId=\"37\">\n          <TransformGroup name=\"cow_spine_skin_jnt_02\" translation=\"0.683457 0 0\" nodeId=\"38\">\n            <TransformGroup name=\"cow_spine_skin_jnt_03\" translation=\"0.683457 0 0\" nodeId=\"39\">\n              <TransformGroup name=\"cow_neck_skin_jnt_01\" rotation=\"0 0 26.1791\" nodeId=\"40\">\n                <TransformGroup name=\"cow_neck_skin_jnt_02\" translation=\"0.256429 0 0\" nodeId=\"41\">\n                  <TransformGroup name=\"cow_neck_skin_jnt_03\" translation=\"0.256429 0 0\" nodeId=\"42\">\n                    <TransformGroup name=\"cow_head_skin_jnt\" rotation=\"26.1791 90 0\" nodeId=\"43\">\n                      <TransformGroup name=\"cow_jaw_skin_jnt\" translation=\"0 0.016159 0.124449\" rotation=\"90 -35.2628 -90\" nodeId=\"44\">\n                        <TransformGroup name=\"cow_tongue_skin_jnt_01\" translation=\"0.144284 -0.016874 0\" rotation=\"0 0 22.4777\" nodeId=\"45\">\n                          <TransformGroup name=\"cow_tongue_skin_jnt_02\" translation=\"0.078294 0 0\" rotation=\"0 0 -8.7422\" nodeId=\"46\">\n                            <TransformGroup name=\"cow_tongue_skin_jnt_03\" translation=\"0.064927 0 0\" nodeId=\"47\"/>\n                          </TransformGroup>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"cow_ear_L_skin_jnt_01\" translation=\"0.134258 0.079987 0.039221\" rotation=\"121.222 -3.84735 -13.877\" nodeId=\"48\">\n                        <TransformGroup name=\"cow_ear_L_skin_jnt_02\" translation=\"0.163595 0 0\" rotation=\"0 0 4.60916\" nodeId=\"49\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0475305 0.0250245 0.0746816\" rotation=\"-104 20 56\" scale=\"1 0.9 0.9\" referenceId=\"1\" nodeId=\"82\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"0.0210092 0.012105 -0.00179543\" rotation=\"-5.78229 16.7205 69.8661\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"114\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"cow_ear_R_skin_jnt_01\" translation=\"-0.134258 0.079987 0.039221\" rotation=\"58.7777 -3.84735 -166.123\" nodeId=\"115\">\n                        <TransformGroup name=\"cow_ear_R_skin_jnt_02\" translation=\"0.163595 0 0\" rotation=\"0 0 4.60916\" nodeId=\"116\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0626288 0.0299716 -0.0621549\" rotation=\"-109 -164 -98\" scale=\"1 0.9 0.9\" referenceId=\"3\" nodeId=\"138\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"cow_eyeball_L_skin_jnt\" translation=\"0.118429 0.060655 0.208753\" rotation=\"34.3652 -27.737 -38.7609\" nodeId=\"157\"/>\n                      <TransformGroup name=\"cow_eyeball_R_skin_jnt\" translation=\"-0.118429 0.060655 0.208753\" rotation=\"145.635 -27.737 -141.239\" nodeId=\"158\"/>\n                      <TransformGroup name=\"cow_upper_lid_L_skin_jnt\" translation=\"0.141856 0.062183 0.230108\" rotation=\"9.56099 -42.2904 3.73283\" nodeId=\"159\"/>\n                      <TransformGroup name=\"cow_upper_lid_R_skin_jnt\" translation=\"-0.141856 0.062183 0.230108\" rotation=\"171.531 -42.2904 176.267\" nodeId=\"160\"/>\n                      <ReferenceNode name=\"noseRing\" translation=\"0.00541614 -0.203746 0.452712\" rotation=\"60.0824 0.746844 0.335526\" scale=\"0.5 0.5 0.5\" referenceId=\"4\" nodeId=\"164\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"cow_shoulder_L_skin_jnt\" translation=\"-0.017633 -0.098413 -0.129732\" rotation=\"0 0 -127.541\" nodeId=\"165\">\n                <TransformGroup name=\"cow_elbow_L_skin_jnt\" translation=\"0.322245 0 0\" rotation=\"0 0 46.0394\" nodeId=\"166\">\n                  <TransformGroup name=\"cow_front_foot_L_skin_jnt\" translation=\"0.331552 0 0\" rotation=\"0 0 -13.4631\" nodeId=\"167\">\n                    <TransformGroup name=\"cow_front_ball_L_skin_jnt\" translation=\"0.227892 0 0\" rotation=\"0 0 46.3652\" nodeId=\"168\">\n                      <TransformGroup name=\"cow_front_toe_tip_L_skin_jnt\" translation=\"0.068369 0 0\" nodeId=\"169\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"cow_shoulder_R_skin_jnt\" translation=\"-0.017633 -0.098413 0.129732\" rotation=\"0 0 52.459\" nodeId=\"170\">\n                <TransformGroup name=\"cow_elbow_R_skin_jnt\" translation=\"-0.322245 0 0\" rotation=\"0 0 46.0394\" nodeId=\"171\">\n                  <TransformGroup name=\"cow_front_foot_R_skin_jnt\" translation=\"-0.331552 0 0\" rotation=\"0 0 -13.4631\" nodeId=\"172\">\n                    <TransformGroup name=\"cow_front_ball_R_skin_jnt\" translation=\"-0.227892 0 0\" rotation=\"0 0 -133.635\" nodeId=\"173\">\n                      <TransformGroup name=\"cow_front_toe_tip_R_skin_jnt\" translation=\"0.068369 0 0\" nodeId=\"174\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"cow_chestFold_skin_jnt\" translation=\"0.026465 -0.435603 0\" rotation=\"40.2869 90 0\" nodeId=\"175\"/>\n            </TransformGroup>\n            <TransformGroup name=\"cow_belly_skin_jnt\" translation=\"3e-06 -0.559485 0\" nodeId=\"176\"/>\n          </TransformGroup>\n          <TransformGroup name=\"cow_tail_skin_jnt_01\" translation=\"-0.004176 0.394827 0\" rotation=\"0 0 -179.538\" nodeId=\"177\">\n            <TransformGroup name=\"cow_tail_skin_jnt_02\" translation=\"0.281159 0 0\" rotation=\"0 0 39.5903\" nodeId=\"178\">\n              <TransformGroup name=\"cow_tail_skin_jnt_03\" translation=\"0.28273 0 0\" rotation=\"0 0 6.37845\" nodeId=\"179\">\n                <TransformGroup name=\"cow_tail_skin_jnt_04\" translation=\"0.315211 0 0\" rotation=\"0 0 -1.09823\" nodeId=\"180\">\n                  <TransformGroup name=\"cow_tail_skin_jnt_05\" translation=\"0.243736 0 0\" nodeId=\"181\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"cow_hip_L_skin_jnt\" translation=\"-0.045638 0.128046 -0.183956\" rotation=\"0 0 -77.2923\" nodeId=\"182\">\n            <TransformGroup name=\"cow_knee_L_skin_jnt\" translation=\"0.421524 0 0\" rotation=\"0 0 -44.9243\" nodeId=\"183\">\n              <TransformGroup name=\"cow_hind_foot_L_skin_jnt\" translation=\"0.330595 0 0\" rotation=\"0 0 36.7066\" nodeId=\"184\">\n                <TransformGroup name=\"cow_hind_ball_L_skin_jnt\" translation=\"0.339504 0 0\" rotation=\"-1.85733 1.36531 31.8171\" nodeId=\"185\">\n                  <TransformGroup name=\"cow_hind_toe_tip_L_skin_jnt\" translation=\"0.070316 0 0\" rotation=\"2.86032 0 0\" nodeId=\"186\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"cow_hip_R_skin_jnt\" translation=\"-0.045638 0.128046 0.183956\" rotation=\"0 0 102.708\" nodeId=\"187\">\n            <TransformGroup name=\"cow_knee_R_skin_jnt\" translation=\"-0.421524 0 0\" rotation=\"0 0 -44.9243\" nodeId=\"188\">\n              <TransformGroup name=\"cow_hind_foot_R_skin_jnt\" translation=\"-0.330595 0 0\" rotation=\"0 0 36.7066\" nodeId=\"189\">\n                <TransformGroup name=\"cow_hind_ball_R_skin_jnt\" translation=\"-0.339504 0 0\" rotation=\"1.85733 -1.36531 -148.183\" nodeId=\"190\">\n                  <TransformGroup name=\"cow_hind_toe_tip_R_skin_jnt\" translation=\"0.070316 0 0\" rotation=\"-2.86032 0 0\" nodeId=\"191\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"cow_udder_L_skin_jnt\" translation=\"0.129329 -0.471939 -0.069258\" rotation=\"0 90 0\" nodeId=\"192\"/>\n          <TransformGroup name=\"cow_udder_R_skin_jnt\" translation=\"0.129329 -0.471939 0.069258\" rotation=\"0 90 0\" nodeId=\"193\"/>\n          <ReferenceNode name=\"bumId\" translation=\"-0.226568 0.0696802 0.0436621\" rotation=\"-179.593 -3.87073 -178.963\" referenceId=\"5\" nodeId=\"202\"/>\n          <ReferenceNode name=\"sprayedMarker\" translation=\"0.194299 0.468937 -0.00109261\" rotation=\"-0 90 0\" scale=\"0.171093 0.171093 0.171093\" referenceId=\"6\" nodeId=\"210\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"water_buffalo\" nodeId=\"211\">\n      <Shape name=\"water_buffalo_body\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"212\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"37 38 39 40 41 42 43 44 48 49 115 116 159 160 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 193 192\" materialIds=\"7\"/>\n      <TransformGroup name=\"fur\" nodeId=\"213\">\n        <Shape name=\"ear_l\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"214\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43 48 49\" materialIds=\"6\"/>\n        <Shape name=\"head_hair\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"215\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"39 41 42 43 48 115 159 160\" materialIds=\"6\"/>\n        <Shape name=\"ear_r_reverse\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"216\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43 115 116\" materialIds=\"6\"/>\n        <Shape name=\"whiskers\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"217\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43 44\" materialIds=\"6\"/>\n        <Shape name=\"ear_r\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"218\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43 115 116\" materialIds=\"6\"/>\n        <Shape name=\"whiskers_reverse\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"219\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43 44\" materialIds=\"6\"/>\n        <Shape name=\"neck_hair\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"220\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"39 41 42 43 44 165 170 175\" materialIds=\"6\"/>\n        <Shape name=\"tail_hair\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"221\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"178 179 180 181\" materialIds=\"6\"/>\n        <Shape name=\"tail_hair_reverse\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"222\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"178 179 180 181\" materialIds=\"6\"/>\n        <Shape name=\"ear_l_reverse\" shapeId=\"11\" clipDistance=\"300\" nodeId=\"223\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43 48 49\" materialIds=\"6\"/>\n        <Shape name=\"belly_hair\" shapeId=\"12\" clipDistance=\"300\" nodeId=\"224\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"37 38 39 175 193 192 176\" materialIds=\"6\"/>\n      </TransformGroup>\n      <TransformGroup name=\"internals\" nodeId=\"225\">\n        <Shape name=\"eye_lashes_l_reverse\" shapeId=\"13\" clipDistance=\"300\" nodeId=\"226\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43 159\" materialIds=\"6\"/>\n        <Shape name=\"eye_lashes_l\" shapeId=\"14\" clipDistance=\"300\" nodeId=\"227\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"159 43\" materialIds=\"6\"/>\n        <Shape name=\"eye_lashes_r_reverse\" shapeId=\"15\" clipDistance=\"300\" nodeId=\"228\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"160 43\" materialIds=\"6\"/>\n        <Shape name=\"eye_lashes_r\" shapeId=\"16\" clipDistance=\"300\" nodeId=\"229\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"160 43\" materialIds=\"6\"/>\n        <Shape name=\"teeth\" translation=\"-1e-06 1.04103 1.56997\" shapeId=\"17\" clipDistance=\"300\" nodeId=\"230\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"44\" materialIds=\"7\"/>\n        <Shape name=\"tongue\" shapeId=\"18\" clipDistance=\"300\" nodeId=\"231\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"44 45 46 47\" materialIds=\"7\"/>\n        <Shape name=\"eye_r\" shapeId=\"19\" clipDistance=\"300\" nodeId=\"232\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"158\" materialIds=\"7\"/>\n        <Shape name=\"eye_l\" shapeId=\"20\" clipDistance=\"300\" nodeId=\"233\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"157\" materialIds=\"7\"/>\n      </TransformGroup>\n      <TransformGroup name=\"horns_v02\" nodeId=\"234\">\n        <Shape name=\"horn_v02_r\" shapeId=\"21\" clipDistance=\"300\" nodeId=\"235\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43\" materialIds=\"8\"/>\n        <Shape name=\"horn_v02_l\" shapeId=\"22\" clipDistance=\"300\" nodeId=\"236\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43\" materialIds=\"8\"/>\n      </TransformGroup>\n      <TransformGroup name=\"horns_v01\" visibility=\"false\" nodeId=\"237\">\n        <Shape name=\"horn_v01_l\" shapeId=\"23\" clipDistance=\"300\" nodeId=\"238\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43\" materialIds=\"8\"/>\n        <Shape name=\"horn_v01_r\" shapeId=\"24\" clipDistance=\"300\" nodeId=\"239\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43\" materialIds=\"8\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"cowProxy\" shapeId=\"25\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"240\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"5\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/cow/waterBuffalo/waterBuffaloCalf.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"waterBuffaloCalf.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"8\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"10\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalfHair_diffuse.png\"/>\n    <File fileId=\"11\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalfHair_normal.png\"/>\n    <File fileId=\"12\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalfHair_specular.png\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalf_diffuse.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalf_normal.png\"/>\n    <File fileId=\"7\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalf_specular.png\"/>\n    <File fileId=\"1\" filename=\"../../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../../monitor.i3d\"/>\n    <File fileId=\"4\" filename=\"../../sprayedMarker_cattle.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"standardSurface1\" materialId=\"5\" diffuseColor=\"0.4 0.4 0.4 1\">\n    </Material>\n    <Material name=\"WaterBuffaloCalf_hair_alpha_mat\" materialId=\"6\" alphaBlending=\"true\" customShaderId=\"8\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"10\"/>\n      <Normalmap fileId=\"11\"/>\n      <Glossmap fileId=\"12\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"WaterBuffaloCalf_mat\" materialId=\"7\" customShaderId=\"8\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"5\"/>\n      <Normalmap fileId=\"6\"/>\n      <Glossmap fileId=\"7\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"waterBuffaloCalf.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"calfSkeleton\" nodeId=\"20\">\n      <TransformGroup name=\"calf_root_skin_jnt\" nodeId=\"21\">\n        <TransformGroup name=\"calf_spine_skin_jnt_01\" translation=\"0 0.799706 -0.37449\" rotation=\"0 -90 0\" nodeId=\"22\">\n          <TransformGroup name=\"calf_spine_skin_jnt_02\" translation=\"0.409428 0 0\" nodeId=\"23\">\n            <TransformGroup name=\"calf_spine_skin_jnt_03\" translation=\"0.409428 0 0\" nodeId=\"24\">\n              <TransformGroup name=\"calf_neck_skin_jnt_01\" translation=\"0.026728 -0.062515 0\" rotation=\"0 0 26.2987\" nodeId=\"25\">\n                <TransformGroup name=\"calf_neck_skin_jnt_02\" translation=\"0.182713 -0.003189 0\" rotation=\"-2e-06 0 -1.08254\" nodeId=\"26\">\n                  <TransformGroup name=\"calf_neck_skin_jnt_03\" translation=\"0.182736 0.000263 0\" rotation=\"2e-06 0 1.08254\" nodeId=\"27\">\n                    <TransformGroup name=\"calf_head_skin_jnt\" rotation=\"41.4004 90 0\" nodeId=\"28\">\n                      <TransformGroup name=\"calf_jaw_skin_jnt\" translation=\"0 0.008429 0.088872\" rotation=\"90 -48.5181 -90\" nodeId=\"29\">\n                        <TransformGroup name=\"calf_tongue_skin_jnt_01\" translation=\"0.052247 -0.047667 0\" rotation=\"0 0 21.9819\" nodeId=\"30\">\n                          <TransformGroup name=\"calf_tongue_skin_jnt_02\" translation=\"0.081703 0 0\" nodeId=\"31\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_L_skin_jnt_01\" translation=\"0.089441 0.037497 -0.046663\" rotation=\"6.44066 2.46226 -80.5955\" nodeId=\"32\">\n                        <TransformGroup name=\"calf_ear_L_skin_jnt_02\" translation=\"0 0.149554 0\" rotation=\"0.036943 0 0\" nodeId=\"33\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0573109 -0.00108805 0.0256592\" rotation=\"-116.579 67.8286 -22.6305\" scale=\"1 0.9 0.9\" referenceId=\"1\" nodeId=\"66\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.0309831 -0.0385957 0.0185728\" rotation=\"5.078 -73.6752 85.3126\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"98\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_R_skin_jnt_01\" translation=\"-0.089441 0.037497 -0.046663\" rotation=\"173.559 2.46226 -99.4045\" nodeId=\"99\">\n                        <TransformGroup name=\"calf_ear_R_skin_jnt_02\" translation=\"0 0.149554 0\" rotation=\"-0.036943 0 0\" nodeId=\"100\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0542544 0.0147208 -0.0217774\" rotation=\"109.188 -74.8847 -10.718\" scale=\"1 0.9 0.9\" referenceId=\"3\" nodeId=\"122\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_eyeball_L_skin_jnt\" translation=\"0.060543 0.053735 0.087076\" rotation=\"8.29812 -38.7035 -12.6129\" nodeId=\"141\"/>\n                      <TransformGroup name=\"calf_eyeball_R_skin_jnt\" translation=\"-0.060543 0.053735 0.087076\" rotation=\"171.702 -38.7035 -167.387\" nodeId=\"142\"/>\n                      <TransformGroup name=\"calf_eyelid_up_L_skin_jnt\" translation=\"0.077971 0.060963 0.101468\" rotation=\"-14.0213 -37.3361 22.5273\" nodeId=\"143\"/>\n                      <TransformGroup name=\"calf_eyelid_up_R_skin_jnt\" translation=\"-0.077971 0.060963 0.101468\" rotation=\"-166.471 -37.3361 157.473\" nodeId=\"144\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_L_skin_jnt\" translation=\"0.042433 -0.019034 -0.108618\" rotation=\"0 0 -117.485\" nodeId=\"145\">\n                <TransformGroup name=\"calf_elbow_L_skin_jnt\" translation=\"0.258394 0 0\" rotation=\"0 0 36.8626\" nodeId=\"146\">\n                  <TransformGroup name=\"calf_wrist_L_skin_jnt\" translation=\"0.277234 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"147\">\n                    <TransformGroup name=\"calf_front_foot_L_skin_jnt\" translation=\"0.188997 0 0\" rotation=\"0 0 13.1416\" nodeId=\"148\">\n                      <TransformGroup name=\"calf_front_ball_L_skin_jnt\" translation=\"0.046149 0 0\" nodeId=\"149\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_R_skin_jnt\" translation=\"0.042433 -0.019034 0.108618\" rotation=\"0 0 62.5155\" nodeId=\"150\">\n                <TransformGroup name=\"calf_elbow_R_skin_jnt\" translation=\"-0.258394 0 0\" rotation=\"0 0 36.8626\" nodeId=\"151\">\n                  <TransformGroup name=\"calf_wrist_R_skin_jnt\" translation=\"-0.277234 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"152\">\n                    <TransformGroup name=\"calf_front_foot_R_skin_jnt\" translation=\"-0.188997 0 0\" rotation=\"0 0 -166.858\" nodeId=\"153\">\n                      <TransformGroup name=\"calf_front_ball_R_skin_jnt\" translation=\"0.046149 0 0\" nodeId=\"154\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"calf_belly_skin_jnt\" translation=\"0 -0.30702 0\" rotation=\"0 90 0\" nodeId=\"155\"/>\n          </TransformGroup>\n          <TransformGroup name=\"calf_tail_skin_jnt_01\" translation=\"-0.013093 0.203392 0\" rotation=\"-180 0 176.891\" nodeId=\"156\">\n            <TransformGroup name=\"calf_tail_skin_jnt_02\" translation=\"0.170868 0 0\" rotation=\"0 0 -38.5557\" nodeId=\"157\">\n              <TransformGroup name=\"calf_tail_skin_jnt_03\" translation=\"0.190862 0 0\" rotation=\"0 0 -9.0121\" nodeId=\"158\">\n                <TransformGroup name=\"calf_tail_skin_jnt_04\" translation=\"0.207204 0 0\" rotation=\"0 0 -0.954205\" nodeId=\"159\">\n                  <TransformGroup name=\"calf_tail_skin_jnt_05\" translation=\"0.181002 0 0\" nodeId=\"160\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_L_skin_jnt\" translation=\"-0.062567 0.07868 -0.115513\" rotation=\"0 0 -60.4957\" nodeId=\"161\">\n            <TransformGroup name=\"calf_knee_L_skin_jnt\" translation=\"0.252317 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"162\">\n              <TransformGroup name=\"calf_ankle_L_skin_jnt\" translation=\"0.334579 0 0\" rotation=\"0 0 31.5306\" nodeId=\"163\">\n                <TransformGroup name=\"calf_hind_foot_L_skin_jnt\" translation=\"0.271793 0 0\" rotation=\"0 0 1.16099\" nodeId=\"164\">\n                  <TransformGroup name=\"calf_hind_ball_L_skin_jnt\" translation=\"0.044208 0 0\" nodeId=\"165\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_R_skin_jnt\" translation=\"-0.062567 0.07868 0.115513\" rotation=\"0 0 119.504\" nodeId=\"166\">\n            <TransformGroup name=\"calf_knee_R_skin_jnt\" translation=\"-0.252317 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"167\">\n              <TransformGroup name=\"calf_ankle_R_skin_jnt\" translation=\"-0.334579 0 0\" rotation=\"0 0 31.5306\" nodeId=\"168\">\n                <TransformGroup name=\"calf_hind_foot_R_skin_jnt\" translation=\"-0.271793 0 0\" rotation=\"0 0 -178.839\" nodeId=\"169\">\n                  <TransformGroup name=\"calf_hind_ball_R_skin_jnt\" translation=\"0.044208 0 0\" nodeId=\"170\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <ReferenceNode name=\"sprayedMarker\" translation=\"0.0645135 0.268704 0.00376063\" rotation=\"87.8399 87.3871 94.3253\" scale=\"0.1 0.1 0.1\" referenceId=\"4\" nodeId=\"174\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"geo\" nodeId=\"175\">\n      <Shape name=\"Tongue\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"176\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"30 31 28 29\" materialIds=\"7\"/>\n      <Shape name=\"Teeth\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"177\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28 29\" materialIds=\"7\"/>\n      <Shape name=\"WaterBuffaloCalf\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"178\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 29 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170\" materialIds=\"7\"/>\n      <Shape name=\"Eye\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"179\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"141 142\" materialIds=\"7\"/>\n      <Shape name=\"Horn\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"180\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28\" materialIds=\"7\"/>\n      <TransformGroup name=\"Hair\" nodeId=\"181\">\n        <Shape name=\"Whiskers\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"182\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170 29\" materialIds=\"6\"/>\n        <Shape name=\"Lash\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"183\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170 29\" materialIds=\"6\"/>\n        <Shape name=\"Tail\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"184\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170 29 160\" materialIds=\"6\"/>\n        <Shape name=\"Fur\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"185\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170 29\" materialIds=\"6\"/>\n        <Shape name=\"Lash_reverse\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"186\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170 29\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"proxy\" shapeId=\"11\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"187\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"5\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/cow/waterBuffalo/waterBuffaloCalfBaby.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"waterBuffaloCalfBaby.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"8\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"10\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalfHair_diffuse.png\"/>\n    <File fileId=\"11\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalfHair_normal.png\"/>\n    <File fileId=\"12\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalfHair_specular.png\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalf_diffuse.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalf_normal.png\"/>\n    <File fileId=\"7\" filename=\"$dataS/character/animals/domesticated/waterBuffalo/waterBuffaloCalf/waterBuffaloCalf_specular.png\"/>\n    <File fileId=\"1\" filename=\"../../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../../monitor.i3d\"/>\n    <File fileId=\"4\" filename=\"../../sprayedMarker_cattle.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"standardSurface1\" materialId=\"5\" diffuseColor=\"0.4 0.4 0.4 1\">\n    </Material>\n    <Material name=\"WaterBuffaloCalf_hair_alpha_mat\" materialId=\"6\" alphaBlending=\"true\" customShaderId=\"8\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"10\"/>\n      <Normalmap fileId=\"11\"/>\n      <Glossmap fileId=\"12\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"WaterBuffaloCalf_mat\" materialId=\"7\" customShaderId=\"8\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"5\"/>\n      <Normalmap fileId=\"6\"/>\n      <Glossmap fileId=\"7\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n      <CustomParameter name=\"dirt\" value=\"0 20 20\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"waterBuffaloCalfBaby.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"calfSkeleton\" nodeId=\"20\">\n      <TransformGroup name=\"calf_root_skin_jnt\" nodeId=\"21\">\n        <TransformGroup name=\"calf_spine_skin_jnt_01\" translation=\"0 0.533138 -0.24966\" rotation=\"0 -90 0\" nodeId=\"22\">\n          <TransformGroup name=\"calf_spine_skin_jnt_02\" translation=\"0.272952 0 0\" nodeId=\"23\">\n            <TransformGroup name=\"calf_spine_skin_jnt_03\" translation=\"0.272952 0 0\" nodeId=\"24\">\n              <TransformGroup name=\"calf_neck_skin_jnt_01\" translation=\"0.017819 -0.041677 0\" rotation=\"0 0 26.2987\" nodeId=\"25\">\n                <TransformGroup name=\"calf_neck_skin_jnt_02\" translation=\"0.121809 -0.002126 0\" rotation=\"-2e-06 0 -1.08254\" nodeId=\"26\">\n                  <TransformGroup name=\"calf_neck_skin_jnt_03\" translation=\"0.121824 0.000175 0\" rotation=\"2e-06 0 1.08254\" nodeId=\"27\">\n                    <TransformGroup name=\"calf_head_skin_jnt\" rotation=\"41.4004 90 0\" nodeId=\"28\">\n                      <TransformGroup name=\"calf_jaw_skin_jnt\" translation=\"0 0.005619 0.059248\" rotation=\"90 -48.5181 -90\" nodeId=\"29\">\n                        <TransformGroup name=\"calf_tongue_skin_jnt_01\" translation=\"0.034831 -0.031778 0\" rotation=\"0 0 21.9819\" nodeId=\"30\">\n                          <TransformGroup name=\"calf_tongue_skin_jnt_02\" translation=\"0.054469 0 0\" nodeId=\"31\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_L_skin_jnt_01\" translation=\"0.059628 0.024998 -0.031109\" rotation=\"6.44066 2.46226 -80.5955\" nodeId=\"32\">\n                        <TransformGroup name=\"calf_ear_L_skin_jnt_02\" translation=\"0 0.099703 0\" rotation=\"0.036943 0 0\" nodeId=\"33\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0444183 0.0137136 0.0197019\" rotation=\"-112.843 67.5304 -24.213\" scale=\"1 0.9 0.9\" referenceId=\"1\" nodeId=\"66\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"0.0021787 -0.0364336 0.00735516\" rotation=\"-156.277 -85.786 66.3306\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"98\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_ear_R_skin_jnt_01\" translation=\"-0.059628 0.024998 -0.031109\" rotation=\"173.559 2.46226 -99.4045\" nodeId=\"99\">\n                        <TransformGroup name=\"calf_ear_R_skin_jnt_02\" translation=\"0 0.099703 0\" rotation=\"-0.036943 0 0\" nodeId=\"100\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0439006 0.0303224 -0.0169594\" rotation=\"113.044 -72.4724 -6.39521\" scale=\"1 0.9 0.9\" referenceId=\"3\" nodeId=\"122\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"calf_eyeball_L_skin_jnt\" translation=\"0.040362 0.035823 0.058051\" rotation=\"8.29812 -38.7035 -12.6129\" nodeId=\"141\"/>\n                      <TransformGroup name=\"calf_eyeball_R_skin_jnt\" translation=\"-0.040362 0.035823 0.058051\" rotation=\"171.702 -38.7035 -167.387\" nodeId=\"142\"/>\n                      <TransformGroup name=\"calf_eyelid_up_L_skin_jnt\" translation=\"0.051981 0.040642 0.067645\" rotation=\"-14.0213 -37.3361 22.5273\" nodeId=\"143\"/>\n                      <TransformGroup name=\"calf_eyelid_up_R_skin_jnt\" translation=\"-0.051981 0.040642 0.067645\" rotation=\"-166.471 -37.3361 157.473\" nodeId=\"144\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_L_skin_jnt\" translation=\"0.028288 -0.012689 -0.072412\" rotation=\"0 0 -117.485\" nodeId=\"145\">\n                <TransformGroup name=\"calf_elbow_L_skin_jnt\" translation=\"0.172263 0 0\" rotation=\"0 0 36.8626\" nodeId=\"146\">\n                  <TransformGroup name=\"calf_wrist_L_skin_jnt\" translation=\"0.184823 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"147\">\n                    <TransformGroup name=\"calf_front_foot_L_skin_jnt\" translation=\"0.125998 0 0\" rotation=\"0 0 13.1416\" nodeId=\"148\">\n                      <TransformGroup name=\"calf_front_ball_L_skin_jnt\" translation=\"0.030766 0 0\" nodeId=\"149\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"calf_shoulder_R_skin_jnt\" translation=\"0.028288 -0.012689 0.072412\" rotation=\"0 0 62.5155\" nodeId=\"150\">\n                <TransformGroup name=\"calf_elbow_R_skin_jnt\" translation=\"-0.172263 0 0\" rotation=\"0 0 36.8626\" nodeId=\"151\">\n                  <TransformGroup name=\"calf_wrist_R_skin_jnt\" translation=\"-0.184823 0 0\" rotation=\"0 0 -14.1802\" nodeId=\"152\">\n                    <TransformGroup name=\"calf_front_foot_R_skin_jnt\" translation=\"-0.125998 0 0\" rotation=\"0 0 -166.858\" nodeId=\"153\">\n                      <TransformGroup name=\"calf_front_ball_R_skin_jnt\" translation=\"0.030766 0 0\" nodeId=\"154\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"calf_belly_skin_jnt\" translation=\"0 -0.20468 0\" rotation=\"0 90 0\" nodeId=\"155\"/>\n          </TransformGroup>\n          <TransformGroup name=\"calf_tail_skin_jnt_01\" translation=\"-0.008728 0.135595 0\" rotation=\"-180 0 176.891\" nodeId=\"156\">\n            <TransformGroup name=\"calf_tail_skin_jnt_02\" translation=\"0.113912 0 0\" rotation=\"0 0 -38.5557\" nodeId=\"157\">\n              <TransformGroup name=\"calf_tail_skin_jnt_03\" translation=\"0.127242 0 0\" rotation=\"0 0 -9.0121\" nodeId=\"158\">\n                <TransformGroup name=\"calf_tail_skin_jnt_04\" translation=\"0.138136 0 0\" rotation=\"0 0 -0.954205\" nodeId=\"159\">\n                  <TransformGroup name=\"calf_tail_skin_jnt_05\" translation=\"0.120668 0 0\" nodeId=\"160\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_L_skin_jnt\" translation=\"-0.041711 0.052453 -0.077008\" rotation=\"0 0 -60.4957\" nodeId=\"161\">\n            <TransformGroup name=\"calf_knee_L_skin_jnt\" translation=\"0.168212 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"162\">\n              <TransformGroup name=\"calf_ankle_L_skin_jnt\" translation=\"0.223052 0 0\" rotation=\"0 0 31.5306\" nodeId=\"163\">\n                <TransformGroup name=\"calf_hind_foot_L_skin_jnt\" translation=\"0.181196 0 0\" rotation=\"0 0 1.16099\" nodeId=\"164\">\n                  <TransformGroup name=\"calf_hind_ball_L_skin_jnt\" translation=\"0.029472 0 0\" nodeId=\"165\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"calf_hip_R_skin_jnt\" translation=\"-0.041711 0.052453 0.077008\" rotation=\"0 0 119.504\" nodeId=\"166\">\n            <TransformGroup name=\"calf_knee_R_skin_jnt\" translation=\"-0.168212 0 0\" rotation=\"0 0 -55.6434\" nodeId=\"167\">\n              <TransformGroup name=\"calf_ankle_R_skin_jnt\" translation=\"-0.223052 0 0\" rotation=\"0 0 31.5306\" nodeId=\"168\">\n                <TransformGroup name=\"calf_hind_foot_R_skin_jnt\" translation=\"-0.181196 0 0\" rotation=\"0 0 -178.839\" nodeId=\"169\">\n                  <TransformGroup name=\"calf_hind_ball_R_skin_jnt\" translation=\"0.029472 0 0\" nodeId=\"170\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <ReferenceNode name=\"sprayedMarker\" translation=\"0.115699 0.179838 0.00146503\" rotation=\"1.3001 90 0\" scale=\"0.08 0.08 0.08\" referenceId=\"4\" nodeId=\"174\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"geo\" nodeId=\"175\">\n      <Shape name=\"Tongue\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"176\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"30 31 28 29\" materialIds=\"7\"/>\n      <Shape name=\"Teeth\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"177\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28 29\" materialIds=\"7\"/>\n      <Shape name=\"Eye\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"178\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"141 142\" materialIds=\"7\"/>\n      <Shape name=\"Horn\" shapeId=\"4\" visibility=\"false\" clipDistance=\"300\" nodeId=\"179\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28\" materialIds=\"7\"/>\n      <TransformGroup name=\"Hair\" nodeId=\"180\">\n        <Shape name=\"Whiskers\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"181\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170 29\" materialIds=\"6\"/>\n        <Shape name=\"Lash\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"182\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170 29\" materialIds=\"6\"/>\n        <Shape name=\"Tail\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"183\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170 29 160\" materialIds=\"6\"/>\n        <Shape name=\"WaterBuffaloCalf\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"184\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 29 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170\" materialIds=\"7\"/>\n        <Shape name=\"Fur\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"185\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"21 22 23 24 25 26 27 28 29 30 31 32 33 99 100 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170\" materialIds=\"6\"/>\n        <Shape name=\"Lash_reverse\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"186\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 24 25 26 27 28 32 33 99 100 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 161 162 163 164 165 166 167 168 169 170 29\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"proxy\" shapeId=\"11\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"187\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"5\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/earTagScene.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"earTagScene.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"1\" filename=\"earTags.i3d\"/>\n  </Files>\n\n\n  <Materials>\n  </Materials>\n\n\n  <Shapes>\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"colorPickerSceneRoot\" nodeId=\"6\">\n      <ReferenceNode name=\"earTag\" rotation=\"0 90 0\" scale=\"1 6 6\" referenceId=\"1\" nodeId=\"39\"/>\n      <Camera name=\"colorPickerOverlayCamera\" translation=\"0 0 7\" nodeId=\"68\" fov=\"20\" nearClip=\"0.1\" farClip=\"5000\" orthographic=\"true\" orthographicHeight=\"2.5\"/>\n      <Light name=\"colorPickerOverlayDirectionalLight\" rotation=\"-40 -0 -30\" objectMask=\"0x4000000\" nodeId=\"69\" type=\"directional\" color=\"1 1 1\" emitDiffuse=\"true\" emitSpecular=\"true\" castShadowMap=\"true\" depthMapBias=\"0.0012\" depthMapSlopeScaleBias=\"2\" depthMapSlopeClamp=\"0.0005\" depthMapResolution=\"1024\" shadowFarDistance=\"1000\" shadowExtrusionDistance=\"200\" softShadowsLightSize=\"0.5\" softShadowsLightDistance=\"15\" softShadowsDepthBiasFactor=\"1\" softShadowsMaxPenumbraSize=\"0.5\" numShadowMapSplits=\"5\" shadowMapSplitDistancesParameter=\"0.9\" range=\"5\"/>\n    </TransformGroup>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/earTags.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"earTags.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.8\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"3\" filename=\"colourShader.xml\"/>\n    <File fileId=\"1\" filename=\"earTags_diffuse.dds\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"Material.001\" materialId=\"27\" specularColor=\"1 1 0\" customShaderId=\"3\">\n      <Texture fileId=\"1\"/>\n      <CustomParameter name=\"colorScale\" value=\"0.8 0.7 0\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"earTags.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"earTag\" shapeId=\"1\" nodeId=\"8\" castsShadows=\"true\" receiveShadows=\"true\" doubleSided=\"true\" materialIds=\"27\">\n      <TransformGroup name=\"back\" translation=\"0.0014762 0 0\" rotation=\"-180 -180 -180\" nodeId=\"9\"/>\n      <TransformGroup name=\"front\" translation=\"-0.001 -8.38843e-10 7.82405e-05\" rotation=\"-180 0 -180\" nodeId=\"10\"/>\n    </Shape>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/earTagsRight.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"earTagsRight.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.8\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"3\" filename=\"colourShader.xml\"/>\n    <File fileId=\"1\" filename=\"earTags_diffuse.dds\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"Material.001\" materialId=\"5\" specularColor=\"1 1 0\" customShaderId=\"3\">\n      <Texture fileId=\"1\"/>\n      <CustomParameter name=\"colorScale\" value=\"0.8 0.7 0\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"earTagsRight.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"earTag\" shapeId=\"1\" nodeId=\"8\" castsShadows=\"true\" receiveShadows=\"true\" doubleSided=\"true\" materialIds=\"5\">\n      <TransformGroup name=\"back\" translation=\"0.0014762 0 0\" rotation=\"-180 -180 -180\" nodeId=\"9\"/>\n      <TransformGroup name=\"front\" translation=\"-0.001 -8.38843e-10 7.82405e-05\" rotation=\"-180 0 -180\" nodeId=\"10\"/>\n    </Shape>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/monitor.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"monitor.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"1\" filename=\"monitor_diffuse.dds\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"Material.001\" materialId=\"5\" specularColor=\"1 1 0\">\n      <Texture fileId=\"1\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"monitor.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"monitor\" scale=\"1 0.5 0.5\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"8\" castsShadows=\"false\" receiveShadows=\"false\" materialIds=\"5\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/offsetUV.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<CustomShader version=\"5\">\r\n    <Parameters>\r\n        <Parameter name=\"playScale\"    target=\"playScale\"    type=\"float4\" group=\"base\"     defaultValue=\"30 45 8 8\"       minValue=\"0 0 0 0\"         maxValue=\"60 60 64 64\"     description=\"plays atlas animation with speed set in range [X,Y]\\nplays over whole atlas\\nZ - horizontal size\\nW - vertical size\"/>\r\n        <Parameter name=\"startPosition\"    target=\"startPosition\"    type=\"float\" group=\"base\"     defaultValue=\"0\"       minValue=\"0\"         maxValue=\"1\"     description=\"sets start position\"/>\r\n\t\t<Parameter name=\"colorScale\"                  target=\"colorScale\"                  type=\"float3\" group=\"base\"                 defaultValue=\"1.0 1.0 1.0\"          minValue=\"0.0 0.0 0.0\"              maxValue=\"10.0 10.0 10.0\" template=\"brandColor\" description=\"multiplied with baseMap\"/>\r\n\t</Parameters>\r\n    <UvUsages>\r\n        <UvUsage textureName=\"normalMap\"        uvType=\"uv0\" uvScale=\"1.0\"/>\r\n        <UvUsage textureName=\"glossMap\"         uvType=\"uv0\" uvScale=\"1.0\"/>\r\n    </UvUsages>\r\n\t<Textures/>\r\n    <VertexAttributes>\r\n        <VertexAttribute name=\"uv1\"   group=\"uv1\"/>\r\n        <VertexAttribute name=\"color\" group=\"vtxColor\"/>\r\n    </VertexAttributes>\r\n\t<Variations/>\r\n    <LodLevel startDistance=\"0\">\r\n        <CodeInjections>\r\n            <CodeInjection position=\"OBJECT_PARAMETERS\">\r\n                <![CDATA[\r\n                    /*\r\n                    plays atlas animation with speed set in range [ playScale.x, playScale.y ],\r\n                    starting at startPosition, plays over whole atlas.\r\n                    playScale.z - horizontal size\r\n                    playScale.w - vertical size\r\n                    */\r\n                    float4 playScale;\r\n                    float startPosition;\r\n                    float3 colorScale;\r\n                ]]>\r\n            </CodeInjection>\r\n            <CodeInjection position=\"LIB_FUNCTION\">\r\n                <![CDATA[\r\n                // Custom pixel/vertex functions\r\n                // #include \"$data/shaders/sharedFunctions.gsl\"\r\n                // Extra functions related to the subUVShader only\r\n\t\t\t\t\r\n\t\t\t\tfloat2 getUVAnimatedSubUV1( float2 incomingUVs, bool isSubUVHorizontal, bool isTimeOverLife, float alphaOverLife,\r\n                           int playSpeed, float atlasesHorizontal, float atlasesVertical, float randomValue ){\r\n\r\n                    int  mXsize  = (int)atlasesHorizontal;\r\n                    int  mYsize  = (int)atlasesVertical;\r\n                    int  mXYsize = mXsize * mYsize;\r\n\r\n                    float2 mOutgoingUV = incomingUVs;\r\n\t\t\t\t\t\r\n                        int mFrame = playSpeed;\r\n                        int mYpos = mFrame / mXsize;\r\n                        int2 mSlotPos = int2( mFrame - mYpos * (mXsize), mYsize - mYpos - 1 );\r\n\t\t\t\t\t\t//incomingUVs.x *= atlasesHorizontal;\r\n\t\t\t\t\t\t//incomingUVs.y *= atlasesVertical;\r\n                        mOutgoingUV = ( (float2)mSlotPos + incomingUVs ) * float2(1.0/atlasesHorizontal,1.0/atlasesVertical);\r\n\t\t\t\t\t\t\r\n                    return mOutgoingUV;\r\n                }\r\n                ]]>\r\n            </CodeInjection>\r\n\t\t\t<CodeInjection position=\"LIB_FUNCTION_FS\">\r\n\t\t\t\t<![CDATA[\r\n                    // Custom pixel functions\r\n                    #include \"$data/shaders/sharedFunctions_fs.gsl\"\r\n                    // Extra functions related to the vehicleShader only\r\n                ]]>\r\n\t\t\t</CodeInjection>\r\n            <CodeInjection position=\"GET_DEFAULT_TEXCOORDS_VS\">\r\n                <![CDATA[\r\n                    float  mRandomValue = object.startPosition;\r\n                    float2 mDefaultUVs = convertDefaultTexCoords( In, object, In.texCoords0.xy );\r\n                    return getUVAnimatedSubUV1(mDefaultUVs, false, false, 0.0, (int)object.playScale.x, object.playScale.z, object.playScale.w, mRandomValue);\r\n                ]]>\r\n            </CodeInjection>\r\n\t\t\t<CodeInjection position=\"POST_DIFFUSE_COLOR_FS\">\r\n\t\t\t\t<![CDATA[\r\n\t                float3 mDiffuseColor   = float3(1.0,1.0,1.0);\r\n                    #if defined( ALBEDO_MAP )\r\n                        mDiffuseColor = tex2DSample( baseMap, ALBEDO_MAP_SAMPLER, ALBEDO_MAP_TEXCOORDS).rgb;\r\n                    #endif\r\n                    diffuseColor = mDiffuseColor * object.colorScale.rgb;\r\n                ]]>\r\n\t\t\t</CodeInjection>\r\n        </CodeInjections>\r\n    </LodLevel>\r\n</CustomShader>\r\n"
  },
  {
    "path": "animals/domesticated/pigs/animals.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<animalHusbandry>\r\n\t<animals>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\".5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.4\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"6000\" idleMax=\"12000\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"15000\" grazeMin=\"18000\" grazeMax=\"30000\" chewMin=\"15000\" chewMax=\"20000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"25000\"/>\r\n\t\t\t<assets filename=\"pigPigletBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/pig/piglet/pigPigletBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/pig/animations/young/pigletBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1>0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/pig/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\".5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.4\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"6000\" idleMax=\"12000\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"15000\" grazeMin=\"18000\" grazeMax=\"30000\" chewMin=\"15000\" chewMax=\"20000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"25000\"/>\r\n\t\t\t<assets filename=\"pigPiglet.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/pig/piglet/pigPiglet_posed.i3d\" animation=\"$dataS/character/animals/domesticated/pig/animations/young/pigletAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1>0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/pig/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\".5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.4\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"6000\" idleMax=\"12000\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"15000\" grazeMin=\"18000\" grazeMax=\"30000\" chewMin=\"15000\" chewMax=\"20000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"25000\"/>\r\n\t\t\t<assets filename=\"pigSow.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/pig/sow/pigSow_posed.i3d\" animation=\"$dataS/character/animals/domesticated/pig/animations/adult/pigAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/pig/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\".5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.4\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"6000\" idleMax=\"12000\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"15000\" grazeMin=\"18000\" grazeMax=\"30000\" chewMin=\"15000\" chewMax=\"20000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"25000\"/>\r\n\t\t\t<assets filename=\"pigPigletBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/pig/piglet/pigPigletBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/pig/animations/young/pigletBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1>0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/pig/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\".5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.4\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"6000\" idleMax=\"12000\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"15000\" grazeMin=\"18000\" grazeMax=\"30000\" chewMin=\"15000\" chewMax=\"20000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"25000\"/>\r\n\t\t\t<assets filename=\"pigPiglet.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/pig/piglet/pigPiglet_posed.i3d\" animation=\"$dataS/character/animals/domesticated/pig/animations/young/pigletAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1>0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/pig/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\".5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.4\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"6000\" idleMax=\"12000\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"15000\" grazeMin=\"18000\" grazeMax=\"30000\" chewMin=\"15000\" chewMax=\"20000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"25000\"/>\r\n\t\t\t<assets filename=\"pigSow.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/pig/sow/pigSow_posed.i3d\" animation=\"$dataS/character/animals/domesticated/pig/animations/adult/pigAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/pig/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\".5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.4\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"6000\" idleMax=\"12000\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"15000\" grazeMin=\"18000\" grazeMax=\"30000\" chewMin=\"15000\" chewMax=\"20000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"25000\"/>\r\n\t\t\t<assets filename=\"pigPigletBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/pig/piglet/pigPigletBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/pig/animations/young/pigletBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1>0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/pig/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\".5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.4\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"6000\" idleMax=\"12000\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"12000\" restMax=\"15000\" grazeMin=\"18000\" grazeMax=\"30000\" chewMin=\"15000\" chewMax=\"20000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"25000\"/>\r\n\t\t\t<assets filename=\"pigPiglet.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/pig/piglet/pigPiglet_posed.i3d\" animation=\"$dataS/character/animals/domesticated/pig/animations/young/pigletAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1>0|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/pig/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\".5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.4\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"6000\" idleMax=\"12000\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"60000\" restMax=\"90000\" grazeMin=\"18000\" grazeMax=\"30000\" chewMin=\"15000\" chewMax=\"20000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"25000\"/>\r\n\t\t\t<assets filename=\"pigSow.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/pig/sow/pigSow_posed.i3d\" animation=\"$dataS/character/animals/domesticated/pig/animations/adult/pigAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/pig/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yell\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t</animals>\r\n\t<sound>\r\n\t\t<soundGroup name=\"yell\" volume=\"2.1\" indoorVolume=\"0.3\" range=\"50\" innerRange=\"1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_06.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_07.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_08.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"yellBaby\" volume=\"2.1\" indoorVolume=\"0.3\" range=\"50\" innerRange=\"1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_06.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_07.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigYell_08.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"eat\" volume=\"0.15\" indoorVolume=\"0.01\" range=\"20\" innerRange=\"1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigEatLoop_01.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"walk\" volume=\"0.85\" indoorVolume=\"0.1\" range=\"12\" innerRange=\"0.4\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_06.wav\"/>\r\n\t\t</soundGroup>\r\n\t</sound>\r\n</animalHusbandry>"
  },
  {
    "path": "animals/domesticated/pigs/pigPiglet.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"pigPiglet.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"7\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"4\" filename=\"$dataS/character/animals/domesticated/pig/piglet/pigPiglet_diffuse.png\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/pig/piglet/pigPiglet_normal.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/pig/piglet/pigPiglet_specular.png\"/>\n    <File fileId=\"1\" filename=\"../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../monitor.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"lambert1\" materialId=\"5\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n    <Material name=\"pigPiglet_mat\" materialId=\"6\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"pigPiglet.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"piglet_root_skin_jnt\" nodeId=\"21\">\n      <TransformGroup name=\"piglet_spine_skin_jnt_01\" translation=\"0 0.316514 -0.224068\" rotation=\"0 -90 0\" nodeId=\"22\">\n        <TransformGroup name=\"piglet_spine_skin_jnt_02\" translation=\"0.213548 0 0\" nodeId=\"23\">\n          <TransformGroup name=\"piglet_spine_skin_jnt_03\" translation=\"0.213548 0 0\" nodeId=\"24\">\n            <TransformGroup name=\"piglet_neck_skin_jnt_01\" translation=\"0 -0.011499 0\" rotation=\"0 0 1\" nodeId=\"25\">\n              <TransformGroup name=\"piglet_neck_skin_jnt_02\" translation=\"0.083078 -0.00145 0\" nodeId=\"26\">\n                <TransformGroup name=\"piglet_head_skin_jnt\" rotation=\"1 90 0\" nodeId=\"27\">\n                  <TransformGroup name=\"piglet_jaw_skin_jnt\" translation=\"0 -0.00011 0.033689\" rotation=\"90 -55.6928 -90\" nodeId=\"28\">\n                    <TransformGroup name=\"piglet_tongue_skin_jnt_01\" translation=\"0.062055 0.001452 0\" rotation=\"0 0 7.49222\" nodeId=\"29\">\n                      <TransformGroup name=\"piglet_tongue_skin_jnt_02\" translation=\"0.040011 0 0\" nodeId=\"30\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                  <TransformGroup name=\"piglet_ear_L_skin_jnt_01\" translation=\"0.05742 0.059733 0.020137\" rotation=\"-10.2738 38.3614 -55.539\" nodeId=\"31\">\n                    <TransformGroup name=\"piglet_ear_L_skin_jnt_02\" translation=\"0 0.070073 0\" rotation=\"21.0066 0 0\" nodeId=\"32\">\n                      <ReferenceNode name=\"earTag\" translation=\"0.0574371 -0.0334055 0.0507411\" rotation=\"-123.072 45.8221 -47.0356\" scale=\"1 0.5 0.5\" referenceId=\"1\" nodeId=\"65\"/>\n                      <ReferenceNode name=\"monitor\" translation=\"-0.00246851 1.2601e-08 0.0122568\" rotation=\"180 -78.613 180\" scale=\"1 0.3 0.3\" referenceId=\"2\" nodeId=\"97\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                  <TransformGroup name=\"piglet_ear_R_skin_jnt_01\" translation=\"-0.05742 0.059733 0.020137\" rotation=\"10.2738 141.639 55.539\" nodeId=\"98\">\n                    <TransformGroup name=\"piglet_ear_R_skin_jnt_02\" translation=\"0 0.070073 0\" rotation=\"-21.0066 0 0\" nodeId=\"99\">\n                      <ReferenceNode name=\"earTagRight\" translation=\"0.0386035 -0.0167124 -0.0495225\" rotation=\"107.681 -17.4548 -16.0647\" scale=\"1 0.5 0.5\" referenceId=\"3\" nodeId=\"121\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                  <TransformGroup name=\"piglet_eyeball_L_skin_jnt\" translation=\"0.039231 0.020404 0.077157\" rotation=\"13.5226 -32.1015 -5.41261\" nodeId=\"140\"/>\n                  <TransformGroup name=\"piglet_eyeball_R_skin_jnt\" translation=\"-0.039231 0.020404 0.077157\" rotation=\"166.477 -32.1015 -174.587\" nodeId=\"141\"/>\n                  <TransformGroup name=\"piglet_eyelid_up_L_skin_jnt\" translation=\"0.050209 0.026648 0.085703\" rotation=\"-6.04066 -34.0833 29.6301\" nodeId=\"142\"/>\n                  <TransformGroup name=\"piglet_eyelid_up_R_skin_jnt\" translation=\"-0.050209 0.026648 0.085703\" rotation=\"-173.959 -34.0833 150.37\" nodeId=\"143\"/>\n                  <TransformGroup name=\"piglet_snout_skin_jnt\" translation=\"0 -0.037863 0.156199\" rotation=\"28.9279 0 0\" nodeId=\"144\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"piglet_shoulder_L_skin_jnt\" translation=\"-0.020925 -0.03395 -0.053523\" rotation=\"0 0 -112.228\" nodeId=\"145\">\n              <TransformGroup name=\"piglet_elbow_L_skin_jnt\" translation=\"0.087608 0 0\" rotation=\"0 0 39.3546\" nodeId=\"146\">\n                <TransformGroup name=\"piglet_wrist_L_skin_jnt\" translation=\"0.091241 0 0\" rotation=\"0 0 -18.9967\" nodeId=\"147\">\n                  <TransformGroup name=\"piglet_front_foot_L_skin_jnt\" translation=\"0.046737 0 0\" rotation=\"0 0 16.4427\" nodeId=\"148\">\n                    <TransformGroup name=\"piglet_front_ball_L_skin_jnt\" translation=\"0.035834 0 0\" nodeId=\"149\"/>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"piglet_shoulder_R_skin_jnt\" translation=\"-0.020925 -0.03395 0.053523\" rotation=\"0 0 67.772\" nodeId=\"150\">\n              <TransformGroup name=\"piglet_elbow_R_skin_jnt\" translation=\"-0.087608 0 0\" rotation=\"0 0 39.3546\" nodeId=\"151\">\n                <TransformGroup name=\"piglet_wrist_R_skin_jnt\" translation=\"-0.091241 0 0\" rotation=\"0 0 -18.9967\" nodeId=\"152\">\n                  <TransformGroup name=\"piglet_front_foot_R_skin_jnt\" translation=\"-0.046737 0 0\" rotation=\"0 0 -163.557\" nodeId=\"153\">\n                    <TransformGroup name=\"piglet_front_ball_R_skin_jnt\" translation=\"0.035834 0 0\" nodeId=\"154\"/>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"piglet_belly_skin_jnt\" translation=\"0 -0.133666 0\" rotation=\"0 90 0\" nodeId=\"155\"/>\n        </TransformGroup>\n        <TransformGroup name=\"piglet_tail_skin_jnt\" translation=\"-0.032991 0.01344 0\" rotation=\"0 180 0\" nodeId=\"156\"/>\n        <TransformGroup name=\"piglet_hip_L_skin_jnt\" translation=\"0.037361 0.000178 -0.057074\" rotation=\"0 0 -79.4829\" nodeId=\"157\">\n          <TransformGroup name=\"piglet_knee_L_skin_jnt\" translation=\"0.130378 0 0\" rotation=\"0 0 -47.7214\" nodeId=\"158\">\n            <TransformGroup name=\"piglet_ankle_L_skin_jnt\" translation=\"0.081216 0 0\" rotation=\"0 0 51.3609\" nodeId=\"159\">\n              <TransformGroup name=\"piglet_hind_foot_L_skin_jnt\" translation=\"0.058011 0 0\" rotation=\"0 0 0.26314\" nodeId=\"160\">\n                <TransformGroup name=\"piglet_hind_ball_L_skin_jnt\" translation=\"0.03254 0 0\" nodeId=\"161\"/>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n        <TransformGroup name=\"piglet_hip_R_skin_jnt\" translation=\"0.037361 0.000178 0.057074\" rotation=\"0 0 100.517\" nodeId=\"162\">\n          <TransformGroup name=\"piglet_knee_R_skin_jnt\" translation=\"-0.130378 0 0\" rotation=\"0 0 -47.7214\" nodeId=\"163\">\n            <TransformGroup name=\"piglet_ankle_R_skin_jnt\" translation=\"-0.081216 0 0\" rotation=\"0 0 51.3609\" nodeId=\"164\">\n              <TransformGroup name=\"piglet_hind_foot_R_skin_jnt\" translation=\"-0.058011 0 0\" rotation=\"0 0 -179.737\" nodeId=\"165\">\n                <TransformGroup name=\"piglet_hind_ball_R_skin_jnt\" translation=\"0.03254 0 0\" nodeId=\"166\"/>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n\t</TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"pigPiglet\" nodeId=\"167\">\n      <TransformGroup name=\"LOD_0\" nodeId=\"168\">\n        <Shape name=\"body\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"169\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"21 22 23 24 25 26 27 28 29 30 31 32 98 99 140 142 141 143 145 146 147 148 149 150 151 152 153 154 156 157 158 159 160 161 162 163 164 165 166 144 155\" materialIds=\"6\"/>\n        <Shape name=\"tongue\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"170\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"30 29 28\" materialIds=\"6\"/>\n        <Shape name=\"eyes\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"171\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"141 140\" materialIds=\"6\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_1\" visibility=\"false\" lodDistance=\"0 2 4\" clipDistance=\"350\" nodeId=\"172\">\n        <Shape name=\"body\" shapeId=\"4\" clipDistance=\"350\" nodeId=\"173\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"159 164 155 31 32 98 99 146 151 140 141 142 143 149 154 148 153 27 161 166 160 165 157 162 28 158 163 25 26 21 145 150 144 22 23 24 156 29 30 147 152\" materialIds=\"6\"/>\n        <Shape name=\"tongue\" shapeId=\"5\" clipDistance=\"350\" nodeId=\"174\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28 29 30\" materialIds=\"6\"/>\n        <Shape name=\"eyes\" shapeId=\"6\" clipDistance=\"350\" nodeId=\"175\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"140 141\" materialIds=\"6\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_2\" visibility=\"false\" lodDistance=\"0 2 4\" clipDistance=\"350\" nodeId=\"176\">\n        <Shape name=\"body\" shapeId=\"7\" clipDistance=\"350\" nodeId=\"177\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"159 164 155 31 32 98 99 146 151 140 141 142 143 149 154 148 153 27 161 166 160 165 157 162 28 158 163 25 26 21 145 150 144 22 23 24 156 29 30 147 152\" materialIds=\"6\"/>\n        <Shape name=\"tongue\" shapeId=\"8\" clipDistance=\"350\" nodeId=\"178\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28 29 30\" materialIds=\"6\"/>\n        <Shape name=\"eyes\" shapeId=\"9\" clipDistance=\"350\" nodeId=\"179\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"140 141\" materialIds=\"6\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_3\" visibility=\"false\" lodDistance=\"0 2 4\" clipDistance=\"350\" nodeId=\"180\">\n        <Shape name=\"body\" shapeId=\"10\" clipDistance=\"350\" nodeId=\"181\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"159 164 155 31 32 98 99 146 151 140 141 142 143 149 154 148 153 27 161 166 160 165 157 162 28 158 163 25 26 21 145 150 144 22 23 24 156 29 30 147 152\" materialIds=\"6\"/>\n        <Shape name=\"tongue\" shapeId=\"11\" clipDistance=\"350\" nodeId=\"182\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28 29 30\" materialIds=\"6\"/>\n        <Shape name=\"eyes\" shapeId=\"12\" clipDistance=\"350\" nodeId=\"183\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"140 141\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"pigPigletProxy\" shapeId=\"13\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"184\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"5\"/>\n    \n  </Scene>\n\n  <UserAttributes>\n    <UserAttribute nodeId=\"21\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"22\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"23\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"24\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"25\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"26\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"27\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"28\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"29\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"30\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"31\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"32\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"98\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"99\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"140\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"141\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"142\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"143\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"144\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"145\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"146\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"147\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"148\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"149\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"150\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"151\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"152\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"153\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"154\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"155\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"156\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"157\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"158\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"159\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"160\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"161\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"162\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"163\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"164\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"165\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"166\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n  </UserAttributes>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/pigs/pigPigletBaby.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"pigPigletBaby.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"8\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/pig/piglet/pigPiglet_diffuse.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/pig/piglet/pigPiglet_normal.png\"/>\n    <File fileId=\"7\" filename=\"$dataS/character/animals/domesticated/pig/piglet/pigPiglet_specular.png\"/>\n    <File fileId=\"1\" filename=\"../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../monitor.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"lambert1\" materialId=\"5\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n    <Material name=\"pigPiglet_mat\" materialId=\"6\" customShaderId=\"8\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"5\"/>\n      <Normalmap fileId=\"6\"/>\n      <Glossmap fileId=\"7\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"pigPigletBaby.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"piglet_root_skin_jnt\" nodeId=\"21\">\n      <TransformGroup name=\"piglet_spine_skin_jnt_01\" translation=\"0 0.189908 -0.134441\" rotation=\"0 -90 0\" nodeId=\"22\">\n        <TransformGroup name=\"piglet_spine_skin_jnt_02\" translation=\"0.128129 0 0\" nodeId=\"23\">\n          <TransformGroup name=\"piglet_spine_skin_jnt_03\" translation=\"0.128129 0 0\" nodeId=\"24\">\n            <TransformGroup name=\"piglet_neck_skin_jnt_01\" translation=\"0 -0.006899 0\" rotation=\"0 0 1\" nodeId=\"25\">\n              <TransformGroup name=\"piglet_neck_skin_jnt_02\" translation=\"0.049847 -0.00087 0\" nodeId=\"26\">\n                <TransformGroup name=\"piglet_head_skin_jnt\" rotation=\"1 90 0\" nodeId=\"27\">\n                  <TransformGroup name=\"piglet_jaw_skin_jnt\" translation=\"0 -6.6e-05 0.020213\" rotation=\"90 -55.6928 -90\" nodeId=\"28\">\n                    <TransformGroup name=\"piglet_tongue_skin_jnt_01\" translation=\"0.037233 0.000871 0\" rotation=\"0 0 7.49222\" nodeId=\"29\">\n                      <TransformGroup name=\"piglet_tongue_skin_jnt_02\" translation=\"0.024006 0 0\" nodeId=\"30\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                  <TransformGroup name=\"piglet_ear_L_skin_jnt_01\" translation=\"0.034452 0.03584 0.012082\" rotation=\"-10.2738 38.3614 -55.539\" nodeId=\"31\">\n                    <TransformGroup name=\"piglet_ear_L_skin_jnt_02\" translation=\"0 0.042044 0\" rotation=\"21.0066 0 0\" nodeId=\"32\">\n                      <ReferenceNode name=\"earTag\" translation=\"0.0385641 -0.0060756 0.0281237\" rotation=\"-115.849 42.6322 -40.8131\" scale=\"1 0.5 0.5\" referenceId=\"1\" nodeId=\"65\"/>\n                      <ReferenceNode name=\"monitor\" translation=\"-0.000854904 -0.00605586 0.0066632\" rotation=\"179.997 -88.9697 -179.997\" scale=\"1 0.3 0.3\" referenceId=\"2\" nodeId=\"97\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                  <TransformGroup name=\"piglet_ear_R_skin_jnt_01\" translation=\"-0.034452 0.03584 0.012082\" rotation=\"10.2738 141.639 55.539\" nodeId=\"98\">\n                    <TransformGroup name=\"piglet_ear_R_skin_jnt_02\" translation=\"0 0.042044 0\" rotation=\"-21.0066 0 0\" nodeId=\"99\">\n                      <ReferenceNode name=\"earTagRight\" translation=\"0.0337827 -0.0016594 -0.0334669\" rotation=\"107.341 -37.9089 -7.04614\" scale=\"1 0.5 0.5\" referenceId=\"3\" nodeId=\"121\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                  <TransformGroup name=\"piglet_eyeball_L_skin_jnt\" translation=\"0.023538 0.012243 0.046294\" rotation=\"13.5226 -32.1015 -5.41261\" nodeId=\"140\"/>\n                  <TransformGroup name=\"piglet_eyeball_R_skin_jnt\" translation=\"-0.023538 0.012243 0.046294\" rotation=\"166.477 -32.1015 -174.587\" nodeId=\"141\"/>\n                  <TransformGroup name=\"piglet_eyelid_up_L_skin_jnt\" translation=\"0.030125 0.015989 0.051422\" rotation=\"-6.04066 -34.0833 29.6301\" nodeId=\"142\"/>\n                  <TransformGroup name=\"piglet_eyelid_up_R_skin_jnt\" translation=\"-0.030125 0.015989 0.051422\" rotation=\"-173.959 -34.0833 150.37\" nodeId=\"143\"/>\n                  <TransformGroup name=\"piglet_snout_skin_jnt\" translation=\"0 -0.022718 0.09372\" rotation=\"28.9279 0 0\" nodeId=\"144\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"piglet_shoulder_L_skin_jnt\" translation=\"-0.012555 -0.02037 -0.032114\" rotation=\"0 0 -112.228\" nodeId=\"145\">\n              <TransformGroup name=\"piglet_elbow_L_skin_jnt\" translation=\"0.052565 0 0\" rotation=\"0 0 39.3546\" nodeId=\"146\">\n                <TransformGroup name=\"piglet_wrist_L_skin_jnt\" translation=\"0.054745 0 0\" rotation=\"0 0 -18.9967\" nodeId=\"147\">\n                  <TransformGroup name=\"piglet_front_foot_L_skin_jnt\" translation=\"0.028042 0 0\" rotation=\"0 0 16.4427\" nodeId=\"148\">\n                    <TransformGroup name=\"piglet_front_ball_L_skin_jnt\" translation=\"0.0215 0 0\" nodeId=\"149\"/>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n            <TransformGroup name=\"piglet_shoulder_R_skin_jnt\" translation=\"-0.012555 -0.02037 0.032114\" rotation=\"0 0 67.772\" nodeId=\"150\">\n              <TransformGroup name=\"piglet_elbow_R_skin_jnt\" translation=\"-0.052565 0 0\" rotation=\"0 0 39.3546\" nodeId=\"151\">\n                <TransformGroup name=\"piglet_wrist_R_skin_jnt\" translation=\"-0.054745 0 0\" rotation=\"0 0 -18.9967\" nodeId=\"152\">\n                  <TransformGroup name=\"piglet_front_foot_R_skin_jnt\" translation=\"-0.028042 0 0\" rotation=\"0 0 -163.557\" nodeId=\"153\">\n                    <TransformGroup name=\"piglet_front_ball_R_skin_jnt\" translation=\"0.0215 0 0\" nodeId=\"154\"/>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"piglet_belly_skin_jnt\" translation=\"0 -0.0802 0\" rotation=\"0 90 0\" nodeId=\"155\"/>\n        </TransformGroup>\n        <TransformGroup name=\"piglet_tail_skin_jnt\" translation=\"-0.019795 0.008064 0\" rotation=\"0 180 0\" nodeId=\"156\"/>\n        <TransformGroup name=\"piglet_hip_L_skin_jnt\" translation=\"0.022417 0.000107 -0.034244\" rotation=\"0 0 -79.4829\" nodeId=\"157\">\n          <TransformGroup name=\"piglet_knee_L_skin_jnt\" translation=\"0.078227 0 0\" rotation=\"0 0 -47.7214\" nodeId=\"158\">\n            <TransformGroup name=\"piglet_ankle_L_skin_jnt\" translation=\"0.04873 0 0\" rotation=\"0 0 51.3609\" nodeId=\"159\">\n              <TransformGroup name=\"piglet_hind_foot_L_skin_jnt\" translation=\"0.034807 0 0\" rotation=\"0 0 0.26314\" nodeId=\"160\">\n                <TransformGroup name=\"piglet_hind_ball_L_skin_jnt\" translation=\"0.019524 0 0\" nodeId=\"161\"/>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n        <TransformGroup name=\"piglet_hip_R_skin_jnt\" translation=\"0.022417 0.000107 0.034244\" rotation=\"0 0 100.517\" nodeId=\"162\">\n          <TransformGroup name=\"piglet_knee_R_skin_jnt\" translation=\"-0.078227 0 0\" rotation=\"0 0 -47.7214\" nodeId=\"163\">\n            <TransformGroup name=\"piglet_ankle_R_skin_jnt\" translation=\"-0.04873 0 0\" rotation=\"0 0 51.3609\" nodeId=\"164\">\n              <TransformGroup name=\"piglet_hind_foot_R_skin_jnt\" translation=\"-0.034807 0 0\" rotation=\"0 0 -179.737\" nodeId=\"165\">\n                <TransformGroup name=\"piglet_hind_ball_R_skin_jnt\" translation=\"0.019524 0 0\" nodeId=\"166\"/>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"pigPiglet\" nodeId=\"171\">\n      <TransformGroup name=\"LOD_0\" nodeId=\"172\">\n        <Shape name=\"body\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"173\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"21 22 23 24 25 26 27 28 29 30 31 32 98 99 140 142 141 143 145 146 147 148 149 150 151 152 153 154 156 157 158 159 160 161 162 163 164 165 166 144 155\" materialIds=\"6\"/>\n        <Shape name=\"tongue\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"174\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"30 29 28\" materialIds=\"6\"/>\n        <Shape name=\"eyes\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"175\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"141 140\" materialIds=\"6\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_1\" visibility=\"false\" lodDistance=\"0 2 4\" clipDistance=\"350\" nodeId=\"176\">\n        <Shape name=\"body\" shapeId=\"4\" clipDistance=\"350\" nodeId=\"177\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"159 164 155 31 32 98 99 146 151 140 141 142 143 149 154 148 153 27 161 166 160 165 157 162 28 158 163 25 26 21 145 150 144 22 23 24 156 29 30 147 152\" materialIds=\"6\"/>\n        <Shape name=\"tongue\" shapeId=\"5\" clipDistance=\"350\" nodeId=\"178\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28 29 30\" materialIds=\"6\"/>\n        <Shape name=\"eyes\" shapeId=\"6\" clipDistance=\"350\" nodeId=\"179\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"140 141\" materialIds=\"6\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_2\" visibility=\"false\" lodDistance=\"0 2 4\" clipDistance=\"350\" nodeId=\"180\">\n        <Shape name=\"body\" shapeId=\"7\" clipDistance=\"350\" nodeId=\"181\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"159 164 155 31 32 98 99 146 151 140 141 142 143 149 154 148 153 27 161 166 160 165 157 162 28 158 163 25 26 21 145 150 144 22 23 24 156 29 30 147 152\" materialIds=\"6\"/>\n        <Shape name=\"tongue\" shapeId=\"8\" clipDistance=\"350\" nodeId=\"182\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28 29 30\" materialIds=\"6\"/>\n        <Shape name=\"eyes\" shapeId=\"9\" clipDistance=\"350\" nodeId=\"183\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"140 141\" materialIds=\"6\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_3\" visibility=\"false\" lodDistance=\"0 2 4\" clipDistance=\"350\" nodeId=\"184\">\n        <Shape name=\"body\" shapeId=\"10\" clipDistance=\"350\" nodeId=\"185\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"159 164 155 31 32 98 99 146 151 140 141 142 143 149 154 148 153 27 161 166 160 165 157 162 28 158 163 25 26 21 145 150 144 22 23 24 156 29 30 147 152\" materialIds=\"6\"/>\n        <Shape name=\"tongue\" shapeId=\"11\" clipDistance=\"350\" nodeId=\"186\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"28 29 30\" materialIds=\"6\"/>\n        <Shape name=\"eyes\" shapeId=\"12\" clipDistance=\"350\" nodeId=\"187\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"140 141\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"pigPigletProxy\" shapeId=\"13\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"188\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"5\"/>\n  </Scene>\n\n  <UserAttributes>\n    <UserAttribute nodeId=\"21\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"22\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"23\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"24\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"25\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"26\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"27\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"28\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"29\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"30\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"31\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"32\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"98\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"99\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"140\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"141\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"142\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"143\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"144\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"145\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"146\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"147\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"148\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"149\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"150\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"151\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"152\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"153\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"154\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"155\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"156\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"157\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"158\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"159\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"160\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"161\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"162\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"163\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"164\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"165\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n    <UserAttribute nodeId=\"166\">\n      <Attribute name=\"liw\" type=\"boolean\" value=\"false\"/>\n    </UserAttribute>\n  </UserAttributes>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/pigs/pigSow.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"pigSow.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"8\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/pig/sow/pigSow_diffuse.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/pig/sow/pigSow_normal.png\"/>\n    <File fileId=\"7\" filename=\"$dataS/character/animals/domesticated/pig/sow/pigSow_specular.png\"/>\n    <File fileId=\"1\" filename=\"../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../monitor.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"lambert1\" materialId=\"5\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n    <Material name=\"pigSow_mat\" materialId=\"6\" customShaderId=\"8\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"5\"/>\n      <Normalmap fileId=\"6\"/>\n      <Glossmap fileId=\"7\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.55 0.4 0.4 1\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"pigSow.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"pigSkeleton\" nodeId=\"12\">\n      <TransformGroup name=\"pig_root_skin_jnt\" nodeId=\"13\">\n        <TransformGroup name=\"pig_spine_skin_jnt_01\" translation=\"0 0.775788 -0.708627\" rotation=\"-90 -88.5045 90\" nodeId=\"14\">\n          <TransformGroup name=\"pig_spine_skin_jnt_02\" translation=\"0.214991 0 0\" rotation=\"0 0 -4.61648\" nodeId=\"15\">\n            <TransformGroup name=\"pig_spine_skin_jnt_03\" translation=\"0.214991 0 0\" rotation=\"0 0 -4.58185\" nodeId=\"16\">\n              <TransformGroup name=\"pig_spine_skin_jnt_04\" translation=\"0.214993 0 0\" rotation=\"0 0 -4.4628\" nodeId=\"17\">\n                <TransformGroup name=\"pig_spine_skin_jnt_05\" translation=\"0.214997 0 0\" nodeId=\"18\">\n                  <TransformGroup name=\"pig_neck_skin_jnt_01\" rotation=\"0 0 -7.87879\" nodeId=\"19\">\n                    <TransformGroup name=\"pig_neck_skin_jnt_02\" translation=\"0.18988 0 0\" nodeId=\"20\">\n                      <TransformGroup name=\"pig_head_skin_jnt\" translation=\"0.100428 0.018594 0\" rotation=\"-20.0444 90 0\" nodeId=\"21\">\n                        <TransformGroup name=\"pig_jaw_skin_jnt\" translation=\"0 -0.132577 0.092086\" rotation=\"90 -50.3013 -90\" nodeId=\"22\">\n                          <TransformGroup name=\"pig_tongue_skin_jnt_01\" translation=\"-0.032992 -0.048697 -0.00022\" rotation=\"0 0 9.21507\" nodeId=\"23\">\n                            <TransformGroup name=\"pig_tongue_skin_jnt_02\" translation=\"0.125125 0 0\" nodeId=\"24\">\n                              <TransformGroup name=\"pig_tongue_skin_jnt_03\" translation=\"0.070741 0 0\" nodeId=\"25\"/>\n                            </TransformGroup>\n                          </TransformGroup>\n                        </TransformGroup>\n                        <TransformGroup name=\"pig_ear_L_skin_jnt_01\" translation=\"0.100775 0.013165 0.068889\" rotation=\"-40.173 -15.4117 40.8497\" nodeId=\"26\">\n                          <TransformGroup name=\"pig_ear_L_skin_jnt_02\" translation=\"0.091114 0 -1e-06\" rotation=\"-0.000119 0.000423 -27.6724\" nodeId=\"27\">\n                            <TransformGroup name=\"pig_ear_L_skin_jnt_03\" translation=\"0.070103 0 0\" rotation=\"-2.06748 -0.570859 -15.4286\" nodeId=\"28\">\n                              <ReferenceNode name=\"earTag\" translation=\"-0.0469022 -0.0711228 -0.0647297\" rotation=\"59.65 -33.6953 -31.6557\" scale=\"1 0.5 0.5\" referenceId=\"1\" nodeId=\"61\"/>\n                              <ReferenceNode name=\"monitor\" translation=\"-0.0945402 -0.0421008 -0.0132114\" rotation=\"55.2433 -23.2632 -47.8382\" scale=\"1 0.3 0.3\" referenceId=\"2\" nodeId=\"93\"/>\n                            </TransformGroup>\n                          </TransformGroup>\n                        </TransformGroup>\n                        <TransformGroup name=\"pig_ear_R_skin_jnt_01\" translation=\"-0.100775 0.013165 0.068889\" rotation=\"139.827 15.411 -40.849\" nodeId=\"94\">\n                          <TransformGroup name=\"pig_ear_R_skin_jnt_02\" translation=\"-0.091114 0 -1e-06\" rotation=\"0.000508 -0.000348 -27.6724\" nodeId=\"95\">\n                            <TransformGroup name=\"pig_ear_R_skin_jnt_03\" translation=\"-0.070447 0 0\" rotation=\"15.3103 4.17078 -14.8781\" nodeId=\"96\">\n                              <ReferenceNode name=\"earTagRight\" translation=\"0.0183127 0.0707443 0.0466362\" rotation=\"-90.6952 -61.014 -54.7543\" scale=\"1 0.5 0.5\" referenceId=\"3\" nodeId=\"118\"/>\n                            </TransformGroup>\n                          </TransformGroup>\n                        </TransformGroup>\n                        <TransformGroup name=\"pig_eyeball_L_skin_jnt\" translation=\"0.074176 -0.06789 0.135144\" rotation=\"12.542 -49.5599 -4.12846\" nodeId=\"137\"/>\n                        <TransformGroup name=\"pig_eyelid_up_L_skin_jnt\" translation=\"0.086799 -0.062486 0.15162\" rotation=\"-8.5022 -50.1926 23.1772\" nodeId=\"138\"/>\n                        <TransformGroup name=\"pig_eyeball_R_skin_jnt\" translation=\"-0.074176 -0.06789 0.135144\" rotation=\"167.458 -49.5599 -175.872\" nodeId=\"139\"/>\n                        <TransformGroup name=\"pig_eyelid_up_R_skin_jnt\" translation=\"-0.086799 -0.062486 0.15162\" rotation=\"-171.498 -50.1926 156.823\" nodeId=\"140\"/>\n                        <TransformGroup name=\"pig_nose_skin_jnt\" translation=\"0 -0.204027 0.299977\" rotation=\"90 -67.1445 -90\" nodeId=\"141\">\n                          <TransformGroup name=\"pig_nostril_L_skin_jnt\" translation=\"-0.000748 0.003251 -0.03594\" rotation=\"0 0 -3.61639\" nodeId=\"142\"/>\n                          <TransformGroup name=\"pig_nostril_R_skin_jnt\" translation=\"-0.000748 0.003251 0.03572\" rotation=\"0 0 -3.61639\" nodeId=\"143\"/>\n                          <TransformGroup name=\"pig_nose_tip_skin_jnt\" translation=\"0.004665 0.010213 0\" rotation=\"0 0 6.36464\" nodeId=\"144\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"pig_throat_skin_jnt\" translation=\"0.103308 -0.283154 0\" rotation=\"3e-06 2e-06 20.0444\" nodeId=\"145\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                  <TransformGroup name=\"pig_shoulder_L_skin_jnt\" translation=\"0.047788 -0.107574 -0.127218\" rotation=\"180 0 -91.2138\" nodeId=\"146\">\n                    <TransformGroup name=\"pig_elbow_L_skin_jnt\" translation=\"0.179269 0 0\" rotation=\"180 0 -20.5641\" nodeId=\"147\">\n                      <TransformGroup name=\"pig_wrist_L_skin_jnt\" translation=\"0.210438 0 0\" rotation=\"180 0 -15.845\" nodeId=\"148\">\n                        <TransformGroup name=\"pig_front_foot_L_skin_jnt\" translation=\"0.095658 0 0\" rotation=\"176.582 -1.5223 -32.6408\" nodeId=\"149\">\n                          <TransformGroup name=\"pig_front_ball_L_skin_jnt\" translation=\"0.062471 0 0\" nodeId=\"150\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                    </TransformGroup>\n                  </TransformGroup>\n                  <TransformGroup name=\"pig_shoulder_R_skin_jnt\" translation=\"0.047788 -0.107574 0.127218\" rotation=\"180 0 88.7862\" nodeId=\"151\">\n                    <TransformGroup name=\"pig_elbow_R_skin_jnt\" translation=\"-0.179269 0 0\" rotation=\"180 0 -20.5641\" nodeId=\"152\">\n                      <TransformGroup name=\"pig_wrist_R_skin_jnt\" translation=\"-0.210438 0 0\" rotation=\"180 0 -15.845\" nodeId=\"153\">\n                        <TransformGroup name=\"pig_front_foot_R_skin_jnt\" translation=\"-0.095658 0 0\" rotation=\"176.582 -1.5223 -32.6408\" nodeId=\"154\">\n                          <TransformGroup name=\"pig_front_ball_R_skin_jnt\" translation=\"-0.062471 0 0\" rotation=\"0 0 180\" nodeId=\"155\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"pig_belly_2_skin_jnt\" translation=\"0.065432 -0.483763 0\" rotation=\"-90 0 -82.2972\" nodeId=\"156\"/>\n            </TransformGroup>\n            <TransformGroup name=\"pig_belly_1_skin_jnt\" translation=\"0.02537 -0.465289 0\" rotation=\"-3.12097 90 0\" nodeId=\"157\"/>\n          </TransformGroup>\n          <TransformGroup name=\"pig_tail_skin_jnt_01\" translation=\"-0.143859 0.020349 0\" rotation=\"180 0 178.504\" nodeId=\"158\">\n            <TransformGroup name=\"pig_tail_skin_jnt_02\" translation=\"0.00489 0.019106 0.060485\" rotation=\"107.898 -22.2699 -65.0265\" nodeId=\"159\">\n              <TransformGroup name=\"pig_tail_skin_jnt_03\" translation=\"0.081969 -0.086223 -0.001941\" rotation=\"-8.69044 -0.196842 -55.8398\" nodeId=\"160\"/>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"pig_hip_L_skin_jnt\" translation=\"-0.029361 -0.116278 -0.121535\" rotation=\"0 0 -80.4421\" nodeId=\"161\">\n            <TransformGroup name=\"pig_knee_L_skin_jnt\" translation=\"0.203461 0 0\" rotation=\"180 0 -31.8321\" nodeId=\"162\">\n              <TransformGroup name=\"pig_hind_foot_L_skin_jnt\" translation=\"0.215476 0 0\" rotation=\"180 0 -33.5752\" nodeId=\"163\">\n                <TransformGroup name=\"pig_hind_ball_L_skin_jnt\" translation=\"0.163475 0 0\" rotation=\"0 0 12.7887\" nodeId=\"164\">\n                  <TransformGroup name=\"pig_hind_toe_tip_L_skin_jnt\" translation=\"0.060548 0 0\" nodeId=\"165\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"pig_hip_R_skin_jnt\" translation=\"-0.029361 -0.116278 0.121535\" rotation=\"0 0 99.5579\" nodeId=\"166\">\n            <TransformGroup name=\"pig_knee_R_skin_jnt\" translation=\"-0.203461 0 0\" rotation=\"-180 0 -31.8321\" nodeId=\"167\">\n              <TransformGroup name=\"pig_hind_foot_R_skin_jnt\" translation=\"-0.215476 0 0\" rotation=\"-180 0 -33.5752\" nodeId=\"168\">\n                <TransformGroup name=\"pig_hind_ball_R_skin_jnt\" translation=\"-0.163475 0 0\" rotation=\"0 0 12.7887\" nodeId=\"169\">\n                  <TransformGroup name=\"pig_hind_toe_tip_R_skin_jnt\" translation=\"-0.060548 0 0\" rotation=\"0 0 180\" nodeId=\"170\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"pig\" lodDistance=\"0 10 30\" clipDistance=\"130\" nodeId=\"175\">\n      <Shape name=\"pigSow_LOD0\" translation=\"0 0.453874 -0.085152\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"176\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 94 95 96 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170\" materialIds=\"6\"/>\n      <Shape name=\"pigSow_LOD1\" translation=\"0 0.453874 -0.085152\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"177\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 94 95 96 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170\" materialIds=\"6\"/>\n      <Shape name=\"pigSow_LOD2\" translation=\"0 0.453874 -0.085152\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"178\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 94 95 96 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170\" materialIds=\"6\"/>\n    </TransformGroup>\n    <Shape name=\"pigProxy\" shapeId=\"4\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"179\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"5\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/sheep/animals.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<animalHusbandry>\r\n\t<animals>\r\n\t\t<animal radius=\"0.6\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepLambBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLambBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/young/sheepLambBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheepBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepLamb.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/young/sheepLambAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheep\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepEwe.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/ewe/sheepEwe_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/adult/sheepAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheep\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"0.6\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepLambBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLambBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/young/sheepLambBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheepBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepLamb.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/young/sheepLambAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheep\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepEwe.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/ewe/sheepEwe_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/adult/sheepAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheep\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"0.6\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepLambBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLambBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/young/sheepLambBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheepBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepLamb.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/young/sheepLambAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheep\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepEwe.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/ewe/sheepEwe_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/adult/sheepAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheep\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"0.6\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepLambBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLambBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/young/sheepLambBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheepBaby\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepLamb.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/young/sheepLambAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheep\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"1.2\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"sheepEwe.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/sheep/ewe/sheepEwe_posed.i3d\" animation=\"$dataS/character/animals/domesticated/sheep/animations/adult/sheepAdultAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/sheep/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellSheep\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"0.4\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"goatBaby.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/goat/goatBaby/goatBaby_posed.i3d\" animation=\"$dataS/character/animals/domesticated/goat/animations/young/goatBabyAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/goat/locomotionBaby.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellGoatBaby\" yellMinInterval=\"13000\" yellMaxInterval=\"30000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"0.5\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.5\" allowMilkingPlace=\"false\" headOffset=\"0.755\" canEat=\"false\" canDrink=\"false\" canSleep=\"true\" canEatDuringNight=\"false\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"goatKid.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/goat/goatKid/goatKid_posed.i3d\" animation=\"$dataS/character/animals/domesticated/goat/animations/young/goatKidAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/goat/locomotionKid.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellGoat\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t\t<animal radius=\"0.6\" handleThreats=\"false\" threatAwarenessRadius=\"5\" slowingDistance=\"0.0\" allowMilkingPlace=\"false\" headOffset=\"0.5\" canEat=\"true\" canDrink=\"true\" canSleep=\"true\" canEatDuringNight=\"true\">\r\n\t\t\t<statesTimers idleMin=\"13333\" idleMax=\"26666\" sleepMin=\"120000\" sleepMax=\"180000\" restMin=\"18000\" restMax=\"30000\" grazeMin=\"11666\" grazeMax=\"23332\" chewMin=\"8000\" chewMax=\"16000\" eatMin=\"60000\" eatMax=\"90000\" wanderMin=\"10000\" wanderMax=\"20000\"/>\r\n\t\t\t<assets filename=\"goat.i3d\" filenamePosed=\"$dataS/character/animals/domesticated/goat/goat/goat_posed.i3d\" animation=\"$dataS/character/animals/domesticated/goat/animations/adult/goatAnimations.i3d\" skeletonIndex=\"0\" meshIndex=\"1\" proxyIndex=\"2\" shaderIndex=\"1|0\">\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"0\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"0\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t\t<texture multi=\"true\" tileUIndex=\"1\" tileVIndex=\"1\" numTilesU=\"2\" numTilesV=\"2\" mirrorV=\"false\"/>\r\n\t\t\t</assets>\r\n\t\t\t<locomotion filename=\"$dataS/character/animals/domesticated/goat/locomotion.xml\"/>\r\n\t\t\t<audio eatSoundGroup=\"eat\" yellSoundGroup=\"yellGoat\" yellMinInterval=\"8000\" yellMaxInterval=\"20000\" yellTimerCrowdScale=\"0.2\"/>\r\n\t\t</animal>\r\n\t</animals>\r\n\t<sound>\r\n\t\t<soundGroup name=\"yellSheep\" volume=\"2.0\" indoorVolume=\"0.3\" range=\"50\" innerRange=\"1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/sheep/anmlSheepYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/sheep/anmlSheepYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/sheep/anmlSheepYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/sheep/anmlSheepYell_04.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"yellSheepBaby\" volume=\"1.0\" indoorVolume=\"0.3\" range=\"50\" innerRange=\"1\" pitch=\"1.2\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/sheep/anmlSheepYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/sheep/anmlSheepYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/sheep/anmlSheepYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/sheep/anmlSheepYell_04.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"yellGoat\" volume=\"2.0\" indoorVolume=\"0.3\" range=\"50\" innerRange=\"1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_06.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"yellGoatBaby\" volume=\"1.0\" indoorVolume=\"0.3\" range=\"50\" innerRange=\"1\" pitch=\"1.15\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/goat/anmlGoatYell_06.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"eat\" volume=\"0.1\" indoorVolume=\"0.01\" range=\"20\" innerRange=\"1\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/cow/anmlCowEatLoop_01.wav\"/>\r\n\t\t</soundGroup>\r\n\t\t<soundGroup name=\"walk\" volume=\"1\" indoorVolume=\"0.1\" range=\"12\" innerRange=\"0.4\">\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_01.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_02.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_03.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_04.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_05.wav\"/>\r\n\t\t\t<sample filename=\"$data/sounds/animals/pig/anmlPigStep_06.wav\"/>\r\n\t\t</soundGroup>\r\n\t</sound>\r\n</animalHusbandry>"
  },
  {
    "path": "animals/domesticated/sheep/goat.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"goat.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"7\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"4\" filename=\"$dataS/character/animals/domesticated/goat/goat/goat_diffuse.png\"/>\n    <File fileId=\"9\" filename=\"$dataS/character/animals/domesticated/goat/goat/goat_horns_diffuse.png\"/>\n    <File fileId=\"10\" filename=\"$dataS/character/animals/domesticated/goat/goat/goat_horns_normal.png\"/>\n    <File fileId=\"11\" filename=\"$dataS/character/animals/domesticated/goat/goat/goat_horns_specular.png\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/goat/goat/goat_normal.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/goat/goat/goat_specular.png\"/>\n    <File fileId=\"12\" filename=\"$dataS/character/animals/domesticated/goat/goatHairs_diffuse.png\"/>\n    <File fileId=\"1\" filename=\"../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../monitor.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"goat_01_mat\" materialId=\"5\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"goat_02_mat\" materialId=\"6\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <Custommap name=\"alphaMap\" fileId=\"12\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"goat_03_mat\" materialId=\"7\" customShaderId=\"7\">\n      <Texture fileId=\"9\"/>\n      <Normalmap fileId=\"10\"/>\n      <Glossmap fileId=\"11\"/>\n      <CustomParameter name=\"mirrorScaleAndOffsetUV\" value=\"1 1 0 0\"/>\n      <CustomParameter name=\"atlasInvSizeAndOffsetUV\" value=\"0.5 0.5 0 0.5\"/>\n    </Material>\n    <Material name=\"lambert1\" materialId=\"8\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"goat.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"goatSkeleton\" nodeId=\"25\">\n      <TransformGroup name=\"goat_root_skin_jnt\" nodeId=\"26\">\n        <TransformGroup name=\"goat_spine_skin_jnt_01\" translation=\"0 0.631044 -0.301682\" rotation=\"0 -90 0\" nodeId=\"27\">\n          <TransformGroup name=\"goat_spine_skin_jnt_02\" translation=\"0.346725 0 0\" nodeId=\"28\">\n            <TransformGroup name=\"goat_spine_skin_jnt_03\" translation=\"0.346725 0 0\" nodeId=\"29\">\n              <TransformGroup name=\"goat_neck_skin_jnt_01\" translation=\"0 0.059085 0\" rotation=\"0 0 41.0814\" nodeId=\"30\">\n                <TransformGroup name=\"goat_neck_skin_jnt_02\" translation=\"0.238662 0 0\" nodeId=\"31\">\n                  <TransformGroup name=\"goat_neck_skin_jnt_03\" translation=\"0.238662 0 0\" nodeId=\"32\">\n                    <TransformGroup name=\"goat_head_skin_jnt\" rotation=\"41.0814 90 0\" nodeId=\"33\">\n                      <TransformGroup name=\"goat_jaw_skin_jnt\" translation=\"0 -0.035383 0.01891\" rotation=\"90 -49.4265 -90\" nodeId=\"34\">\n                        <TransformGroup name=\"goat_tongue_skin_jnt\" translation=\"0.164139 -0.00262 0\" rotation=\"-32.2164 90 0\" nodeId=\"35\"/>\n                        <TransformGroup name=\"goat_beard_skin_jnt_01\" translation=\"0.148979 -0.057085 0\" rotation=\"0 0 -40.4726\" nodeId=\"36\">\n                          <TransformGroup name=\"goat_beard_skin_jnt_02\" translation=\"0.127946 0 0\" rotation=\"0 0 28.6936\" nodeId=\"37\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"goat_ear_L_skin_jnt_01\" translation=\"0.089456 0.031371 -0.019579\" rotation=\"58.3908 -26.1704 5.45477\" nodeId=\"38\">\n                        <TransformGroup name=\"goat_ear_L_skin_jnt_02\" translation=\"0.050699 0 0\" nodeId=\"39\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0483064 -0.0295654 0.0324455\" rotation=\"-61.4443 -30.4539 74.5789\" scale=\"1 0.65 0.65\" referenceId=\"1\" nodeId=\"72\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"0.00298455 0.0108883 0.0109211\" rotation=\"-33.0674 -78.7193 34.3665\" scale=\"1 0.4 0.4\" referenceId=\"2\" nodeId=\"104\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"goat_ear_R_skin_jnt_01\" translation=\"-0.089456 0.031371 -0.019579\" rotation=\"-121.609 26.1704 -5.45477\" nodeId=\"105\">\n                        <TransformGroup name=\"goat_ear_R_skin_jnt_02\" translation=\"-0.050699 0 0\" nodeId=\"106\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"-0.013465 0.0307352 -0.0460135\" rotation=\"88.348 -30.6117 77.8857\" scale=\"1 0.65 0.65\" referenceId=\"3\" nodeId=\"128\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"goat_eyeball_L_skin_jnt\" translation=\"0.06954 -0.000126 0.079823\" rotation=\"26.5912 -29.6438 -28.8681\" nodeId=\"147\"/>\n                      <TransformGroup name=\"goat_eyeball_R_skin_jnt\" translation=\"-0.06954 -0.000126 0.079823\" rotation=\"-153.409 29.6438 28.8681\" nodeId=\"148\"/>\n                      <TransformGroup name=\"goat_eyelid_up_L_skin_jnt\" translation=\"0.087724 0.000127 0.093999\" rotation=\"26.5912 -29.6438 -28.8681\" nodeId=\"149\"/>\n                      <TransformGroup name=\"goat_eyelid_up_R_skin_jnt\" translation=\"-0.087724 0.000127 0.093999\" rotation=\"-26.5912 -29.6438 -151.132\" nodeId=\"150\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"goat_scapula_L_skin_jnt\" translation=\"-0.080749 0.12662 -0.04019\" rotation=\"0 90 0\" nodeId=\"151\">\n                <TransformGroup name=\"goat_shoulder_L_skin_jnt\" translation=\"0.037144 -0.144808 0.084533\" rotation=\"0 36.1408 -90\" nodeId=\"152\">\n                  <TransformGroup name=\"goat_elbow_L_skin_jnt\" translation=\"0.191633 0 0\" rotation=\"0 -43.739 0\" nodeId=\"153\">\n                    <TransformGroup name=\"goat_wrist_L_skin_jnt\" translation=\"0.236785 0 0\" rotation=\"0 7.81611 0\" nodeId=\"154\">\n                      <TransformGroup name=\"goat_front_foot_L_skin_jnt\" translation=\"0.156508 0 0\" rotation=\"-4.99145 -37.7062 3.04263\" nodeId=\"155\">\n                        <TransformGroup name=\"goat_front_ball_L_skin_jnt\" translation=\"0.057999 0 0\" rotation=\"0 -22.2081 0\" nodeId=\"156\"/>\n                      </TransformGroup>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"goat_scapula_R_skin_jnt\" translation=\"-0.080749 0.12662 0.04019\" rotation=\"180 90 0\" nodeId=\"157\">\n                <TransformGroup name=\"goat_shoulder_R_skin_jnt\" translation=\"-0.037144 0.144808 -0.084533\" rotation=\"0 36.1408 -90\" nodeId=\"158\">\n                  <TransformGroup name=\"goat_elbow_R_skin_jnt\" translation=\"-0.191633 0 0\" rotation=\"0 -43.739 0\" nodeId=\"159\">\n                    <TransformGroup name=\"goat_wrist_R_skin_jnt\" translation=\"-0.236785 0 0\" rotation=\"0 7.81611 0\" nodeId=\"160\">\n                      <TransformGroup name=\"goat_front_foot_R_skin_jnt\" translation=\"-0.156508 0 0\" rotation=\"-4.99145 -37.7062 3.04263\" nodeId=\"161\">\n                        <TransformGroup name=\"goat_front_ball_R_skin_jnt\" translation=\"-0.057999 0 0\" rotation=\"0 -22.2081 0\" nodeId=\"162\"/>\n                      </TransformGroup>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"goat_breast_skin_jnt\" translation=\"0.139562 -0.103022 0\" rotation=\"22.7939 90 0\" nodeId=\"163\"/>\n            </TransformGroup>\n            <TransformGroup name=\"goat_belly_skin_jnt\" translation=\"0 -0.304226 0\" rotation=\"0 90 0\" nodeId=\"164\"/>\n          </TransformGroup>\n          <TransformGroup name=\"goat_tail_skin_jnt_01\" translation=\"-0.078399 0.097421 0\" rotation=\"0 180 15.8785\" nodeId=\"165\">\n            <TransformGroup name=\"goat_tail_skin_jnt_02\" translation=\"0.09634 0 0\" rotation=\"0 0 68.5097\" nodeId=\"166\">\n              <TransformGroup name=\"goat_tail_skin_jnt_03\" translation=\"0.08419 0 0\" rotation=\"0 0 26.7935\" nodeId=\"167\"/>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"goat_hip_L_skin_jnt\" translation=\"-0.029662 0.072579 -0.10286\" rotation=\"-102.671 4.9923 -76.1184\" nodeId=\"168\">\n            <TransformGroup name=\"goat_knee_L_skin_jnt\" translation=\"0.232383 0 0\" rotation=\"0 49.0586 0\" nodeId=\"169\">\n              <TransformGroup name=\"goat_ankle_L_skin_jnt\" translation=\"0.263265 0 0\" rotation=\"0 -36.0574 0\" nodeId=\"170\">\n                <TransformGroup name=\"goat_hind_foot_L_skin_jnt\" translation=\"0.195088 0 0\" rotation=\"1.86859 -32.8225 -2.76617\" nodeId=\"171\">\n                  <TransformGroup name=\"goat_hind_ball_L_skin_jnt\" translation=\"0.047636 0 0\" rotation=\"0 -21.8275 0\" nodeId=\"172\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"goat_hip_R_skin_jnt\" translation=\"-0.029662 0.072579 0.10286\" rotation=\"-102.671 4.9923 103.882\" nodeId=\"173\">\n            <TransformGroup name=\"goat_knee_R_skin_jnt\" translation=\"-0.232383 0 0\" rotation=\"0 49.0586 0\" nodeId=\"174\">\n              <TransformGroup name=\"goat_ankle_R_skin_jnt\" translation=\"-0.263265 0 0\" rotation=\"0 -36.0574 0\" nodeId=\"175\">\n                <TransformGroup name=\"goat_hind_foot_R_skin_jnt\" translation=\"-0.195088 0 0\" rotation=\"1.8686 -32.8225 -2.76618\" nodeId=\"176\">\n                  <TransformGroup name=\"goat_hind_ball_R_skin_jnt\" translation=\"-0.047636 0 0\" rotation=\"0 -21.8275 0\" nodeId=\"177\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"goat_udder_L_skin_jnt\" translation=\"0.04371 -0.323452 -0.039471\" rotation=\"0 90 0\" nodeId=\"178\"/>\n          <TransformGroup name=\"goat_udder_R_skin_jnt\" translation=\"0.04371 -0.323452 0.039471\" rotation=\"-180 90 0\" nodeId=\"179\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"goat\" nodeId=\"180\">\n      <Shape name=\"goat_body\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"181\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"27 28 29 30 31 33 34 38 105 151 152 153 154 155 157 158 159 160 161 165 166 168 169 170 171 173 174 175 176 178 179 167 172 177 156 162 39 106 32 149 150 164 163\" materialIds=\"5\"/>\n      <Shape name=\"goat_horns\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"182\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"33\" materialIds=\"7\"/>\n      <TransformGroup name=\"internals\" nodeId=\"183\">\n        <Shape name=\"tongue\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"184\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"34 35\" materialIds=\"5\"/>\n        <Shape name=\"teeth_bottom\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"185\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"34\" materialIds=\"5\"/>\n        <Shape name=\"lashes_l\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"186\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"33 149\" materialIds=\"6\"/>\n        <Shape name=\"lashes_r\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"187\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"33 150\" materialIds=\"6\"/>\n        <Shape name=\"eye_r\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"188\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"148\" materialIds=\"5\"/>\n        <Shape name=\"eye_l\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"189\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"147\" materialIds=\"5\"/>\n      </TransformGroup>\n      <TransformGroup name=\"fur\" nodeId=\"190\">\n        <Shape name=\"tail\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"191\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"26 27 165 166 167\" materialIds=\"6\"/>\n        <Shape name=\"whiskers\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"192\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"33 34 35 36 37\" materialIds=\"6\"/>\n        <Shape name=\"beard\" shapeId=\"11\" clipDistance=\"300\" nodeId=\"193\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"33 34 35 36 37\" materialIds=\"6\"/>\n        <Shape name=\"ear_l\" shapeId=\"12\" clipDistance=\"300\" nodeId=\"194\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"33 38 39 147 149\" materialIds=\"6\"/>\n        <Shape name=\"ear_r\" shapeId=\"13\" clipDistance=\"300\" nodeId=\"195\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"33 105 106 148 150\" materialIds=\"6\"/>\n        <Shape name=\"back_fur\" shapeId=\"14\" clipDistance=\"300\" nodeId=\"196\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"26 27 28 29 30 31 32 33 34 38 105 151 157 165 166 167 168 173\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"proxy\" shapeId=\"15\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"197\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"8\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/sheep/goatBaby.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"goatBaby.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"7\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"9\" filename=\"$dataS/character/animals/domesticated/goat/goatHairs_diffuse.png\"/>\n    <File fileId=\"4\" filename=\"$dataS/character/animals/domesticated/goat/goatKid/goatKid_diffuse.png\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/goat/goatKid/goatKid_normal.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/goat/goatKid/goatKid_specular.png\"/>\n    <File fileId=\"1\" filename=\"../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../monitor.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"goatKid_01_mat\" materialId=\"5\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.6 0.567 0.567 1\"/>\n    </Material>\n    <Material name=\"goatKid_02_mat\" materialId=\"6\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"4\"/>\n      <Glossmap fileId=\"6\"/>\n      <Custommap name=\"alphaMap\" fileId=\"9\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.6 0.567 0.567 1\"/>\n    </Material>\n    <Material name=\"standardSurface1\" materialId=\"7\" diffuseColor=\"0.4 0.4 0.4 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"goatBaby.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"goatKidSkeleton\" nodeId=\"21\">\n      <TransformGroup name=\"goatKid_root_skin_jnt\" nodeId=\"22\">\n        <TransformGroup name=\"goatKid_spine_skin_jnt_01\" translation=\"0 0.364464 -0.143633\" rotation=\"0 -90 0\" nodeId=\"23\">\n          <TransformGroup name=\"goatKid_spine_skin_jnt_02\" translation=\"0.155697 0 0\" nodeId=\"24\">\n            <TransformGroup name=\"goatKid_spine_skin_jnt_03\" translation=\"0.155697 0 0\" nodeId=\"25\">\n              <TransformGroup name=\"goatKid_neck_skin_jnt_01\" rotation=\"0 0 52.984\" nodeId=\"26\">\n                <TransformGroup name=\"goatKid_neck_skin_jnt_02\" translation=\"0.085584 0 0\" nodeId=\"27\">\n                  <TransformGroup name=\"goatKid_neck_skin_jnt_03\" translation=\"0.085584 0 0\" nodeId=\"28\">\n                    <TransformGroup name=\"goatKid_head_skin_jnt\" rotation=\"52.984 90 0\" nodeId=\"29\">\n                      <TransformGroup name=\"goatKid_jaw_skin_jnt\" translation=\"0 -0.003966 0.007854\" rotation=\"90 -45.0833 -90\" nodeId=\"30\">\n                        <TransformGroup name=\"goatKid_tongue_skin_jnt_01\" translation=\"0.053351 0.00055 0\" rotation=\"0 0 6.37035\" nodeId=\"31\">\n                          <TransformGroup name=\"goatKid_tongue_skin_jnt_02\" translation=\"0.023272 0 0\" rotation=\"0 0 -1.94588\" nodeId=\"32\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"goatKid_ear_L_skin_jnt_01\" translation=\"0.045349 0.023873 -0.022757\" rotation=\"13.5757 -17.1444 40.9221\" nodeId=\"33\">\n                        <TransformGroup name=\"goatKid_ear_L_skin_jnt_02\" translation=\"0.055575 0 0\" nodeId=\"34\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0029322 -0.0503338 0.0080234\" rotation=\"-31.2161 -66.334 33.4898\" scale=\"1 0.65 0.65\" referenceId=\"1\" nodeId=\"67\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"0.0101348 -0.00240072 0.00380308\" rotation=\"58.4897 -79.2584 -58.9431\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"99\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"goatKid_ear_R_skin_jnt_01\" translation=\"-0.045349 0.023873 -0.022757\" rotation=\"-166.424 17.1444 -40.9221\" nodeId=\"100\">\n                        <TransformGroup name=\"goatKid_ear_R_skin_jnt_02\" translation=\"-0.055575 0 0\" nodeId=\"101\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"-0.00610688 0.0415645 -0.027917\" rotation=\"76.5451 -53.0243 82.5381\" scale=\"1 0.65 0.65\" referenceId=\"3\" nodeId=\"123\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"goatKid_eyeball_L_skin_jnt\" translation=\"0.038172 0.012473 0.030911\" rotation=\"16.1166 -35.7192 -24.7876\" nodeId=\"142\"/>\n                      <TransformGroup name=\"goatKid_eyeball_R_skin_jnt\" translation=\"-0.038172 0.012473 0.030911\" rotation=\"-163.883 35.7192 24.7876\" nodeId=\"143\"/>\n                      <TransformGroup name=\"goatKid_eyelid_up_L_skin_jnt\" translation=\"0.045668 0.017075 0.037029\" rotation=\"15.4889 -35.9664 -23.6292\" nodeId=\"144\"/>\n                      <TransformGroup name=\"goatKid_eyelid_up_R_skin_jnt\" translation=\"-0.045668 0.017075 0.037029\" rotation=\"-15.4889 -35.9664 -156.371\" nodeId=\"145\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"goatKid_scapula_L_skin_jnt\" translation=\"-0.042093 0.034986 -0.018424\" rotation=\"0 90 0\" nodeId=\"146\">\n                <TransformGroup name=\"goatKid_shoulder_L_skin_jnt\" translation=\"0.026543 -0.083066 0.034429\" rotation=\"0 31.3536 -90\" nodeId=\"147\">\n                  <TransformGroup name=\"goatKid_elbow_L_skin_jnt\" translation=\"0.074876 0 0\" rotation=\"0 -37.9515 0\" nodeId=\"148\">\n                    <TransformGroup name=\"goatKid_wrist_L_skin_jnt\" translation=\"0.098106 0 0\" rotation=\"0 10.9814 0\" nodeId=\"149\">\n                      <TransformGroup name=\"goatKid_front_foot_L_skin_jnt\" translation=\"0.097413 0 0\" rotation=\"0 -30.3666 0\" nodeId=\"150\">\n                        <TransformGroup name=\"goatKid_front_ball_L_skin_jnt\" translation=\"0.039035 0 0\" rotation=\"0 -23.2152 0\" nodeId=\"151\"/>\n                      </TransformGroup>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"goatKid_scapula_R_skin_jnt\" translation=\"-0.042093 0.034986 0.018424\" rotation=\"180 90 0\" nodeId=\"152\">\n                <TransformGroup name=\"goatKid_shoulder_R_skin_jnt\" translation=\"-0.026543 0.083066 -0.034429\" rotation=\"0 31.3536 -90\" nodeId=\"153\">\n                  <TransformGroup name=\"goatKid_elbow_R_skin_jnt\" translation=\"-0.074876 0 0\" rotation=\"0 -37.9515 0\" nodeId=\"154\">\n                    <TransformGroup name=\"goatKid_wrist_R_skin_jnt\" translation=\"-0.098106 0 0\" rotation=\"0 10.9814 0\" nodeId=\"155\">\n                      <TransformGroup name=\"goatKid_front_foot_R_skin_jnt\" translation=\"-0.097413 0 0\" rotation=\"0 -30.3666 0\" nodeId=\"156\">\n                        <TransformGroup name=\"goatKid_front_ball_R_skin_jnt\" translation=\"-0.039035 0 0\" rotation=\"0 -23.2152 0\" nodeId=\"157\"/>\n                      </TransformGroup>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"goatKid_breast_skin_jnt\" translation=\"0.030395 -0.101109 1.8e-05\" rotation=\"51.5504 90 0\" nodeId=\"158\"/>\n            </TransformGroup>\n            <TransformGroup name=\"goatKid_belly_skin_jnt\" translation=\"0 -0.116378 0\" rotation=\"0 90 0\" nodeId=\"159\"/>\n          </TransformGroup>\n          <TransformGroup name=\"goatKid_tail_skin_jnt_01\" translation=\"-0.01314 0.047571 0\" rotation=\"0 180 13.3455\" nodeId=\"160\">\n            <TransformGroup name=\"goatKid_tail_skin_jnt_02\" translation=\"0.05334 0 0\" rotation=\"0 0 -27.5049\" nodeId=\"161\">\n              <TransformGroup name=\"goatKid_tail_skin_jnt_03\" translation=\"0.055162 0 0\" rotation=\"0 0 -2.07533\" nodeId=\"162\"/>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"goatKid_hip_L_skin_jnt\" translation=\"-0.002809 0.008759 -0.041288\" rotation=\"-90 0 -78.7803\" nodeId=\"163\">\n            <TransformGroup name=\"goatKid_knee_L_skin_jnt\" translation=\"0.111593 0 0\" rotation=\"0 45.3856 0\" nodeId=\"164\">\n              <TransformGroup name=\"goatKid_ankle_L_skin_jnt\" translation=\"0.111617 0 0\" rotation=\"0 -37.8269 0\" nodeId=\"165\">\n                <TransformGroup name=\"goatKid_hind_foot_L_skin_jnt\" translation=\"0.114411 0 0\" rotation=\"0 -19.9319 0\" nodeId=\"166\">\n                  <TransformGroup name=\"goatKid_hind_ball_L_skin_jnt\" translation=\"0.041646 0 0\" rotation=\"0 -31.5823 0\" nodeId=\"167\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"goatKid_hip_R_skin_jnt\" translation=\"-0.002809 0.008759 0.041289\" rotation=\"-90 0 101.22\" nodeId=\"168\">\n            <TransformGroup name=\"goatKid_knee_R_skin_jnt\" translation=\"-0.111593 0 0\" rotation=\"0 45.3856 0\" nodeId=\"169\">\n              <TransformGroup name=\"goatKid_ankle_R_skin_jnt\" translation=\"-0.111617 0 0\" rotation=\"0 -37.8269 0\" nodeId=\"170\">\n                <TransformGroup name=\"goatKid_hind_foot_R_skin_jnt\" translation=\"-0.114411 0 0\" rotation=\"0 -19.9319 0\" nodeId=\"171\">\n                  <TransformGroup name=\"goatKid_hind_ball_R_skin_jnt\" translation=\"-0.041646 0 0\" rotation=\"0 -31.5823 0\" nodeId=\"172\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"Goatkid\" nodeId=\"173\">\n      <Shape name=\"goatkid_body\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"174\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"23 24 25 26 27 28 29 30 146 147 148 149 150 151 152 153 154 155 156 157 159 163 164 165 166 167 168 169 170 171 172 160 161 162 34 33 101 100 144 145 158\" materialIds=\"5\"/>\n      <Shape name=\"tongue\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"175\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"32 31 30\" materialIds=\"5\"/>\n      <Shape name=\"mouth_top\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"176\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"29\" materialIds=\"5\"/>\n      <Shape name=\"mouth_bottom\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"177\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"30\" materialIds=\"5\"/>\n      <Shape name=\"eye_l\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"178\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"142\" materialIds=\"5\"/>\n      <Shape name=\"eye_r\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"179\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"143\" materialIds=\"5\"/>\n      <TransformGroup name=\"Hair\" nodeId=\"180\">\n        <Shape name=\"ear\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"181\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"29 33 34 100 101 142 143 144 145\" materialIds=\"6\"/>\n        <Shape name=\"tail\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"182\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 160 161 162 163 168\" materialIds=\"6\"/>\n        <Shape name=\"mainHair\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"183\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"27 28 29 30 33 34 100 101 142 143 144 145\" materialIds=\"6\"/>\n        <Shape name=\"lashes\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"184\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"29 30 33 100 142 143 144 145\" materialIds=\"6\"/>\n        <Shape name=\"whiskers\" shapeId=\"11\" clipDistance=\"300\" nodeId=\"185\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"29 30 31 32\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"proxy\" shapeId=\"12\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"186\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/sheep/goatKid.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"goatKid.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"7\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"9\" filename=\"$dataS/character/animals/domesticated/goat/goatHairs_diffuse.png\"/>\n    <File fileId=\"4\" filename=\"$dataS/character/animals/domesticated/goat/goatKid/goatKid_diffuse.png\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/goat/goatKid/goatKid_normal.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/goat/goatKid/goatKid_specular.png\"/>\n    <File fileId=\"1\" filename=\"../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../monitor.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"goatKid_01_mat\" materialId=\"5\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.6 0.567 0.567 1\"/>\n    </Material>\n    <Material name=\"goatKid_02_mat\" materialId=\"6\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"4\"/>\n      <Glossmap fileId=\"6\"/>\n      <Custommap name=\"alphaMap\" fileId=\"9\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.6 0.567 0.567 1\"/>\n    </Material>\n    <Material name=\"standardSurface1\" materialId=\"7\" diffuseColor=\"0.4 0.4 0.4 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"goatKid.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"goatKidSkeleton\" nodeId=\"21\">\n      <TransformGroup name=\"goatKid_root_skin_jnt\" nodeId=\"22\">\n        <TransformGroup name=\"goatKid_spine_skin_jnt_01\" translation=\"0 0.520663 -0.20519\" rotation=\"0 -90 0\" nodeId=\"23\">\n          <TransformGroup name=\"goatKid_spine_skin_jnt_02\" translation=\"0.222424 0 0\" nodeId=\"24\">\n            <TransformGroup name=\"goatKid_spine_skin_jnt_03\" translation=\"0.222424 0 0\" nodeId=\"25\">\n              <TransformGroup name=\"goatKid_neck_skin_jnt_01\" rotation=\"0 0 52.984\" nodeId=\"26\">\n                <TransformGroup name=\"goatKid_neck_skin_jnt_02\" translation=\"0.122264 0 0\" nodeId=\"27\">\n                  <TransformGroup name=\"goatKid_neck_skin_jnt_03\" translation=\"0.122264 0 0\" nodeId=\"28\">\n                    <TransformGroup name=\"goatKid_head_skin_jnt\" rotation=\"52.984 90 0\" nodeId=\"29\">\n                      <TransformGroup name=\"goatKid_jaw_skin_jnt\" translation=\"0 -0.005665 0.011219\" rotation=\"90 -45.0833 -90\" nodeId=\"30\">\n                        <TransformGroup name=\"goatKid_tongue_skin_jnt_01\" translation=\"0.076216 0.000785 0\" rotation=\"0 0 6.37035\" nodeId=\"31\">\n                          <TransformGroup name=\"goatKid_tongue_skin_jnt_02\" translation=\"0.033246 0 0\" rotation=\"0 0 -1.94588\" nodeId=\"32\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"goatKid_ear_L_skin_jnt_01\" translation=\"0.064785 0.034105 -0.03251\" rotation=\"13.5757 -17.1444 40.9221\" nodeId=\"33\">\n                        <TransformGroup name=\"goatKid_ear_L_skin_jnt_02\" translation=\"0.079393 0 0\" nodeId=\"34\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.00382377 -0.063859 0.0128239\" rotation=\"-27.1456 -71.2698 28.4311\" scale=\"1 0.65 0.65\" referenceId=\"1\" nodeId=\"67\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.00347323 6.56469e-08 0.00135755\" rotation=\"28.3458 -65.5664 -30.6497\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"99\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"goatKid_ear_R_skin_jnt_01\" translation=\"-0.064785 0.034105 -0.03251\" rotation=\"-166.424 17.1444 -40.9221\" nodeId=\"100\">\n                        <TransformGroup name=\"goatKid_ear_R_skin_jnt_02\" translation=\"-0.079393 0 0\" nodeId=\"101\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"-0.00896819 0.0591462 -0.0196824\" rotation=\"79.5897 70.9081 -99.4671\" scale=\"1 0.65 0.65\" referenceId=\"3\" nodeId=\"123\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"goatKid_eyeball_L_skin_jnt\" translation=\"0.054531 0.017819 0.044159\" rotation=\"16.1166 -35.7192 -24.7876\" nodeId=\"142\"/>\n                      <TransformGroup name=\"goatKid_eyeball_R_skin_jnt\" translation=\"-0.054531 0.017819 0.044159\" rotation=\"-163.883 35.7192 24.7876\" nodeId=\"143\"/>\n                      <TransformGroup name=\"goatKid_eyelid_up_L_skin_jnt\" translation=\"0.06524 0.024392 0.052898\" rotation=\"15.4889 -35.9664 -23.6292\" nodeId=\"144\"/>\n                      <TransformGroup name=\"goatKid_eyelid_up_R_skin_jnt\" translation=\"-0.06524 0.024392 0.052898\" rotation=\"-15.4889 -35.9664 -156.371\" nodeId=\"145\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"goatKid_scapula_L_skin_jnt\" translation=\"-0.060132 0.049979 -0.02632\" rotation=\"0 90 0\" nodeId=\"146\">\n                <TransformGroup name=\"goatKid_shoulder_L_skin_jnt\" translation=\"0.037919 -0.118666 0.049184\" rotation=\"0 31.3536 -90\" nodeId=\"147\">\n                  <TransformGroup name=\"goatKid_elbow_L_skin_jnt\" translation=\"0.106966 0 0\" rotation=\"0 -37.9515 0\" nodeId=\"148\">\n                    <TransformGroup name=\"goatKid_wrist_L_skin_jnt\" translation=\"0.140151 0 0\" rotation=\"0 10.9814 0\" nodeId=\"149\">\n                      <TransformGroup name=\"goatKid_front_foot_L_skin_jnt\" translation=\"0.139162 0 0\" rotation=\"0 -30.3666 0\" nodeId=\"150\">\n                        <TransformGroup name=\"goatKid_front_ball_L_skin_jnt\" translation=\"0.055764 0 0\" rotation=\"0 -23.2152 0\" nodeId=\"151\"/>\n                      </TransformGroup>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"goatKid_scapula_R_skin_jnt\" translation=\"-0.060132 0.049979 0.02632\" rotation=\"180 90 0\" nodeId=\"152\">\n                <TransformGroup name=\"goatKid_shoulder_R_skin_jnt\" translation=\"-0.037919 0.118666 -0.049184\" rotation=\"0 31.3536 -90\" nodeId=\"153\">\n                  <TransformGroup name=\"goatKid_elbow_R_skin_jnt\" translation=\"-0.106966 0 0\" rotation=\"0 -37.9515 0\" nodeId=\"154\">\n                    <TransformGroup name=\"goatKid_wrist_R_skin_jnt\" translation=\"-0.140151 0 0\" rotation=\"0 10.9814 0\" nodeId=\"155\">\n                      <TransformGroup name=\"goatKid_front_foot_R_skin_jnt\" translation=\"-0.139162 0 0\" rotation=\"0 -30.3666 0\" nodeId=\"156\">\n                        <TransformGroup name=\"goatKid_front_ball_R_skin_jnt\" translation=\"-0.055764 0 0\" rotation=\"0 -23.2152 0\" nodeId=\"157\"/>\n                      </TransformGroup>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"goatKid_breast_skin_jnt\" translation=\"0.043421 -0.144441 2.6e-05\" rotation=\"51.5504 90 0\" nodeId=\"158\"/>\n            </TransformGroup>\n            <TransformGroup name=\"goatKid_belly_skin_jnt\" translation=\"0 -0.166255 0\" rotation=\"0 90 0\" nodeId=\"159\"/>\n          </TransformGroup>\n          <TransformGroup name=\"goatKid_tail_skin_jnt_01\" translation=\"-0.018772 0.067959 0\" rotation=\"0 180 13.3455\" nodeId=\"160\">\n            <TransformGroup name=\"goatKid_tail_skin_jnt_02\" translation=\"0.0762 0 0\" rotation=\"0 0 -27.5049\" nodeId=\"161\">\n              <TransformGroup name=\"goatKid_tail_skin_jnt_03\" translation=\"0.078802 0 0\" rotation=\"0 0 -2.07533\" nodeId=\"162\"/>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"goatKid_hip_L_skin_jnt\" translation=\"-0.004013 0.012513 -0.058984\" rotation=\"-90 0 -78.7803\" nodeId=\"163\">\n            <TransformGroup name=\"goatKid_knee_L_skin_jnt\" translation=\"0.159419 0 0\" rotation=\"0 45.3856 0\" nodeId=\"164\">\n              <TransformGroup name=\"goatKid_ankle_L_skin_jnt\" translation=\"0.159453 0 0\" rotation=\"0 -37.8269 0\" nodeId=\"165\">\n                <TransformGroup name=\"goatKid_hind_foot_L_skin_jnt\" translation=\"0.163444 0 0\" rotation=\"0 -19.9319 0\" nodeId=\"166\">\n                  <TransformGroup name=\"goatKid_hind_ball_L_skin_jnt\" translation=\"0.059494 0 0\" rotation=\"0 -31.5823 0\" nodeId=\"167\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"goatKid_hip_R_skin_jnt\" translation=\"-0.004013 0.012513 0.058984\" rotation=\"-90 0 101.22\" nodeId=\"168\">\n            <TransformGroup name=\"goatKid_knee_R_skin_jnt\" translation=\"-0.159419 0 0\" rotation=\"0 45.3856 0\" nodeId=\"169\">\n              <TransformGroup name=\"goatKid_ankle_R_skin_jnt\" translation=\"-0.159453 0 0\" rotation=\"0 -37.8269 0\" nodeId=\"170\">\n                <TransformGroup name=\"goatKid_hind_foot_R_skin_jnt\" translation=\"-0.163444 0 0\" rotation=\"0 -19.9319 0\" nodeId=\"171\">\n                  <TransformGroup name=\"goatKid_hind_ball_R_skin_jnt\" translation=\"-0.059494 0 0\" rotation=\"0 -31.5823 0\" nodeId=\"172\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"Goatkid\" nodeId=\"173\">\n      <Shape name=\"goatkid_body\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"174\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"23 24 25 26 27 28 29 30 146 147 148 149 150 151 152 153 154 155 156 157 159 163 164 165 166 167 168 169 170 171 172 160 161 162 34 33 101 100 144 145 158\" materialIds=\"5\"/>\n      <Shape name=\"tongue\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"175\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"32 31 30\" materialIds=\"5\"/>\n      <Shape name=\"mouth_top\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"176\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"29\" materialIds=\"5\"/>\n      <Shape name=\"mouth_bottom\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"177\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"30\" materialIds=\"5\"/>\n      <Shape name=\"eye_l\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"178\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"142\" materialIds=\"5\"/>\n      <Shape name=\"eye_r\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"179\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"143\" materialIds=\"5\"/>\n      <TransformGroup name=\"Hair\" nodeId=\"180\">\n        <Shape name=\"ear\" shapeId=\"7\" clipDistance=\"300\" nodeId=\"181\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"29 33 34 100 101 142 143 144 145\" materialIds=\"6\"/>\n        <Shape name=\"tail\" shapeId=\"8\" clipDistance=\"300\" nodeId=\"182\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"22 23 160 161 162 163 168\" materialIds=\"6\"/>\n        <Shape name=\"mainHair\" shapeId=\"9\" clipDistance=\"300\" nodeId=\"183\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"27 28 29 30 33 34 100 101 142 143 144 145\" materialIds=\"6\"/>\n        <Shape name=\"lashes\" shapeId=\"10\" clipDistance=\"300\" nodeId=\"184\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"29 30 33 100 142 143 144 145\" materialIds=\"6\"/>\n        <Shape name=\"whiskers\" shapeId=\"11\" clipDistance=\"300\" nodeId=\"185\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"29 30 31 32\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"proxy\" shapeId=\"12\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"186\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/sheep/sheepEwe.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"sheepEwe.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"7\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"9\" filename=\"$dataS/character/animals/domesticated/sheep/ewe/sheepEwe_alpha.png\"/>\n    <File fileId=\"4\" filename=\"$dataS/character/animals/domesticated/sheep/ewe/sheepEwe_diffuse.png\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/sheep/ewe/sheepEwe_normal.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/sheep/ewe/sheepEwe_specular.png\"/>\n    <File fileId=\"1\" filename=\"../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../monitor.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"lambert1\" materialId=\"5\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n    <Material name=\"sheepEwe_mat\" materialId=\"6\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"sheepEwe_mat1\" materialId=\"7\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <Custommap name=\"alphaMap\" fileId=\"9\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"sheepEwe.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"sheepSkeleton\" nodeId=\"14\">\n      <TransformGroup name=\"sheep_root_skin_jnt\" nodeId=\"15\">\n        <TransformGroup name=\"sheep_spine_skin_jnt_01\" translation=\"0 0.807172 -0.451203\" rotation=\"0 -90 0\" nodeId=\"16\">\n          <TransformGroup name=\"sheep_spine_skin_jnt_02\" translation=\"0.489589 0 0\" nodeId=\"17\">\n            <TransformGroup name=\"sheep_spine_skin_jnt_03\" translation=\"0.489589 0 0\" nodeId=\"18\">\n              <TransformGroup name=\"sheep_neck_skin_jnt_01\" rotation=\"0 0 53.321\" nodeId=\"19\">\n                <TransformGroup name=\"sheep_neck_skin_jnt_02\" translation=\"0.176781 0 0\" nodeId=\"20\">\n                  <TransformGroup name=\"sheep_neck_skin_jnt_03\" translation=\"0.176781 0 0\" nodeId=\"21\">\n                    <TransformGroup name=\"sheep_head_skin_jnt\" translation=\"0 0.001889 0\" rotation=\"53.321 90 0\" nodeId=\"22\">\n                      <TransformGroup name=\"sheep_jaw_skin_jnt\" translation=\"0 -0.073905 0.087036\" rotation=\"90 -62.5957 -90\" nodeId=\"23\">\n                        <TransformGroup name=\"sheep_tongue_skin_jnt_01\" translation=\"0.188025 0.012373 0\" rotation=\"0 0 15.5725\" nodeId=\"24\">\n                          <TransformGroup name=\"sheep_tongue_skin_jnt_02\" translation=\"0.047016 0 0\" nodeId=\"25\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"sheep_ear_L_skin_jnt_01\" translation=\"0.133742 0.03069 0.0361\" rotation=\"111.271 -11.0456 14.5471\" nodeId=\"26\">\n                        <TransformGroup name=\"sheep_ear_L_skin_jnt_02\" translation=\"0.087036 0 0\" rotation=\"0 0 18.3548\" nodeId=\"27\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.0325173 0.0175395 0.0420355\" rotation=\"-91.5358 25.5613 62.2642\" scale=\"1 0.65 0.65\" referenceId=\"1\" nodeId=\"60\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.0101464 0.0125227 -0.0146744\" rotation=\"-4.48231e-05 6.83019e-05 77.7152\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"92\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"sheep_ear_R_skin_jnt_01\" translation=\"-0.133742 0.03069 0.0361\" rotation=\"68.7286 -11.0456 165.453\" nodeId=\"93\">\n                        <TransformGroup name=\"sheep_ear_R_skin_jnt_02\" translation=\"0.087036 0 0\" rotation=\"0 0 18.3548\" nodeId=\"94\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0225944 0.0162311 -0.0422979\" rotation=\"85.1081 -12.0491 70.4543\" scale=\"1 0.65 0.65\" referenceId=\"3\" nodeId=\"116\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"sheep_eyeball_L_skin_jnt\" translation=\"0.076989 0.016295 0.158813\" rotation=\"12.2761 -34.8415 -21.1991\" nodeId=\"135\"/>\n                      <TransformGroup name=\"sheep_eyeball_R_skin_jnt\" translation=\"-0.076989 0.016295 0.158813\" rotation=\"167.724 -34.8415 -158.801\" nodeId=\"136\"/>\n                      <TransformGroup name=\"sheep_eyelid_up_L_skin_jnt\" translation=\"0.10352 0.033664 0.178497\" rotation=\"-19.2832 -31.828 33.2124\" nodeId=\"137\"/>\n                      <TransformGroup name=\"sheep_eyelid_up_R_skin_jnt\" translation=\"-0.10352 0.033664 0.178497\" rotation=\"-160.717 -31.828 146.788\" nodeId=\"138\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"sheep_shoulder_L_skin_jnt\" translation=\"-0.025253 -0.115199 -0.109382\" rotation=\"0 0 -123.255\" nodeId=\"139\">\n                <TransformGroup name=\"sheep_elbow_L_skin_jnt\" translation=\"0.2072 0 0\" rotation=\"0 0 36.4989\" nodeId=\"140\">\n                  <TransformGroup name=\"sheep_wrist_L_skin_jnt\" translation=\"0.247448 0 0\" rotation=\"0 0 -11.859\" nodeId=\"141\">\n                    <TransformGroup name=\"sheep_front_foot_L_skin_jnt\" translation=\"0.17575 0 0\" rotation=\"0 0 38.2082\" nodeId=\"142\">\n                      <TransformGroup name=\"sheep_front_ball_L_skin_jnt\" translation=\"0.05657 0 0\" nodeId=\"143\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"sheep_shoulder_R_skin_jnt\" translation=\"-0.025253 -0.115199 0.109382\" rotation=\"0 0 56.7452\" nodeId=\"144\">\n                <TransformGroup name=\"sheep_elbow_R_skin_jnt\" translation=\"-0.2072 0 0\" rotation=\"0 0 36.4989\" nodeId=\"145\">\n                  <TransformGroup name=\"sheep_wrist_R_skin_jnt\" translation=\"-0.247448 0 0\" rotation=\"0 0 -11.859\" nodeId=\"146\">\n                    <TransformGroup name=\"sheep_front_foot_R_skin_jnt\" translation=\"-0.17575 0 0\" rotation=\"0 0 -141.792\" nodeId=\"147\">\n                      <TransformGroup name=\"sheep_front_ball_R_skin_jnt\" translation=\"0.05657 0 0\" nodeId=\"148\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"sheep_breast_skin_jnt\" translation=\"0.076203 -0.32941 0.007851\" rotation=\"106.077 92.0562 53.321\" nodeId=\"149\"/>\n            </TransformGroup>\n            <TransformGroup name=\"sheep_belly_skin_jnt\" translation=\"0 -0.431215 0\" rotation=\"0 90 0\" nodeId=\"150\"/>\n          </TransformGroup>\n          <TransformGroup name=\"sheep_tail_skin_jnt_01\" translation=\"-0.137473 0.068894 0\" rotation=\"0 180 57.4063\" nodeId=\"151\">\n            <TransformGroup name=\"sheep_tail_skin_jnt_02\" translation=\"0.097118 0 0\" rotation=\"0 0 -34.1176\" nodeId=\"152\">\n              <TransformGroup name=\"sheep_tail_skin_jnt_03\" translation=\"0.110022 0 0\" rotation=\"0 0 -4.5585\" nodeId=\"153\">\n                <TransformGroup name=\"sheep_tail_skin_jnt_04\" translation=\"0.125919 0 0\" rotation=\"0 0 6.7559\" nodeId=\"154\">\n                  <TransformGroup name=\"sheep_tail_skin_jnt_05\" translation=\"0.124962 0 0\" nodeId=\"155\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"sheep_hip_L_skin_jnt\" translation=\"-0.002091 0.018455 -0.109813\" rotation=\"0 0 -74.2924\" nodeId=\"156\">\n            <TransformGroup name=\"sheep_knee_L_skin_jnt\" translation=\"0.30742 0 0\" rotation=\"0 0 -51.1069\" nodeId=\"157\">\n              <TransformGroup name=\"sheep_ankle_L_skin_jnt\" translation=\"0.225274 0 0\" rotation=\"0 0 30.8791\" nodeId=\"158\">\n                <TransformGroup name=\"sheep_hind_foot_L_skin_jnt\" translation=\"0.23787 0 0\" rotation=\"-8.63452 6.01259 39.1179\" nodeId=\"159\">\n                  <TransformGroup name=\"sheep_hind_ball_L_skin_jnt\" translation=\"0.060784 0 0\" rotation=\"12.7672 0 0\" nodeId=\"160\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"sheep_hip_R_skin_jnt\" translation=\"-0.002091 0.018455 0.109813\" rotation=\"0 0 105.708\" nodeId=\"161\">\n            <TransformGroup name=\"sheep_knee_R_skin_jnt\" translation=\"-0.30742 0 0\" rotation=\"0 0 -51.1069\" nodeId=\"162\">\n              <TransformGroup name=\"sheep_ankle_R_skin_jnt\" translation=\"-0.225274 0 0\" rotation=\"0 0 30.8791\" nodeId=\"163\">\n                <TransformGroup name=\"sheep_hind_foot_R_skin_jnt\" translation=\"-0.23787 0 0\" rotation=\"8.63452 -6.01259 -140.882\" nodeId=\"164\">\n                  <TransformGroup name=\"sheep_hind_ball_R_skin_jnt\" translation=\"0.060784 0 0\" rotation=\"-12.7672 0 0\" nodeId=\"165\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"sheep\" lodDistance=\"0 10 30\" clipDistance=\"130\" nodeId=\"166\">\n      <TransformGroup name=\"LOD0\" nodeId=\"167\">\n        <Shape name=\"sheepEweBody\" translation=\"0 0.629663 0.213941\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"168\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"16 17 18 19 20 21 22 23 24 25 26 27 93 94 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165\" materialIds=\"6\"/>\n        <Shape name=\"alpha\" translation=\"0 0.770295 0.211412\" shapeId=\"2\" clipDistance=\"20\" nodeId=\"169\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"16 17 18 19 20 21 22 23 26 27 93 94 137 138 139 140 141 144 145 146 149 150 151 152 153 154 155 156 157 158 161 162 163\" materialIds=\"7\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD1\" nodeId=\"170\">\n        <Shape name=\"sheepEweBody\" translation=\"0 0.629663 0.213941\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"171\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"16 17 18 19 20 21 22 23 24 25 26 27 93 94 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165\" materialIds=\"6\"/>\n      </TransformGroup>\n      <TransformGroup name=\"LOD2\" nodeId=\"172\">\n        <Shape name=\"sheepEweBody\" translation=\"0 0.629663 0.213941\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"173\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"16 17 18 19 20 21 22 23 24 25 26 27 93 94 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165\" materialIds=\"6\"/>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"sheepProxy\" shapeId=\"5\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"174\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"5\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/sheep/sheepLamb.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"sheepLamb.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"7\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"9\" filename=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_alpha.png\"/>\n    <File fileId=\"4\" filename=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_diffuse.png\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_normal.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_specular.png\"/>\n    <File fileId=\"1\" filename=\"../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../monitor.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"sheepLamb_mat\" materialId=\"5\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"sheepLambAlpha_mat\" materialId=\"6\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <Custommap name=\"alphaMap\" fileId=\"9\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"standardSurface1\" materialId=\"7\" diffuseColor=\"0.4 0.4 0.4 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"sheepLamb.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"lambSkeleton\" nodeId=\"34\">\n      <TransformGroup name=\"lamb_root_skin_jnt\" nodeId=\"35\">\n        <TransformGroup name=\"lamb_spine_skin_jnt_01\" translation=\"0 0.5621 -0.241811\" rotation=\"0 -90 0\" nodeId=\"36\">\n          <TransformGroup name=\"lamb_spine_skin_jnt_02\" translation=\"0.240017 0 0\" nodeId=\"37\">\n            <TransformGroup name=\"lamb_spine_skin_jnt_03\" translation=\"0.240017 0 0\" nodeId=\"38\">\n              <TransformGroup name=\"lamb_neck_skin_jnt_01\" translation=\"0.045135 -0.042583 0\" rotation=\"0 0 61.2766\" nodeId=\"39\">\n                <TransformGroup name=\"lamb_neck_skin_jnt_02\" translation=\"0.144158 -0.002516 0\" rotation=\"0 0 -1.08254\" nodeId=\"40\">\n                  <TransformGroup name=\"lamb_neck_skin_jnt_03\" translation=\"0.144177 0.000208 0\" rotation=\"0 0 1.08254\" nodeId=\"41\">\n                    <TransformGroup name=\"lamb_head_skin_jnt\" rotation=\"61.2766 90 0\" nodeId=\"42\">\n                      <TransformGroup name=\"lamb_jaw_skin_jnt\" translation=\"0 0.018932 0.029801\" rotation=\"90 -52.1348 -90\" nodeId=\"43\">\n                        <TransformGroup name=\"lamb_tongue_skin_jnt_01\" translation=\"0.070414 -0.04263 0\" rotation=\"0 0 29.3412\" nodeId=\"44\">\n                          <TransformGroup name=\"lamb_tongue_skin_jnt_02\" translation=\"0.079381 0 0\" nodeId=\"45\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"lamb_ear_L_skin_jnt_01\" translation=\"0.073501 0.055885 0.005778\" rotation=\"-0.166973 10.3387 -71.9681\" nodeId=\"46\">\n                        <TransformGroup name=\"lamb_ear_L_skin_jnt_02\" translation=\"0 0.08586 0\" rotation=\"25.553 0 0\" nodeId=\"47\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.054066 0.010867 0.016549\" rotation=\"-9.60562 -66.343 91.3136\" scale=\"1 0.65 0.65\" referenceId=\"1\" nodeId=\"80\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.00806334 -0.016038 0.0171969\" rotation=\"46.9958 -53.8997 119.845\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"112\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"lamb_ear_R_skin_jnt_01\" translation=\"-0.073501 0.055885 0.005778\" rotation=\"0.166973 169.661 71.9681\" nodeId=\"113\">\n                        <TransformGroup name=\"lamb_ear_R_skin_jnt_02\" translation=\"0 0.08586 0\" rotation=\"-25.553 0 0\" nodeId=\"114\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0570999 -0.00377455 -0.0231786\" rotation=\"34.438 73.9637 116.286\" scale=\"1 0.65 0.65\" referenceId=\"3\" nodeId=\"136\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"lamb_eyeball_L_skin_jnt\" translation=\"0.065687 0.043444 0.081766\" rotation=\"12.1053 -37.0789 -15.7703\" nodeId=\"155\"/>\n                      <TransformGroup name=\"lamb_eyeball_R_skin_jnt\" translation=\"-0.065687 0.043444 0.081766\" rotation=\"167.895 -37.0789 -164.23\" nodeId=\"156\"/>\n                      <TransformGroup name=\"lamb_eyelid_up_L_skin_jnt\" translation=\"0.07953 0.052452 0.093325\" rotation=\"-17.3821 -34.9874 33.0556\" nodeId=\"157\"/>\n                      <TransformGroup name=\"lamb_eyelid_up_R_skin_jnt\" translation=\"-0.07953 0.052452 0.093325\" rotation=\"-161.785 -34.9874 146.944\" nodeId=\"158\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"lamb_shoulder_L_skin_jnt\" translation=\"0.001641 0.028427 -0.077493\" rotation=\"0 0 -96.8821\" nodeId=\"159\">\n                <TransformGroup name=\"lamb_elbow_L_skin_jnt\" translation=\"0.183892 0 0\" rotation=\"0 0 20.2081\" nodeId=\"160\">\n                  <TransformGroup name=\"lamb_wrist_L_skin_jnt\" translation=\"0.193935 0 0\" rotation=\"0 0 -15.6006\" nodeId=\"161\">\n                    <TransformGroup name=\"lamb_front_foot_L_skin_jnt\" translation=\"0.139995 0 0\" rotation=\"0 0 22.4136\" nodeId=\"162\">\n                      <TransformGroup name=\"lamb_front_ball_L_skin_jnt\" translation=\"0.039572 0 0\" nodeId=\"163\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"lamb_shoulder_R_skin_jnt\" translation=\"0.001641 0.028427 0.077493\" rotation=\"-2e-06 0 83.1179\" nodeId=\"164\">\n                <TransformGroup name=\"lamb_elbow_R_skin_jnt\" translation=\"-0.183892 0 0\" rotation=\"0 0 20.2081\" nodeId=\"165\">\n                  <TransformGroup name=\"lamb_wrist_R_skin_jnt\" translation=\"-0.193935 0 0\" rotation=\"0 0 -15.6006\" nodeId=\"166\">\n                    <TransformGroup name=\"lamb_front_foot_R_skin_jnt\" translation=\"-0.139995 0 0\" rotation=\"-2e-06 0 -157.586\" nodeId=\"167\">\n                      <TransformGroup name=\"lamb_front_ball_R_skin_jnt\" translation=\"0.039572 0 0\" nodeId=\"168\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"lamb_clavicle_R_skin_jnt\" translation=\"0.001641 0.028427 0.077493\" rotation=\"-2e-06 0 83.1179\" nodeId=\"169\"/>\n              <TransformGroup name=\"lamb_clavicle_L_skin_jnt\" translation=\"0.001641 0.028427 -0.077493\" rotation=\"0 0 -96.8821\" nodeId=\"170\"/>\n            </TransformGroup>\n            <TransformGroup name=\"lamb_belly_skin_jnt\" translation=\"0 -0.211777 0\" rotation=\"0 90 0\" nodeId=\"171\"/>\n          </TransformGroup>\n          <TransformGroup name=\"lamb_tail_skin_jnt_01\" translation=\"-0.056437 0.07982 0\" rotation=\"0 180 48.1928\" nodeId=\"172\">\n            <TransformGroup name=\"lamb_tail_skin_jnt_02\" translation=\"0.080096 0 0\" rotation=\"0 0 -39.9517\" nodeId=\"173\">\n              <TransformGroup name=\"lamb_tail_skin_jnt_03\" translation=\"0.09292 0 0\" rotation=\"0 0 -3.06238\" nodeId=\"174\">\n                <TransformGroup name=\"lamb_tail_skin_jnt_04\" translation=\"0.077368 0 0\" nodeId=\"175\"/>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"lamb_hip_L_skin_jnt\" translation=\"0.021059 0.056001 -0.071442\" rotation=\"0 0 -77.6774\" nodeId=\"176\">\n            <TransformGroup name=\"lamb_knee_L_skin_jnt\" translation=\"0.204459 0 0\" rotation=\"0 0 -45.0662\" nodeId=\"177\">\n              <TransformGroup name=\"lamb_ankle_L_skin_jnt\" translation=\"0.212573 0 0\" rotation=\"0 0 38.5601\" nodeId=\"178\">\n                <TransformGroup name=\"lamb_hind_foot_L_skin_jnt\" translation=\"0.16465 0 0\" rotation=\"0 0 21.0185\" nodeId=\"179\">\n                  <TransformGroup name=\"lamb_hind_ball_L_skin_jnt\" translation=\"0.040171 0 0\" nodeId=\"180\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"lamb_hip_R_skin_jnt\" translation=\"0.021059 0.056001 0.071442\" rotation=\"0 0 102.323\" nodeId=\"181\">\n            <TransformGroup name=\"lamb_knee_R_skin_jnt\" translation=\"-0.204459 0 0\" rotation=\"0 0 -45.0662\" nodeId=\"182\">\n              <TransformGroup name=\"lamb_ankle_R_skin_jnt\" translation=\"-0.212573 0 0\" rotation=\"0 0 38.5601\" nodeId=\"183\">\n                <TransformGroup name=\"lamb_hind_foot_R_skin_jnt\" translation=\"-0.16465 0 0\" rotation=\"0 0 -158.981\" nodeId=\"184\">\n                  <TransformGroup name=\"lamb_hind_ball_R_skin_jnt\" translation=\"0.040171 0 0\" nodeId=\"185\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"sheepLamb\" nodeId=\"186\">\n      <TransformGroup name=\"LOD_0\" nodeId=\"187\">\n        <Shape name=\"body\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"188\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"36 37 38 39 40 41 42 43 46 47 113 114 157 158 159 160 161 162 163 164 165 166 167 168 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 169 170\" materialIds=\"5\"/>\n        <Shape name=\"tongue\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"189\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"45 44 43\" materialIds=\"5\"/>\n        <Shape name=\"bottom\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"190\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43\" materialIds=\"5\"/>\n        <Shape name=\"eye_l\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"191\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"155\" materialIds=\"5\"/>\n        <Shape name=\"eye_r\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"192\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"156\" materialIds=\"5\"/>\n        <TransformGroup name=\"hair\" nodeId=\"193\">\n          <Shape name=\"hair1\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"194\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"46 47 113 114 157 158 42 41\" materialIds=\"6\"/>\n          <Shape name=\"lashes_L\" shapeId=\"7\" clipDistance=\"350\" nodeId=\"195\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"46 155 157 42\" materialIds=\"6\"/>\n          <Shape name=\"lashes_R\" shapeId=\"8\" clipDistance=\"350\" nodeId=\"196\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"113 156 158 42\" materialIds=\"6\"/>\n        </TransformGroup>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_1\" visibility=\"false\" nodeId=\"197\">\n        <Shape name=\"body\" shapeId=\"9\" clipDistance=\"350\" nodeId=\"198\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"tongue\" shapeId=\"10\" clipDistance=\"350\" nodeId=\"199\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"bottom\" shapeId=\"11\" clipDistance=\"350\" nodeId=\"200\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_r\" shapeId=\"12\" clipDistance=\"350\" nodeId=\"201\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_l\" shapeId=\"13\" clipDistance=\"350\" nodeId=\"202\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <TransformGroup name=\"hair\" nodeId=\"203\">\n          <Shape name=\"hair1\" shapeId=\"14\" clipDistance=\"300\" nodeId=\"204\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n          <Shape name=\"lashes_L\" shapeId=\"15\" clipDistance=\"350\" nodeId=\"205\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n          <Shape name=\"lashes_R\" shapeId=\"16\" clipDistance=\"350\" nodeId=\"206\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n        </TransformGroup>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_2\" visibility=\"false\" nodeId=\"207\">\n        <Shape name=\"body\" shapeId=\"17\" clipDistance=\"350\" nodeId=\"208\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"tongue\" shapeId=\"18\" clipDistance=\"350\" nodeId=\"209\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"bottom\" shapeId=\"19\" clipDistance=\"350\" nodeId=\"210\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_r\" shapeId=\"20\" clipDistance=\"350\" nodeId=\"211\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_l\" shapeId=\"21\" clipDistance=\"350\" nodeId=\"212\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <TransformGroup name=\"hair\" nodeId=\"213\">\n          <Shape name=\"lashes_L\" shapeId=\"15\" clipDistance=\"350\" nodeId=\"214\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n          <Shape name=\"lashes_R\" shapeId=\"16\" clipDistance=\"350\" nodeId=\"215\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n        </TransformGroup>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_3\" visibility=\"false\" nodeId=\"216\">\n        <Shape name=\"body\" shapeId=\"22\" clipDistance=\"350\" nodeId=\"217\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"tongue\" shapeId=\"23\" clipDistance=\"350\" nodeId=\"218\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"bottom\" shapeId=\"24\" clipDistance=\"350\" nodeId=\"219\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_r\" shapeId=\"20\" clipDistance=\"350\" nodeId=\"220\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_l\" shapeId=\"21\" clipDistance=\"350\" nodeId=\"221\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <TransformGroup name=\"hair\" nodeId=\"222\">\n          <Shape name=\"lashes_L\" shapeId=\"15\" clipDistance=\"350\" nodeId=\"223\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n          <Shape name=\"lashes_R\" shapeId=\"16\" clipDistance=\"350\" nodeId=\"224\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"proxy\" shapeId=\"25\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"225\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/sheep/sheepLambBaby.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"sheepLambBaby.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.4\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"7\" filename=\"$data/shaders/tileAndMirrorShader.xml\"/>\n    <File fileId=\"9\" filename=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_alpha.png\"/>\n    <File fileId=\"4\" filename=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_diffuse.png\"/>\n    <File fileId=\"5\" filename=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_normal.png\"/>\n    <File fileId=\"6\" filename=\"$dataS/character/animals/domesticated/sheep/lamb/sheepLamb_specular.png\"/>\n    <File fileId=\"1\" filename=\"../earTags.i3d\"/>\n    <File fileId=\"3\" filename=\"../earTagsRight.i3d\"/>\n    <File fileId=\"2\" filename=\"../monitor.i3d\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"sheepLamb_mat\" materialId=\"5\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"sheepLambAlpha_mat\" materialId=\"6\" customShaderId=\"7\" customShaderVariation=\"sssSpecularDirt_alphaMapSecondUV\">\n      <Texture fileId=\"4\"/>\n      <Normalmap fileId=\"5\"/>\n      <Glossmap fileId=\"6\"/>\n      <Custommap name=\"alphaMap\" fileId=\"9\"/>\n      <CustomParameter name=\"sssColor\" value=\"0.8 0.8 0.8 1\"/>\n    </Material>\n    <Material name=\"standardSurface1\" materialId=\"7\" diffuseColor=\"0.4 0.4 0.4 1\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"sheepLambBaby.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"lambSkeleton\" nodeId=\"34\">\n      <TransformGroup name=\"lamb_root_skin_jnt\" nodeId=\"35\">\n        <TransformGroup name=\"lamb_spine_skin_jnt_01\" translation=\"0 0.365365 -0.157177\" rotation=\"0 -90 0\" nodeId=\"36\">\n          <TransformGroup name=\"lamb_spine_skin_jnt_02\" translation=\"0.156011 0 0\" nodeId=\"37\">\n            <TransformGroup name=\"lamb_spine_skin_jnt_03\" translation=\"0.156011 0 0\" nodeId=\"38\">\n              <TransformGroup name=\"lamb_neck_skin_jnt_01\" translation=\"0.029338 -0.027679 0\" rotation=\"0 0 61.2766\" nodeId=\"39\">\n                <TransformGroup name=\"lamb_neck_skin_jnt_02\" translation=\"0.093703 -0.001636 0\" rotation=\"0 0 -1.08254\" nodeId=\"40\">\n                  <TransformGroup name=\"lamb_neck_skin_jnt_03\" translation=\"0.093715 0.000135 0\" rotation=\"0 0 1.08254\" nodeId=\"41\">\n                    <TransformGroup name=\"lamb_head_skin_jnt\" rotation=\"61.2766 90 0\" nodeId=\"42\">\n                      <TransformGroup name=\"lamb_jaw_skin_jnt\" translation=\"0 0.012306 0.019371\" rotation=\"90 -52.1348 -90\" nodeId=\"43\">\n                        <TransformGroup name=\"lamb_tongue_skin_jnt_01\" translation=\"0.045769 -0.02771 0\" rotation=\"0 0 29.3412\" nodeId=\"44\">\n                          <TransformGroup name=\"lamb_tongue_skin_jnt_02\" translation=\"0.051597 0 0\" nodeId=\"45\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"lamb_ear_L_skin_jnt_01\" translation=\"0.047776 0.036325 0.003756\" rotation=\"-0.166973 10.3387 -71.9681\" nodeId=\"46\">\n                        <TransformGroup name=\"lamb_ear_L_skin_jnt_02\" translation=\"0 0.055809 0\" rotation=\"25.553 0 0\" nodeId=\"47\">\n                          <ReferenceNode name=\"earTag\" translation=\"0.039281 0.0186993 0.0120638\" rotation=\"-146.54 56.3783 -56.883\" scale=\"1 0.65 0.65\" referenceId=\"1\" nodeId=\"80\"/>\n                          <ReferenceNode name=\"monitor\" translation=\"-0.00343011 -0.00848775 0.0148704\" rotation=\"-81.4301 -64.6603 82.2445\" scale=\"1 0.5 0.5\" referenceId=\"2\" nodeId=\"112\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"lamb_ear_R_skin_jnt_01\" translation=\"-0.047776 0.036325 0.003756\" rotation=\"0.166973 169.661 71.9681\" nodeId=\"113\">\n                        <TransformGroup name=\"lamb_ear_R_skin_jnt_02\" translation=\"0 0.055809 0\" rotation=\"-25.553 0 0\" nodeId=\"114\">\n                          <ReferenceNode name=\"earTagRight\" translation=\"0.0438017 0.00717332 -0.019155\" rotation=\"114.796 -70.822 -21.787\" scale=\"1 0.65 0.65\" referenceId=\"3\" nodeId=\"136\"/>\n                        </TransformGroup>\n                      </TransformGroup>\n                      <TransformGroup name=\"lamb_eyeball_L_skin_jnt\" translation=\"0.042697 0.028238 0.053148\" rotation=\"12.1053 -37.0789 -15.7703\" nodeId=\"155\"/>\n                      <TransformGroup name=\"lamb_eyeball_R_skin_jnt\" translation=\"-0.042697 0.028238 0.053148\" rotation=\"167.895 -37.0789 -164.23\" nodeId=\"156\"/>\n                      <TransformGroup name=\"lamb_eyelid_up_L_skin_jnt\" translation=\"0.051694 0.034094 0.060661\" rotation=\"-17.3821 -34.9874 33.0556\" nodeId=\"157\"/>\n                      <TransformGroup name=\"lamb_eyelid_up_R_skin_jnt\" translation=\"-0.051694 0.034094 0.060661\" rotation=\"-161.785 -34.9874 146.944\" nodeId=\"158\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"lamb_shoulder_L_skin_jnt\" translation=\"0.001067 0.018478 -0.050371\" rotation=\"0 0 -96.8821\" nodeId=\"159\">\n                <TransformGroup name=\"lamb_elbow_L_skin_jnt\" translation=\"0.11953 0 0\" rotation=\"0 0 20.2081\" nodeId=\"160\">\n                  <TransformGroup name=\"lamb_wrist_L_skin_jnt\" translation=\"0.126058 0 0\" rotation=\"0 0 -15.6006\" nodeId=\"161\">\n                    <TransformGroup name=\"lamb_front_foot_L_skin_jnt\" translation=\"0.090997 0 0\" rotation=\"0 0 22.4136\" nodeId=\"162\">\n                      <TransformGroup name=\"lamb_front_ball_L_skin_jnt\" translation=\"0.025722 0 0\" nodeId=\"163\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"lamb_shoulder_R_skin_jnt\" translation=\"0.001067 0.018478 0.050371\" rotation=\"-2e-06 0 83.1179\" nodeId=\"164\">\n                <TransformGroup name=\"lamb_elbow_R_skin_jnt\" translation=\"-0.11953 0 0\" rotation=\"0 0 20.2081\" nodeId=\"165\">\n                  <TransformGroup name=\"lamb_wrist_R_skin_jnt\" translation=\"-0.126058 0 0\" rotation=\"0 0 -15.6006\" nodeId=\"166\">\n                    <TransformGroup name=\"lamb_front_foot_R_skin_jnt\" translation=\"-0.090997 0 0\" rotation=\"-2e-06 0 -157.586\" nodeId=\"167\">\n                      <TransformGroup name=\"lamb_front_ball_R_skin_jnt\" translation=\"0.025722 0 0\" nodeId=\"168\"/>\n                    </TransformGroup>\n                  </TransformGroup>\n                </TransformGroup>\n              </TransformGroup>\n              <TransformGroup name=\"lamb_clavicle_R_skin_jnt\" translation=\"0.001067 0.018478 0.050371\" rotation=\"-2e-06 0 83.1179\" nodeId=\"169\"/>\n              <TransformGroup name=\"lamb_clavicle_L_skin_jnt\" translation=\"0.001067 0.018478 -0.050371\" rotation=\"0 0 -96.8821\" nodeId=\"170\"/>\n            </TransformGroup>\n            <TransformGroup name=\"lamb_belly_skin_jnt\" translation=\"0 -0.137655 0\" rotation=\"0 90 0\" nodeId=\"171\"/>\n          </TransformGroup>\n          <TransformGroup name=\"lamb_tail_skin_jnt_01\" translation=\"-0.036684 0.051883 0\" rotation=\"0 180 48.1928\" nodeId=\"172\">\n            <TransformGroup name=\"lamb_tail_skin_jnt_02\" translation=\"0.052063 0 0\" rotation=\"0 0 -39.9517\" nodeId=\"173\">\n              <TransformGroup name=\"lamb_tail_skin_jnt_03\" translation=\"0.060398 0 0\" rotation=\"0 0 -3.06238\" nodeId=\"174\">\n                <TransformGroup name=\"lamb_tail_skin_jnt_04\" translation=\"0.050289 0 0\" nodeId=\"175\"/>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"lamb_hip_L_skin_jnt\" translation=\"0.013689 0.0364 -0.046437\" rotation=\"0 0 -77.6774\" nodeId=\"176\">\n            <TransformGroup name=\"lamb_knee_L_skin_jnt\" translation=\"0.132898 0 0\" rotation=\"0 0 -45.0662\" nodeId=\"177\">\n              <TransformGroup name=\"lamb_ankle_L_skin_jnt\" translation=\"0.138173 0 0\" rotation=\"0 0 38.5601\" nodeId=\"178\">\n                <TransformGroup name=\"lamb_hind_foot_L_skin_jnt\" translation=\"0.107023 0 0\" rotation=\"0 0 21.0185\" nodeId=\"179\">\n                  <TransformGroup name=\"lamb_hind_ball_L_skin_jnt\" translation=\"0.026111 0 0\" nodeId=\"180\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n          <TransformGroup name=\"lamb_hip_R_skin_jnt\" translation=\"0.013689 0.0364 0.046437\" rotation=\"0 0 102.323\" nodeId=\"181\">\n            <TransformGroup name=\"lamb_knee_R_skin_jnt\" translation=\"-0.132898 0 0\" rotation=\"0 0 -45.0662\" nodeId=\"182\">\n              <TransformGroup name=\"lamb_ankle_R_skin_jnt\" translation=\"-0.138173 0 0\" rotation=\"0 0 38.5601\" nodeId=\"183\">\n                <TransformGroup name=\"lamb_hind_foot_R_skin_jnt\" translation=\"-0.107023 0 0\" rotation=\"0 0 -158.981\" nodeId=\"184\">\n                  <TransformGroup name=\"lamb_hind_ball_R_skin_jnt\" translation=\"0.026111 0 0\" nodeId=\"185\"/>\n                </TransformGroup>\n              </TransformGroup>\n            </TransformGroup>\n          </TransformGroup>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <TransformGroup name=\"sheepLamb\" nodeId=\"186\">\n      <TransformGroup name=\"LOD_0\" nodeId=\"187\">\n        <Shape name=\"body\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"188\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"36 37 38 39 40 41 42 43 46 47 113 114 157 158 159 160 161 162 163 164 165 166 167 168 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 169 170\" materialIds=\"5\"/>\n        <Shape name=\"tongue\" shapeId=\"2\" clipDistance=\"300\" nodeId=\"189\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"45 44 43\" materialIds=\"5\"/>\n        <Shape name=\"bottom\" shapeId=\"3\" clipDistance=\"300\" nodeId=\"190\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"43\" materialIds=\"5\"/>\n        <Shape name=\"eye_l\" shapeId=\"4\" clipDistance=\"300\" nodeId=\"191\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"155\" materialIds=\"5\"/>\n        <Shape name=\"eye_r\" shapeId=\"5\" clipDistance=\"300\" nodeId=\"192\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"156\" materialIds=\"5\"/>\n        <TransformGroup name=\"hair\" nodeId=\"193\">\n          <Shape name=\"hair1\" shapeId=\"6\" clipDistance=\"300\" nodeId=\"194\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"46 47 113 114 157 158 42 41\" materialIds=\"6\"/>\n          <Shape name=\"lashes_L\" shapeId=\"7\" clipDistance=\"350\" nodeId=\"195\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"46 155 157 42\" materialIds=\"6\"/>\n          <Shape name=\"lashes_R\" shapeId=\"8\" clipDistance=\"350\" nodeId=\"196\" castsShadows=\"true\" receiveShadows=\"true\" skinBindNodeIds=\"113 156 158 42\" materialIds=\"6\"/>\n        </TransformGroup>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_1\" visibility=\"false\" nodeId=\"197\">\n        <Shape name=\"body\" shapeId=\"9\" clipDistance=\"350\" nodeId=\"198\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"tongue\" shapeId=\"10\" clipDistance=\"350\" nodeId=\"199\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"bottom\" shapeId=\"11\" clipDistance=\"350\" nodeId=\"200\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_r\" shapeId=\"12\" clipDistance=\"350\" nodeId=\"201\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_l\" shapeId=\"13\" clipDistance=\"350\" nodeId=\"202\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <TransformGroup name=\"hair\" nodeId=\"203\">\n          <Shape name=\"hair1\" shapeId=\"14\" clipDistance=\"300\" nodeId=\"204\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n          <Shape name=\"lashes_L\" shapeId=\"15\" clipDistance=\"350\" nodeId=\"205\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n          <Shape name=\"lashes_R\" shapeId=\"16\" clipDistance=\"350\" nodeId=\"206\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n        </TransformGroup>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_2\" visibility=\"false\" nodeId=\"207\">\n        <Shape name=\"body\" shapeId=\"17\" clipDistance=\"350\" nodeId=\"208\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"tongue\" shapeId=\"18\" clipDistance=\"350\" nodeId=\"209\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"bottom\" shapeId=\"19\" clipDistance=\"350\" nodeId=\"210\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_r\" shapeId=\"20\" clipDistance=\"350\" nodeId=\"211\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_l\" shapeId=\"21\" clipDistance=\"350\" nodeId=\"212\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <TransformGroup name=\"hair\" nodeId=\"213\">\n          <Shape name=\"lashes_L\" shapeId=\"15\" clipDistance=\"350\" nodeId=\"214\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n          <Shape name=\"lashes_R\" shapeId=\"16\" clipDistance=\"350\" nodeId=\"215\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n        </TransformGroup>\n      </TransformGroup>\n      <TransformGroup name=\"LOD_3\" visibility=\"false\" nodeId=\"216\">\n        <Shape name=\"body\" shapeId=\"22\" clipDistance=\"350\" nodeId=\"217\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"tongue\" shapeId=\"23\" clipDistance=\"350\" nodeId=\"218\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"bottom\" shapeId=\"24\" clipDistance=\"350\" nodeId=\"219\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_r\" shapeId=\"20\" clipDistance=\"350\" nodeId=\"220\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <Shape name=\"eye_l\" shapeId=\"21\" clipDistance=\"350\" nodeId=\"221\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        <TransformGroup name=\"hair\" nodeId=\"222\">\n          <Shape name=\"lashes_L\" shapeId=\"15\" clipDistance=\"350\" nodeId=\"223\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n          <Shape name=\"lashes_R\" shapeId=\"16\" clipDistance=\"350\" nodeId=\"224\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n        </TransformGroup>\n      </TransformGroup>\n    </TransformGroup>\n    <Shape name=\"proxy\" shapeId=\"25\" visibility=\"false\" kinematic=\"true\" collisionFilterGroup=\"0x200000\" collisionFilterMask=\"0xfffffbff\" linearDamping=\"0.5\" angularDamping=\"0.5\" nodeId=\"225\" castsShadows=\"true\" receiveShadows=\"true\" nonRenderable=\"true\" materialIds=\"7\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/sprayedMarker_cattle.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"sprayedMarker_cattle.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"3\" filename=\"colourShader.xml\"/>\n    <File fileId=\"1\" filename=\"sprayedMarker.dds\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"Material.001\" materialId=\"5\" specularColor=\"1 1 0\" customShaderId=\"3\">\n      <Texture fileId=\"1\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"sprayedMarker_cattle.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"sprayedMarker\" rotation=\"4.45738 90 0\" scale=\"0.171093 0.171093 0.171093\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"8\" castsShadows=\"false\" receiveShadows=\"false\" materialIds=\"5\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/sprayedMarker_pigs.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"sprayedMarker_pigs.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"3\" filename=\"colourShader.xml\"/>\n    <File fileId=\"1\" filename=\"sprayedMarker.dds\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"Material.003\" materialId=\"5\" specularColor=\"1 1 0\" customShaderId=\"3\">\n      <Texture fileId=\"1\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"sprayedMarker_pigs.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"sprayedMarker\" translation=\"0 0.906747 -0.521127\" rotation=\"-0 -180 -0\" scale=\"-0.147512 -0.147512 -0.147512\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"8\" castsShadows=\"false\" receiveShadows=\"false\" doubleSided=\"true\" materialIds=\"5\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/sprayedMarker_sheep.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"sprayedMarker_sheep.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"3\" filename=\"colourShader.xml\"/>\n    <File fileId=\"1\" filename=\"sprayedMarker.dds\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"Material.001\" materialId=\"13\" specularColor=\"1 1 0\" customShaderId=\"3\">\n      <Texture fileId=\"1\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"sprayedMarker_sheep.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"sprayedMarker\" translation=\"0 1.0877 -0.223238\" scale=\"0.154797 0.154797 0.154797\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"8\" castsShadows=\"false\" receiveShadows=\"false\" materialIds=\"13\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "animals/domesticated/textTemplate.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"textTemplate.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.6\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"1\" filename=\"font_normal_white.dds\"/>\n    <File fileId=\"3\" filename=\"offsetUV.xml\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"Material.001\" materialId=\"6\" specularColor=\"1 1 0\" customShaderId=\"3\">\n      <Texture fileId=\"1\"/>\n      <CustomParameter name=\"playScale\" value=\"0 0 64 1\"/>\n      <CustomParameter name=\"colorScale\" value=\"0 0 0\"/>\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"textTemplate.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"animalIdFront_6\" shapeId=\"1\" clipDistance=\"300\" nodeId=\"49\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "fonts/dejavu_sans/font.xml",
    "content": "<?xml version=\"1.0\" ?>\r\n<font name=\"dejavu_sans\" width=\"64\" language=\"latin\">\r\n  <character uvIndex=\"0\" character=\"!\" byte=\"33\" type=\"special\">\r\n    <regular x=\"4\" y=\"0\" left=\"29.5\" right=\"33.5\" width=\"35\"/>\r\n    <bold x=\"4\" y=\"0\" left=\"28.5\" right=\"34.5\" width=\"35\"/>\r\n    <italic x=\"30\" y=\"0\" left=\"15.0\" right=\"29.0\" width=\"28\"/>\r\n    <boldItalic x=\"28\" y=\"0\" left=\"14.0\" right=\"30.5\" width=\"33\"/>\r\n  </character>\r\n  <character uvIndex=\"1\" character=\"&quot;\" byte=\"34\" type=\"special\">\r\n    <regular x=\"47\" y=\"0\" left=\"26.0\" right=\"38.0\" width=\"40\"/>\r\n    <bold x=\"51\" y=\"0\" left=\"25.0\" right=\"39.0\" width=\"40\"/>\r\n    <italic x=\"163\" y=\"0\" left=\"17.5\" right=\"33.0\" width=\"31\"/>\r\n    <boldItalic x=\"161\" y=\"0\" left=\"16.5\" right=\"34.5\" width=\"36\"/>\r\n  </character>\r\n  <character uvIndex=\"2\" character=\"#\" byte=\"35\" type=\"special\">\r\n    <regular x=\"95\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"74\"/>\r\n    <bold x=\"103\" y=\"0\" left=\"15.5\" right=\"47.5\" width=\"74\"/>\r\n    <italic x=\"266\" y=\"0\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n    <boldItalic x=\"264\" y=\"0\" left=\"4.0\" right=\"40.5\" width=\"73\"/>\r\n  </character>\r\n  <character uvIndex=\"3\" character=\"$\" byte=\"36\" type=\"special\">\r\n    <regular x=\"177\" y=\"0\" left=\"21.5\" right=\"42.0\" width=\"56\"/>\r\n    <bold x=\"189\" y=\"0\" left=\"20.5\" right=\"43.0\" width=\"56\"/>\r\n    <italic x=\"399\" y=\"0\" left=\"7.5\" right=\"34.0\" width=\"53\"/>\r\n    <boldItalic x=\"397\" y=\"0\" left=\"6.5\" right=\"35.5\" width=\"58\"/>\r\n  </character>\r\n  <character uvIndex=\"4\" character=\"%\" byte=\"37\" type=\"special\">\r\n    <regular x=\"241\" y=\"0\" left=\"13.0\" right=\"50.0\" width=\"84\"/>\r\n    <bold x=\"257\" y=\"0\" left=\"12.0\" right=\"51.0\" width=\"84\"/>\r\n    <italic x=\"522\" y=\"0\" left=\"5.0\" right=\"39.0\" width=\"68\"/>\r\n    <boldItalic x=\"520\" y=\"0\" left=\"4.0\" right=\"40.5\" width=\"73\"/>\r\n  </character>\r\n  <character uvIndex=\"5\" character=\"&amp;\" byte=\"38\" type=\"special\">\r\n    <regular x=\"333\" y=\"0\" left=\"17.0\" right=\"47.0\" width=\"69\"/>\r\n    <bold x=\"353\" y=\"0\" left=\"16.0\" right=\"48.0\" width=\"69\"/>\r\n    <italic x=\"650\" y=\"0\" left=\"5.0\" right=\"36.5\" width=\"63\"/>\r\n    <boldItalic x=\"648\" y=\"0\" left=\"4.0\" right=\"38.0\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"6\" character=\"'\" byte=\"39\" type=\"special\">\r\n    <regular x=\"410\" y=\"0\" left=\"30.0\" right=\"33.5\" width=\"24\"/>\r\n    <bold x=\"434\" y=\"0\" left=\"29.0\" right=\"34.5\" width=\"24\"/>\r\n    <italic x=\"811\" y=\"0\" left=\"21.5\" right=\"29.0\" width=\"15\"/>\r\n    <boldItalic x=\"809\" y=\"0\" left=\"20.5\" right=\"30.5\" width=\"20\"/>\r\n  </character>\r\n  <character uvIndex=\"7\" character=\"(\" byte=\"40\" type=\"special\">\r\n    <regular x=\"442\" y=\"0\" left=\"27.0\" right=\"37.0\" width=\"34\"/>\r\n    <bold x=\"470\" y=\"0\" left=\"26.0\" right=\"38.0\" width=\"34\"/>\r\n    <italic x=\"926\" y=\"0\" left=\"15.0\" right=\"32.5\" width=\"35\"/>\r\n    <boldItalic x=\"924\" y=\"0\" left=\"14.0\" right=\"34.0\" width=\"40\"/>\r\n  </character>\r\n  <character uvIndex=\"8\" character=\")\" byte=\"41\" type=\"special\">\r\n    <regular x=\"484\" y=\"0\" left=\"27.0\" right=\"36.5\" width=\"34\"/>\r\n    <bold x=\"516\" y=\"0\" left=\"26.0\" right=\"37.5\" width=\"34\"/>\r\n    <italic x=\"1046\" y=\"0\" left=\"11.0\" right=\"28.0\" width=\"34\"/>\r\n    <boldItalic x=\"1043\" y=\"0\" left=\"9.5\" right=\"29.5\" width=\"40\"/>\r\n  </character>\r\n  <character uvIndex=\"9\" character=\"*\" byte=\"42\" type=\"special\">\r\n    <regular x=\"526\" y=\"0\" left=\"22.0\" right=\"41.5\" width=\"44\"/>\r\n    <bold x=\"562\" y=\"0\" left=\"21.0\" right=\"42.5\" width=\"44\"/>\r\n    <italic x=\"1178\" y=\"0\" left=\"13.0\" right=\"35.5\" width=\"45\"/>\r\n    <boldItalic x=\"1176\" y=\"0\" left=\"12.0\" right=\"36.5\" width=\"49\"/>\r\n  </character>\r\n  <character uvIndex=\"10\" character=\"+\" byte=\"43\" type=\"special\">\r\n    <regular x=\"578\" y=\"0\" left=\"18.0\" right=\"45.5\" width=\"74\"/>\r\n    <bold x=\"618\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"74\"/>\r\n    <italic x=\"1294\" y=\"0\" left=\"7.0\" right=\"36.0\" width=\"58\"/>\r\n    <boldItalic x=\"1292\" y=\"0\" left=\"6.0\" right=\"37.0\" width=\"62\"/>\r\n  </character>\r\n  <character uvIndex=\"11\" character=\",\" byte=\"44\" type=\"special\">\r\n    <regular x=\"660\" y=\"0\" left=\"28.0\" right=\"34.5\" width=\"28\"/>\r\n    <bold x=\"704\" y=\"0\" left=\"27.0\" right=\"35.5\" width=\"28\"/>\r\n    <italic x=\"1433\" y=\"0\" left=\"12.5\" right=\"22.0\" width=\"19\"/>\r\n    <boldItalic x=\"1431\" y=\"0\" left=\"11.5\" right=\"23.0\" width=\"23\"/>\r\n  </character>\r\n  <character uvIndex=\"12\" character=\"-\" byte=\"45\" type=\"special\">\r\n    <regular x=\"696\" y=\"0\" left=\"26.0\" right=\"37.5\" width=\"32\"/>\r\n    <bold x=\"744\" y=\"0\" left=\"25.0\" right=\"38.5\" width=\"32\"/>\r\n    <italic x=\"1565\" y=\"0\" left=\"14.5\" right=\"27.5\" width=\"26\"/>\r\n    <boldItalic x=\"1563\" y=\"0\" left=\"13.5\" right=\"29.0\" width=\"31\"/>\r\n  </character>\r\n  <character uvIndex=\"13\" character=\".\" byte=\"46\" type=\"special\">\r\n    <regular x=\"736\" y=\"0\" left=\"29.5\" right=\"34.0\" width=\"28\"/>\r\n    <bold x=\"788\" y=\"0\" left=\"28.5\" right=\"35.0\" width=\"28\"/>\r\n    <italic x=\"1694\" y=\"0\" left=\"15.0\" right=\"21.5\" width=\"13\"/>\r\n    <boldItalic x=\"1692\" y=\"0\" left=\"14.0\" right=\"22.5\" width=\"17\"/>\r\n  </character>\r\n  <character uvIndex=\"14\" character=\"/\" byte=\"47\" type=\"special\">\r\n    <regular x=\"772\" y=\"0\" left=\"24.5\" right=\"39.0\" width=\"30\"/>\r\n    <bold x=\"828\" y=\"0\" left=\"23.5\" right=\"40.0\" width=\"30\"/>\r\n    <italic x=\"1810\" y=\"0\" left=\"9.0\" right=\"34.5\" width=\"51\"/>\r\n    <boldItalic x=\"1807\" y=\"0\" left=\"7.5\" right=\"35.5\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"15\" character=\"0\" byte=\"48\" type=\"numerical\">\r\n    <regular x=\"810\" y=\"0\" left=\"20.5\" right=\"43.0\" width=\"56\"/>\r\n    <bold x=\"870\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"56\"/>\r\n    <italic x=\"1939\" y=\"0\" left=\"9.5\" right=\"35.0\" width=\"51\"/>\r\n    <boldItalic x=\"1937\" y=\"0\" left=\"8.5\" right=\"36.5\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"16\" character=\"1\" byte=\"49\" type=\"numerical\">\r\n    <regular x=\"874\" y=\"0\" left=\"22.5\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"938\" y=\"0\" left=\"21.5\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"2066\" y=\"0\" left=\"9.0\" right=\"30.0\" width=\"42\"/>\r\n    <boldItalic x=\"2064\" y=\"0\" left=\"8.0\" right=\"31.0\" width=\"46\"/>\r\n  </character>\r\n  <character uvIndex=\"17\" character=\"2\" byte=\"50\" type=\"numerical\">\r\n    <regular x=\"938\" y=\"0\" left=\"21.0\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"1006\" y=\"0\" left=\"20.0\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"2189\" y=\"0\" left=\"6.5\" right=\"34.5\" width=\"56\"/>\r\n    <boldItalic x=\"2187\" y=\"0\" left=\"5.5\" right=\"35.5\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"18\" character=\"3\" byte=\"51\" type=\"numerical\">\r\n    <regular x=\"1002\" y=\"0\" left=\"21.0\" right=\"42.0\" width=\"56\"/>\r\n    <bold x=\"1074\" y=\"0\" left=\"20.0\" right=\"43.0\" width=\"56\"/>\r\n    <italic x=\"2318\" y=\"0\" left=\"7.0\" right=\"35.0\" width=\"56\"/>\r\n    <boldItalic x=\"2315\" y=\"0\" left=\"5.5\" right=\"36.0\" width=\"61\"/>\r\n  </character>\r\n  <character uvIndex=\"19\" character=\"4\" byte=\"52\" type=\"numerical\">\r\n    <regular x=\"1066\" y=\"0\" left=\"20.0\" right=\"43.5\" width=\"56\"/>\r\n    <bold x=\"1142\" y=\"0\" left=\"19.0\" right=\"44.5\" width=\"56\"/>\r\n    <italic x=\"2448\" y=\"0\" left=\"8.0\" right=\"34.0\" width=\"52\"/>\r\n    <boldItalic x=\"2445\" y=\"0\" left=\"6.5\" right=\"35.5\" width=\"58\"/>\r\n  </character>\r\n  <character uvIndex=\"20\" character=\"5\" byte=\"53\" type=\"numerical\">\r\n    <regular x=\"1130\" y=\"0\" left=\"21.0\" right=\"42.0\" width=\"56\"/>\r\n    <bold x=\"1210\" y=\"0\" left=\"20.0\" right=\"43.0\" width=\"56\"/>\r\n    <italic x=\"2574\" y=\"0\" left=\"7.0\" right=\"35.0\" width=\"56\"/>\r\n    <boldItalic x=\"2572\" y=\"0\" left=\"6.0\" right=\"36.0\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"21\" character=\"6\" byte=\"54\" type=\"numerical\">\r\n    <regular x=\"1194\" y=\"0\" left=\"21.0\" right=\"43.0\" width=\"56\"/>\r\n    <bold x=\"1278\" y=\"0\" left=\"20.0\" right=\"44.0\" width=\"56\"/>\r\n    <italic x=\"2707\" y=\"0\" left=\"9.5\" right=\"36.0\" width=\"53\"/>\r\n    <boldItalic x=\"2705\" y=\"0\" left=\"8.5\" right=\"37.0\" width=\"57\"/>\r\n  </character>\r\n  <character uvIndex=\"22\" character=\"7\" byte=\"55\" type=\"numerical\">\r\n    <regular x=\"1258\" y=\"0\" left=\"21.5\" right=\"42.0\" width=\"56\"/>\r\n    <bold x=\"1346\" y=\"0\" left=\"20.5\" right=\"43.0\" width=\"56\"/>\r\n    <italic x=\"2839\" y=\"0\" left=\"11.5\" right=\"37.5\" width=\"52\"/>\r\n    <boldItalic x=\"2837\" y=\"0\" left=\"10.5\" right=\"38.5\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"23\" character=\"8\" byte=\"56\" type=\"numerical\">\r\n    <regular x=\"1322\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"56\"/>\r\n    <bold x=\"1414\" y=\"0\" left=\"19.5\" right=\"43.5\" width=\"56\"/>\r\n    <italic x=\"2960\" y=\"0\" left=\"8.0\" right=\"35.5\" width=\"55\"/>\r\n    <boldItalic x=\"2958\" y=\"0\" left=\"7.0\" right=\"36.5\" width=\"59\"/>\r\n  </character>\r\n  <character uvIndex=\"24\" character=\"9\" byte=\"57\" type=\"numerical\">\r\n    <regular x=\"1386\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"56\"/>\r\n    <bold x=\"1482\" y=\"0\" left=\"19.5\" right=\"43.5\" width=\"56\"/>\r\n    <italic x=\"3089\" y=\"0\" left=\"8.5\" right=\"35.0\" width=\"53\"/>\r\n    <boldItalic x=\"3086\" y=\"0\" left=\"7.0\" right=\"36.0\" width=\"58\"/>\r\n  </character>\r\n  <character uvIndex=\"25\" character=\":\" byte=\"58\" type=\"special\">\r\n    <regular x=\"1450\" y=\"0\" left=\"29.5\" right=\"34.0\" width=\"30\"/>\r\n    <bold x=\"1550\" y=\"0\" left=\"28.5\" right=\"35.0\" width=\"30\"/>\r\n    <italic x=\"3230\" y=\"0\" left=\"15.0\" right=\"27.0\" width=\"24\"/>\r\n    <boldItalic x=\"3228\" y=\"0\" left=\"14.0\" right=\"28.0\" width=\"28\"/>\r\n  </character>\r\n  <character uvIndex=\"26\" character=\";\" byte=\"59\" type=\"special\">\r\n    <regular x=\"1488\" y=\"0\" left=\"27.5\" right=\"34.0\" width=\"30\"/>\r\n    <bold x=\"1592\" y=\"0\" left=\"26.5\" right=\"35.0\" width=\"30\"/>\r\n    <italic x=\"3352\" y=\"0\" left=\"12.0\" right=\"27.0\" width=\"30\"/>\r\n    <boldItalic x=\"3350\" y=\"0\" left=\"11.0\" right=\"28.0\" width=\"34\"/>\r\n  </character>\r\n  <character uvIndex=\"27\" character=\"&lt;\" byte=\"60\" type=\"special\">\r\n    <regular x=\"1526\" y=\"0\" left=\"18.0\" right=\"45.5\" width=\"74\"/>\r\n    <bold x=\"1634\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"74\"/>\r\n    <italic x=\"3470\" y=\"0\" left=\"7.0\" right=\"39.0\" width=\"64\"/>\r\n    <boldItalic x=\"3468\" y=\"0\" left=\"6.0\" right=\"40.0\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"28\" character=\"=\" byte=\"61\" type=\"special\">\r\n    <regular x=\"1608\" y=\"0\" left=\"18.0\" right=\"45.5\" width=\"74\"/>\r\n    <bold x=\"1720\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"74\"/>\r\n    <italic x=\"3596\" y=\"0\" left=\"6.0\" right=\"37.5\" width=\"63\"/>\r\n    <boldItalic x=\"3593\" y=\"0\" left=\"4.5\" right=\"38.5\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"29\" character=\"&gt;\" byte=\"62\" type=\"special\">\r\n    <regular x=\"1690\" y=\"0\" left=\"18.0\" right=\"45.5\" width=\"74\"/>\r\n    <bold x=\"1806\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"74\"/>\r\n    <italic x=\"3720\" y=\"0\" left=\"4.0\" right=\"36.0\" width=\"64\"/>\r\n    <boldItalic x=\"3718\" y=\"0\" left=\"3.0\" right=\"37.0\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"30\" character=\"?\" byte=\"63\" type=\"special\">\r\n    <regular x=\"1772\" y=\"0\" left=\"23.0\" right=\"40.0\" width=\"47\"/>\r\n    <bold x=\"1892\" y=\"0\" left=\"22.0\" right=\"41.0\" width=\"47\"/>\r\n    <italic x=\"3867\" y=\"0\" left=\"13.5\" right=\"34.0\" width=\"41\"/>\r\n    <boldItalic x=\"3865\" y=\"0\" left=\"12.5\" right=\"35.0\" width=\"45\"/>\r\n  </character>\r\n  <character uvIndex=\"31\" character=\"@\" byte=\"64\" type=\"special\">\r\n    <regular x=\"1827\" y=\"0\" left=\"12.5\" right=\"50.5\" width=\"88\"/>\r\n    <bold x=\"1951\" y=\"0\" left=\"11.5\" right=\"51.5\" width=\"88\"/>\r\n    <italic x=\"3969\" y=\"0\" left=\"0.5\" right=\"42.0\" width=\"83\"/>\r\n    <boldItalic x=\"3972\" y=\"0\" left=\"0.0\" right=\"43.0\" width=\"86\"/>\r\n  </character>\r\n  <character uvIndex=\"32\" character=\"A\" byte=\"65\" type=\"alphabetical\">\r\n    <regular x=\"1923\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"2051\" y=\"0\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"4102\" y=\"0\" left=\"3.0\" right=\"32.5\" width=\"59\"/>\r\n    <boldItalic x=\"4099\" y=\"0\" left=\"1.5\" right=\"33.5\" width=\"64\"/>\r\n  </character>\r\n  <character uvIndex=\"33\" character=\"B\" byte=\"66\" type=\"alphabetical\">\r\n    <regular x=\"1991\" y=\"0\" left=\"21.0\" right=\"44.0\" width=\"60\"/>\r\n    <bold x=\"2123\" y=\"0\" left=\"20.0\" right=\"45.0\" width=\"60\"/>\r\n    <italic x=\"4237\" y=\"0\" left=\"6.5\" right=\"36.0\" width=\"59\"/>\r\n    <boldItalic x=\"4235\" y=\"0\" left=\"5.5\" right=\"37.0\" width=\"63\"/>\r\n  </character>\r\n  <character uvIndex=\"34\" character=\"C\" byte=\"67\" type=\"alphabetical\">\r\n    <regular x=\"2059\" y=\"0\" left=\"18.5\" right=\"44.5\" width=\"61\"/>\r\n    <bold x=\"2195\" y=\"0\" left=\"17.5\" right=\"45.5\" width=\"61\"/>\r\n    <italic x=\"4368\" y=\"0\" left=\"8.0\" right=\"39.5\" width=\"63\"/>\r\n    <boldItalic x=\"4366\" y=\"0\" left=\"7.0\" right=\"40.5\" width=\"67\"/>\r\n  </character>\r\n  <character uvIndex=\"35\" character=\"D\" byte=\"68\" type=\"alphabetical\">\r\n    <regular x=\"2128\" y=\"0\" left=\"19.0\" right=\"46.0\" width=\"68\"/>\r\n    <bold x=\"2268\" y=\"0\" left=\"18.0\" right=\"47.0\" width=\"68\"/>\r\n    <italic x=\"4489\" y=\"0\" left=\"4.5\" right=\"38.0\" width=\"67\"/>\r\n    <boldItalic x=\"4487\" y=\"0\" left=\"3.5\" right=\"39.0\" width=\"71\"/>\r\n  </character>\r\n  <character uvIndex=\"36\" character=\"E\" byte=\"69\" type=\"alphabetical\">\r\n    <regular x=\"2204\" y=\"0\" left=\"22.0\" right=\"42.5\" width=\"56\"/>\r\n    <bold x=\"2348\" y=\"0\" left=\"21.0\" right=\"43.5\" width=\"56\"/>\r\n    <italic x=\"4623\" y=\"0\" left=\"7.5\" right=\"38.0\" width=\"61\"/>\r\n    <boldItalic x=\"4621\" y=\"0\" left=\"6.5\" right=\"39.0\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"37\" character=\"F\" byte=\"70\" type=\"alphabetical\">\r\n    <regular x=\"2268\" y=\"0\" left=\"23.0\" right=\"41.5\" width=\"51\"/>\r\n    <bold x=\"2416\" y=\"0\" left=\"22.0\" right=\"42.5\" width=\"51\"/>\r\n    <italic x=\"4753\" y=\"0\" left=\"8.5\" right=\"37.0\" width=\"57\"/>\r\n    <boldItalic x=\"4751\" y=\"0\" left=\"7.5\" right=\"38.0\" width=\"61\"/>\r\n  </character>\r\n  <character uvIndex=\"38\" character=\"G\" byte=\"71\" type=\"alphabetical\">\r\n    <regular x=\"2327\" y=\"0\" left=\"17.0\" right=\"45.0\" width=\"68\"/>\r\n    <bold x=\"2479\" y=\"0\" left=\"16.0\" right=\"46.0\" width=\"68\"/>\r\n    <italic x=\"4877\" y=\"0\" left=\"6.5\" right=\"39.5\" width=\"66\"/>\r\n    <boldItalic x=\"4875\" y=\"0\" left=\"5.5\" right=\"40.5\" width=\"70\"/>\r\n  </character>\r\n  <character uvIndex=\"39\" character=\"H\" byte=\"72\" type=\"alphabetical\">\r\n    <regular x=\"2403\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"66\"/>\r\n    <bold x=\"2559\" y=\"0\" left=\"18.5\" right=\"45.0\" width=\"66\"/>\r\n    <italic x=\"5002\" y=\"0\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n    <boldItalic x=\"5000\" y=\"0\" left=\"4.0\" right=\"40.5\" width=\"73\"/>\r\n  </character>\r\n  <character uvIndex=\"40\" character=\"I\" byte=\"73\" type=\"alphabetical\">\r\n    <regular x=\"2477\" y=\"0\" left=\"29.5\" right=\"34.0\" width=\"26\"/>\r\n    <bold x=\"2637\" y=\"0\" left=\"28.5\" right=\"35.0\" width=\"26\"/>\r\n    <italic x=\"5150\" y=\"0\" left=\"15.0\" right=\"29.5\" width=\"29\"/>\r\n    <boldItalic x=\"5148\" y=\"0\" left=\"14.0\" right=\"30.5\" width=\"33\"/>\r\n  </character>\r\n  <character uvIndex=\"41\" character=\"J\" byte=\"74\" type=\"alphabetical\">\r\n    <regular x=\"2511\" y=\"0\" left=\"23.0\" right=\"34.0\" width=\"31\"/>\r\n    <bold x=\"2675\" y=\"0\" left=\"22.0\" right=\"35.0\" width=\"31\"/>\r\n    <italic x=\"5260\" y=\"0\" left=\"6.0\" right=\"29.5\" width=\"47\"/>\r\n    <boldItalic x=\"5257\" y=\"0\" left=\"4.5\" right=\"30.5\" width=\"52\"/>\r\n  </character>\r\n  <character uvIndex=\"42\" character=\"K\" byte=\"75\" type=\"alphabetical\">\r\n    <regular x=\"2550\" y=\"0\" left=\"21.5\" right=\"47.0\" width=\"60\"/>\r\n    <bold x=\"2718\" y=\"0\" left=\"20.5\" right=\"48.0\" width=\"60\"/>\r\n    <italic x=\"5390\" y=\"0\" left=\"7.0\" right=\"41.0\" width=\"68\"/>\r\n    <boldItalic x=\"5388\" y=\"0\" left=\"6.0\" right=\"42.5\" width=\"73\"/>\r\n  </character>\r\n  <character uvIndex=\"43\" character=\"L\" byte=\"76\" type=\"alphabetical\">\r\n    <regular x=\"2618\" y=\"0\" left=\"23.5\" right=\"43.5\" width=\"49\"/>\r\n    <bold x=\"2790\" y=\"0\" left=\"22.5\" right=\"44.5\" width=\"49\"/>\r\n    <italic x=\"5522\" y=\"0\" left=\"9.0\" right=\"30.5\" width=\"43\"/>\r\n    <boldItalic x=\"5520\" y=\"0\" left=\"8.0\" right=\"31.5\" width=\"47\"/>\r\n  </character>\r\n  <character uvIndex=\"44\" character=\"M\" byte=\"77\" type=\"alphabetical\">\r\n    <regular x=\"2675\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"76\"/>\r\n    <bold x=\"2851\" y=\"0\" left=\"16.0\" right=\"47.5\" width=\"76\"/>\r\n    <italic x=\"5637\" y=\"0\" left=\"2.5\" right=\"42.0\" width=\"79\"/>\r\n    <boldItalic x=\"5635\" y=\"0\" left=\"1.5\" right=\"43.0\" width=\"83\"/>\r\n  </character>\r\n  <character uvIndex=\"45\" character=\"N\" byte=\"78\" type=\"alphabetical\">\r\n    <regular x=\"2759\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"66\"/>\r\n    <bold x=\"2939\" y=\"0\" left=\"18.5\" right=\"45.0\" width=\"66\"/>\r\n    <italic x=\"5770\" y=\"0\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n    <boldItalic x=\"5768\" y=\"0\" left=\"4.0\" right=\"40.5\" width=\"73\"/>\r\n  </character>\r\n  <character uvIndex=\"46\" character=\"O\" byte=\"79\" type=\"alphabetical\">\r\n    <regular x=\"2833\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"69\"/>\r\n    <bold x=\"3017\" y=\"0\" left=\"15.5\" right=\"47.5\" width=\"69\"/>\r\n    <italic x=\"5900\" y=\"0\" left=\"6.0\" right=\"38.5\" width=\"65\"/>\r\n    <boldItalic x=\"5898\" y=\"0\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"47\" character=\"P\" byte=\"80\" type=\"alphabetical\">\r\n    <regular x=\"2910\" y=\"0\" left=\"22.5\" right=\"43.5\" width=\"53\"/>\r\n    <bold x=\"3098\" y=\"0\" left=\"21.5\" right=\"44.5\" width=\"53\"/>\r\n    <italic x=\"6032\" y=\"0\" left=\"8.0\" right=\"36.5\" width=\"57\"/>\r\n    <boldItalic x=\"6030\" y=\"0\" left=\"7.0\" right=\"37.5\" width=\"61\"/>\r\n  </character>\r\n  <character uvIndex=\"48\" character=\"Q\" byte=\"81\" type=\"alphabetical\">\r\n    <regular x=\"2971\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"69\"/>\r\n    <bold x=\"3163\" y=\"0\" left=\"15.5\" right=\"47.5\" width=\"69\"/>\r\n    <italic x=\"6156\" y=\"0\" left=\"6.0\" right=\"38.5\" width=\"65\"/>\r\n    <boldItalic x=\"6154\" y=\"0\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"49\" character=\"R\" byte=\"82\" type=\"alphabetical\">\r\n    <regular x=\"3048\" y=\"0\" left=\"20.5\" right=\"45.5\" width=\"61\"/>\r\n    <bold x=\"3244\" y=\"0\" left=\"19.5\" right=\"46.5\" width=\"61\"/>\r\n    <italic x=\"6284\" y=\"0\" left=\"6.0\" right=\"34.5\" width=\"57\"/>\r\n    <boldItalic x=\"6282\" y=\"0\" left=\"5.0\" right=\"35.5\" width=\"61\"/>\r\n  </character>\r\n  <character uvIndex=\"50\" character=\"S\" byte=\"83\" type=\"alphabetical\">\r\n    <regular x=\"3117\" y=\"0\" left=\"20.5\" right=\"43.0\" width=\"56\"/>\r\n    <bold x=\"3317\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"56\"/>\r\n    <italic x=\"6414\" y=\"0\" left=\"7.0\" right=\"36.5\" width=\"59\"/>\r\n    <boldItalic x=\"6411\" y=\"0\" left=\"5.5\" right=\"37.5\" width=\"64\"/>\r\n  </character>\r\n  <character uvIndex=\"51\" character=\"T\" byte=\"84\" type=\"alphabetical\">\r\n    <regular x=\"3181\" y=\"0\" left=\"18.0\" right=\"45.5\" width=\"56\"/>\r\n    <bold x=\"3385\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"56\"/>\r\n    <italic x=\"6552\" y=\"0\" left=\"12.0\" right=\"40.5\" width=\"57\"/>\r\n    <boldItalic x=\"6550\" y=\"0\" left=\"11.0\" right=\"42.0\" width=\"62\"/>\r\n  </character>\r\n  <character uvIndex=\"52\" character=\"U\" byte=\"85\" type=\"alphabetical\">\r\n    <regular x=\"3245\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"64\"/>\r\n    <bold x=\"3453\" y=\"0\" left=\"18.5\" right=\"45.0\" width=\"64\"/>\r\n    <italic x=\"6671\" y=\"0\" left=\"7.5\" right=\"39.5\" width=\"64\"/>\r\n    <boldItalic x=\"6669\" y=\"0\" left=\"6.5\" right=\"41.0\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"53\" character=\"V\" byte=\"86\" type=\"alphabetical\">\r\n    <regular x=\"3317\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"3529\" y=\"0\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"6808\" y=\"0\" left=\"12.0\" right=\"42.0\" width=\"60\"/>\r\n    <boldItalic x=\"6806\" y=\"0\" left=\"11.0\" right=\"43.0\" width=\"64\"/>\r\n  </character>\r\n  <character uvIndex=\"54\" character=\"W\" byte=\"87\" type=\"alphabetical\">\r\n    <regular x=\"3385\" y=\"0\" left=\"11.0\" right=\"52.0\" width=\"87\"/>\r\n    <bold x=\"3601\" y=\"0\" left=\"10.0\" right=\"53.0\" width=\"87\"/>\r\n    <italic x=\"6921\" y=\"0\" left=\"4.5\" right=\"47.0\" width=\"85\"/>\r\n    <boldItalic x=\"6919\" y=\"0\" left=\"3.5\" right=\"48.5\" width=\"90\"/>\r\n  </character>\r\n  <character uvIndex=\"55\" character=\"X\" byte=\"88\" type=\"alphabetical\">\r\n    <regular x=\"3480\" y=\"0\" left=\"18.0\" right=\"45.5\" width=\"60\"/>\r\n    <bold x=\"3700\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <italic x=\"7048\" y=\"0\" left=\"4.0\" right=\"40.0\" width=\"72\"/>\r\n    <boldItalic x=\"7045\" y=\"0\" left=\"2.5\" right=\"41.5\" width=\"78\"/>\r\n  </character>\r\n  <character uvIndex=\"56\" character=\"Y\" byte=\"89\" type=\"alphabetical\">\r\n    <regular x=\"3548\" y=\"0\" left=\"18.0\" right=\"45.0\" width=\"55\"/>\r\n    <bold x=\"3772\" y=\"0\" left=\"17.0\" right=\"46.0\" width=\"55\"/>\r\n    <italic x=\"7195\" y=\"0\" left=\"13.5\" right=\"40.5\" width=\"54\"/>\r\n    <boldItalic x=\"7193\" y=\"0\" left=\"12.5\" right=\"42.0\" width=\"59\"/>\r\n  </character>\r\n  <character uvIndex=\"57\" character=\"Z\" byte=\"90\" type=\"alphabetical\">\r\n    <regular x=\"3611\" y=\"0\" left=\"18.5\" right=\"45.0\" width=\"60\"/>\r\n    <bold x=\"3839\" y=\"0\" left=\"17.5\" right=\"46.0\" width=\"60\"/>\r\n    <italic x=\"7305\" y=\"0\" left=\"4.5\" right=\"40.0\" width=\"71\"/>\r\n    <boldItalic x=\"7303\" y=\"0\" left=\"3.5\" right=\"41.0\" width=\"75\"/>\r\n  </character>\r\n  <character uvIndex=\"58\" character=\"[\" byte=\"91\" type=\"special\">\r\n    <regular x=\"3679\" y=\"0\" left=\"27.0\" right=\"36.0\" width=\"34\"/>\r\n    <bold x=\"3911\" y=\"0\" left=\"26.0\" right=\"37.0\" width=\"34\"/>\r\n    <italic x=\"7446\" y=\"0\" left=\"11.0\" right=\"32.0\" width=\"42\"/>\r\n    <boldItalic x=\"7443\" y=\"0\" left=\"9.5\" right=\"33.5\" width=\"48\"/>\r\n  </character>\r\n  <character uvIndex=\"59\" character=\"\\\" byte=\"92\" type=\"special\">\r\n    <regular x=\"3721\" y=\"0\" left=\"24.5\" right=\"39.0\" width=\"30\"/>\r\n    <bold x=\"3957\" y=\"0\" left=\"23.5\" right=\"40.0\" width=\"30\"/>\r\n    <italic x=\"7590\" y=\"0\" left=\"19.0\" right=\"24.0\" width=\"10\"/>\r\n    <boldItalic x=\"7588\" y=\"0\" left=\"18.0\" right=\"25.0\" width=\"14\"/>\r\n  </character>\r\n  <character uvIndex=\"60\" character=\"]\" byte=\"93\" type=\"special\">\r\n    <regular x=\"3759\" y=\"0\" left=\"27.5\" right=\"36.5\" width=\"34\"/>\r\n    <bold x=\"3999\" y=\"0\" left=\"26.5\" right=\"37.5\" width=\"34\"/>\r\n    <italic x=\"7703\" y=\"0\" left=\"11.5\" right=\"32.5\" width=\"42\"/>\r\n    <boldItalic x=\"7700\" y=\"0\" left=\"10.0\" right=\"34.0\" width=\"48\"/>\r\n  </character>\r\n  <character uvIndex=\"61\" character=\"^\" byte=\"94\" type=\"special\">\r\n    <regular x=\"3801\" y=\"0\" left=\"18.0\" right=\"45.5\" width=\"74\"/>\r\n    <bold x=\"4045\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"74\"/>\r\n    <italic x=\"7827\" y=\"0\" left=\"9.5\" right=\"37.0\" width=\"55\"/>\r\n    <boldItalic x=\"7825\" y=\"0\" left=\"8.5\" right=\"38.5\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"62\" character=\"_\" byte=\"95\" type=\"special\">\r\n    <regular x=\"3883\" y=\"0\" left=\"20.5\" right=\"43.0\" width=\"46\"/>\r\n    <bold x=\"4131\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"46\"/>\r\n    <italic x=\"7942\" y=\"0\" left=\"3.0\" right=\"26.5\" width=\"47\"/>\r\n    <boldItalic x=\"7939\" y=\"0\" left=\"1.5\" right=\"28.0\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"63\" character=\"`\" byte=\"96\" type=\"special\">\r\n    <regular x=\"3937\" y=\"0\" left=\"24.5\" right=\"34.5\" width=\"44\"/>\r\n    <bold x=\"4189\" y=\"0\" left=\"23.5\" right=\"35.5\" width=\"44\"/>\r\n    <italic x=\"8105\" y=\"0\" left=\"20.5\" right=\"28.5\" width=\"16\"/>\r\n    <boldItalic x=\"8103\" y=\"0\" left=\"19.5\" right=\"30.0\" width=\"21\"/>\r\n  </character>\r\n  <character uvIndex=\"64\" character=\"a\" byte=\"97\" type=\"alphabetical\">\r\n    <regular x=\"3989\" y=\"0\" left=\"21.0\" right=\"41.0\" width=\"54\"/>\r\n    <bold x=\"4245\" y=\"0\" left=\"20.0\" right=\"42.0\" width=\"54\"/>\r\n    <italic x=\"16\" y=\"128\" left=\"8.0\" right=\"32.0\" width=\"48\"/>\r\n    <boldItalic x=\"14\" y=\"128\" left=\"7.0\" right=\"33.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"65\" character=\"b\" byte=\"98\" type=\"alphabetical\">\r\n    <regular x=\"4051\" y=\"0\" left=\"22.0\" right=\"43.5\" width=\"56\"/>\r\n    <bold x=\"4311\" y=\"0\" left=\"21.0\" right=\"44.5\" width=\"56\"/>\r\n    <italic x=\"143\" y=\"128\" left=\"7.5\" right=\"34.0\" width=\"53\"/>\r\n    <boldItalic x=\"141\" y=\"128\" left=\"6.5\" right=\"35.0\" width=\"57\"/>\r\n  </character>\r\n  <character uvIndex=\"66\" character=\"c\" byte=\"99\" type=\"alphabetical\">\r\n    <regular x=\"4115\" y=\"0\" left=\"22.0\" right=\"41.0\" width=\"48\"/>\r\n    <bold x=\"4379\" y=\"0\" left=\"21.0\" right=\"42.0\" width=\"48\"/>\r\n    <italic x=\"277\" y=\"128\" left=\"10.5\" right=\"34.0\" width=\"47\"/>\r\n    <boldItalic x=\"275\" y=\"128\" left=\"9.5\" right=\"35.0\" width=\"51\"/>\r\n  </character>\r\n  <character uvIndex=\"67\" character=\"d\" byte=\"100\" type=\"alphabetical\">\r\n    <regular x=\"4171\" y=\"0\" left=\"20.0\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"4439\" y=\"0\" left=\"19.0\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"401\" y=\"128\" left=\"8.5\" right=\"37.5\" width=\"58\"/>\r\n    <boldItalic x=\"399\" y=\"128\" left=\"7.5\" right=\"39.0\" width=\"63\"/>\r\n  </character>\r\n  <character uvIndex=\"68\" character=\"e\" byte=\"101\" type=\"alphabetical\">\r\n    <regular x=\"4235\" y=\"0\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"4507\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"530\" y=\"128\" left=\"9.0\" right=\"33.5\" width=\"49\"/>\r\n    <boldItalic x=\"528\" y=\"128\" left=\"8.0\" right=\"34.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"69\" character=\"f\" byte=\"102\" type=\"alphabetical\">\r\n    <regular x=\"4297\" y=\"0\" left=\"25.0\" right=\"40.0\" width=\"33\"/>\r\n    <bold x=\"4573\" y=\"0\" left=\"24.0\" right=\"41.0\" width=\"33\"/>\r\n    <italic x=\"668\" y=\"128\" left=\"14.0\" right=\"36.0\" width=\"44\"/>\r\n    <boldItalic x=\"666\" y=\"128\" left=\"13.0\" right=\"37.0\" width=\"48\"/>\r\n  </character>\r\n  <character uvIndex=\"70\" character=\"g\" byte=\"103\" type=\"alphabetical\">\r\n    <regular x=\"4338\" y=\"0\" left=\"20.0\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"4618\" y=\"0\" left=\"19.0\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"781\" y=\"128\" left=\"6.5\" right=\"34.5\" width=\"56\"/>\r\n    <boldItalic x=\"778\" y=\"128\" left=\"5.0\" right=\"36.0\" width=\"62\"/>\r\n  </character>\r\n  <character uvIndex=\"71\" character=\"h\" byte=\"104\" type=\"alphabetical\">\r\n    <regular x=\"4402\" y=\"0\" left=\"22.0\" right=\"42.0\" width=\"56\"/>\r\n    <bold x=\"4686\" y=\"0\" left=\"21.0\" right=\"43.0\" width=\"56\"/>\r\n    <italic x=\"911\" y=\"128\" left=\"7.5\" right=\"33.0\" width=\"51\"/>\r\n    <boldItalic x=\"909\" y=\"128\" left=\"6.5\" right=\"34.0\" width=\"55\"/>\r\n  </character>\r\n  <character uvIndex=\"72\" character=\"i\" byte=\"105\" type=\"alphabetical\">\r\n    <regular x=\"4466\" y=\"0\" left=\"30.0\" right=\"34.0\" width=\"24\"/>\r\n    <bold x=\"4754\" y=\"0\" left=\"29.0\" right=\"35.0\" width=\"24\"/>\r\n    <italic x=\"1055\" y=\"128\" left=\"15.5\" right=\"30.0\" width=\"29\"/>\r\n    <boldItalic x=\"1053\" y=\"128\" left=\"14.5\" right=\"31.0\" width=\"33\"/>\r\n  </character>\r\n  <character uvIndex=\"73\" character=\"j\" byte=\"106\" type=\"alphabetical\">\r\n    <regular x=\"4498\" y=\"0\" left=\"25.0\" right=\"34.0\" width=\"26\"/>\r\n    <bold x=\"4790\" y=\"0\" left=\"24.0\" right=\"35.0\" width=\"26\"/>\r\n    <italic x=\"1168\" y=\"128\" left=\"8.0\" right=\"30.0\" width=\"44\"/>\r\n    <boldItalic x=\"1165\" y=\"128\" left=\"6.5\" right=\"31.0\" width=\"49\"/>\r\n  </character>\r\n  <character uvIndex=\"74\" character=\"k\" byte=\"107\" type=\"alphabetical\">\r\n    <regular x=\"4532\" y=\"0\" left=\"23.0\" right=\"44.0\" width=\"51\"/>\r\n    <bold x=\"4828\" y=\"0\" left=\"22.0\" right=\"45.0\" width=\"51\"/>\r\n    <italic x=\"1297\" y=\"128\" left=\"8.5\" right=\"36.5\" width=\"56\"/>\r\n    <boldItalic x=\"1295\" y=\"128\" left=\"7.5\" right=\"38.0\" width=\"61\"/>\r\n  </character>\r\n  <character uvIndex=\"75\" character=\"l\" byte=\"108\" type=\"alphabetical\">\r\n    <regular x=\"4591\" y=\"0\" left=\"30.0\" right=\"34.0\" width=\"24\"/>\r\n    <bold x=\"4891\" y=\"0\" left=\"29.0\" right=\"35.0\" width=\"24\"/>\r\n    <italic x=\"1439\" y=\"128\" left=\"15.5\" right=\"30.0\" width=\"29\"/>\r\n    <boldItalic x=\"1437\" y=\"128\" left=\"14.5\" right=\"31.0\" width=\"33\"/>\r\n  </character>\r\n  <character uvIndex=\"76\" character=\"m\" byte=\"109\" type=\"alphabetical\">\r\n    <regular x=\"4623\" y=\"0\" left=\"14.5\" right=\"49.5\" width=\"86\"/>\r\n    <bold x=\"4927\" y=\"0\" left=\"13.5\" right=\"50.5\" width=\"86\"/>\r\n    <italic x=\"1540\" y=\"128\" left=\"0.0\" right=\"40.5\" width=\"81\"/>\r\n    <boldItalic x=\"1540\" y=\"128\" left=\"0.0\" right=\"41.5\" width=\"83\"/>\r\n  </character>\r\n  <character uvIndex=\"77\" character=\"n\" byte=\"110\" type=\"alphabetical\">\r\n    <regular x=\"4717\" y=\"0\" left=\"22.0\" right=\"42.0\" width=\"56\"/>\r\n    <bold x=\"5025\" y=\"0\" left=\"21.0\" right=\"43.0\" width=\"56\"/>\r\n    <italic x=\"1679\" y=\"128\" left=\"7.5\" right=\"33.0\" width=\"51\"/>\r\n    <boldItalic x=\"1677\" y=\"128\" left=\"6.5\" right=\"34.0\" width=\"55\"/>\r\n  </character>\r\n  <character uvIndex=\"78\" character=\"o\" byte=\"111\" type=\"alphabetical\">\r\n    <regular x=\"4781\" y=\"0\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"5093\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"1810\" y=\"128\" left=\"9.0\" right=\"33.5\" width=\"49\"/>\r\n    <boldItalic x=\"1808\" y=\"128\" left=\"8.0\" right=\"34.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"79\" character=\"p\" byte=\"112\" type=\"alphabetical\">\r\n    <regular x=\"4843\" y=\"0\" left=\"22.0\" right=\"43.5\" width=\"56\"/>\r\n    <bold x=\"5159\" y=\"0\" left=\"21.0\" right=\"44.5\" width=\"56\"/>\r\n    <italic x=\"1930\" y=\"128\" left=\"5.0\" right=\"34.0\" width=\"58\"/>\r\n    <boldItalic x=\"1927\" y=\"128\" left=\"3.5\" right=\"35.0\" width=\"63\"/>\r\n  </character>\r\n  <character uvIndex=\"80\" character=\"q\" byte=\"113\" type=\"alphabetical\">\r\n    <regular x=\"4907\" y=\"0\" left=\"20.0\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"5227\" y=\"0\" left=\"19.0\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"2065\" y=\"128\" left=\"8.5\" right=\"34.5\" width=\"52\"/>\r\n    <boldItalic x=\"2063\" y=\"128\" left=\"7.5\" right=\"36.0\" width=\"57\"/>\r\n  </character>\r\n  <character uvIndex=\"81\" character=\"r\" byte=\"114\" type=\"alphabetical\">\r\n    <regular x=\"4971\" y=\"0\" left=\"27.0\" right=\"41.0\" width=\"37\"/>\r\n    <bold x=\"5295\" y=\"0\" left=\"26.0\" right=\"42.0\" width=\"37\"/>\r\n    <italic x=\"2201\" y=\"128\" left=\"12.5\" right=\"34.5\" width=\"44\"/>\r\n    <boldItalic x=\"2199\" y=\"128\" left=\"11.5\" right=\"35.5\" width=\"48\"/>\r\n  </character>\r\n  <character uvIndex=\"82\" character=\"s\" byte=\"115\" type=\"alphabetical\">\r\n    <regular x=\"5016\" y=\"0\" left=\"22.5\" right=\"41.0\" width=\"46\"/>\r\n    <bold x=\"5344\" y=\"0\" left=\"21.5\" right=\"42.0\" width=\"46\"/>\r\n    <italic x=\"2321\" y=\"128\" left=\"8.5\" right=\"32.5\" width=\"48\"/>\r\n    <boldItalic x=\"2319\" y=\"128\" left=\"7.5\" right=\"33.5\" width=\"52\"/>\r\n  </character>\r\n  <character uvIndex=\"83\" character=\"t\" byte=\"116\" type=\"alphabetical\">\r\n    <regular x=\"5070\" y=\"0\" left=\"24.0\" right=\"39.0\" width=\"35\"/>\r\n    <bold x=\"5402\" y=\"0\" left=\"23.0\" right=\"40.0\" width=\"35\"/>\r\n    <italic x=\"2460\" y=\"128\" left=\"14.0\" right=\"32.0\" width=\"36\"/>\r\n    <boldItalic x=\"2458\" y=\"128\" left=\"13.0\" right=\"33.5\" width=\"41\"/>\r\n  </character>\r\n  <character uvIndex=\"84\" character=\"u\" byte=\"117\" type=\"alphabetical\">\r\n    <regular x=\"5113\" y=\"0\" left=\"21.5\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"5449\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"2578\" y=\"128\" left=\"9.0\" right=\"34.5\" width=\"51\"/>\r\n    <boldItalic x=\"2576\" y=\"128\" left=\"8.0\" right=\"36.0\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"85\" character=\"v\" byte=\"118\" type=\"alphabetical\">\r\n    <regular x=\"5177\" y=\"0\" left=\"20.0\" right=\"43.5\" width=\"52\"/>\r\n    <bold x=\"5517\" y=\"0\" left=\"19.0\" right=\"44.5\" width=\"52\"/>\r\n    <italic x=\"2713\" y=\"128\" left=\"12.5\" right=\"36.5\" width=\"48\"/>\r\n    <boldItalic x=\"2711\" y=\"128\" left=\"11.5\" right=\"38.0\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"86\" character=\"w\" byte=\"119\" type=\"alphabetical\">\r\n    <regular x=\"5237\" y=\"0\" left=\"15.5\" right=\"48.0\" width=\"72\"/>\r\n    <bold x=\"5581\" y=\"0\" left=\"14.5\" right=\"49.0\" width=\"72\"/>\r\n    <italic x=\"2831\" y=\"128\" left=\"7.5\" right=\"40.5\" width=\"66\"/>\r\n    <boldItalic x=\"2828\" y=\"128\" left=\"6.0\" right=\"42.5\" width=\"73\"/>\r\n  </character>\r\n  <character uvIndex=\"87\" character=\"x\" byte=\"120\" type=\"alphabetical\">\r\n    <regular x=\"5317\" y=\"0\" left=\"20.0\" right=\"43.5\" width=\"52\"/>\r\n    <bold x=\"5665\" y=\"0\" left=\"19.0\" right=\"44.5\" width=\"52\"/>\r\n    <italic x=\"2956\" y=\"128\" left=\"6.0\" right=\"35.5\" width=\"59\"/>\r\n    <boldItalic x=\"2953\" y=\"128\" left=\"4.5\" right=\"37.5\" width=\"66\"/>\r\n  </character>\r\n  <character uvIndex=\"88\" character=\"y\" byte=\"121\" type=\"alphabetical\">\r\n    <regular x=\"5377\" y=\"0\" left=\"20.0\" right=\"43.5\" width=\"52\"/>\r\n    <bold x=\"5729\" y=\"0\" left=\"19.0\" right=\"44.5\" width=\"52\"/>\r\n    <italic x=\"3083\" y=\"128\" left=\"5.5\" right=\"36.5\" width=\"62\"/>\r\n    <boldItalic x=\"3080\" y=\"128\" left=\"4.0\" right=\"38.0\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"89\" character=\"z\" byte=\"122\" type=\"alphabetical\">\r\n    <regular x=\"5437\" y=\"0\" left=\"22.0\" right=\"41.5\" width=\"46\"/>\r\n    <bold x=\"5793\" y=\"0\" left=\"21.0\" right=\"42.5\" width=\"46\"/>\r\n    <italic x=\"3215\" y=\"128\" left=\"7.5\" right=\"34.5\" width=\"54\"/>\r\n    <boldItalic x=\"3213\" y=\"128\" left=\"6.5\" right=\"36.0\" width=\"59\"/>\r\n  </character>\r\n  <character uvIndex=\"90\" character=\"{\" byte=\"123\" type=\"special\">\r\n    <regular x=\"5491\" y=\"0\" left=\"23.5\" right=\"40.0\" width=\"56\"/>\r\n    <bold x=\"5851\" y=\"0\" left=\"22.5\" right=\"41.0\" width=\"56\"/>\r\n    <italic x=\"3353\" y=\"128\" left=\"12.5\" right=\"36.0\" width=\"47\"/>\r\n    <boldItalic x=\"3350\" y=\"128\" left=\"11.0\" right=\"37.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"91\" character=\"|\" byte=\"124\" type=\"special\">\r\n    <regular x=\"5555\" y=\"0\" left=\"30.0\" right=\"33.5\" width=\"30\"/>\r\n    <bold x=\"5919\" y=\"0\" left=\"29.0\" right=\"34.5\" width=\"30\"/>\r\n    <italic x=\"3481\" y=\"128\" left=\"12.5\" right=\"29.5\" width=\"34\"/>\r\n    <boldItalic x=\"3478\" y=\"128\" left=\"11.0\" right=\"30.5\" width=\"39\"/>\r\n  </character>\r\n  <character uvIndex=\"92\" character=\"}\" byte=\"125\" type=\"special\">\r\n    <regular x=\"5593\" y=\"0\" left=\"23.5\" right=\"40.0\" width=\"56\"/>\r\n    <bold x=\"5961\" y=\"0\" left=\"22.5\" right=\"41.0\" width=\"56\"/>\r\n    <italic x=\"3598\" y=\"128\" left=\"7.0\" right=\"30.5\" width=\"47\"/>\r\n    <boldItalic x=\"3595\" y=\"128\" left=\"5.5\" right=\"31.5\" width=\"52\"/>\r\n  </character>\r\n  <character uvIndex=\"93\" character=\"~\" byte=\"126\" type=\"special\">\r\n    <regular x=\"5657\" y=\"0\" left=\"18.0\" right=\"45.5\" width=\"74\"/>\r\n    <bold x=\"6029\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"74\"/>\r\n    <italic x=\"3725\" y=\"128\" left=\"6.5\" right=\"36.5\" width=\"60\"/>\r\n    <boldItalic x=\"3723\" y=\"128\" left=\"5.5\" right=\"38.0\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"94\" character=\"¡\" byte=\"161\" type=\"special\">\r\n    <regular x=\"5739\" y=\"0\" left=\"29.5\" right=\"33.5\" width=\"35\"/>\r\n    <bold x=\"6115\" y=\"0\" left=\"28.5\" right=\"34.5\" width=\"35\"/>\r\n    <italic x=\"3865\" y=\"128\" left=\"12.5\" right=\"26.5\" width=\"28\"/>\r\n    <boldItalic x=\"3863\" y=\"128\" left=\"11.5\" right=\"28.0\" width=\"33\"/>\r\n  </character>\r\n  <character uvIndex=\"95\" character=\"£\" byte=\"163\" type=\"special\">\r\n    <regular x=\"5782\" y=\"0\" left=\"20.5\" right=\"42.0\" width=\"56\"/>\r\n    <bold x=\"6162\" y=\"0\" left=\"19.5\" right=\"43.0\" width=\"56\"/>\r\n    <italic x=\"3980\" y=\"128\" left=\"6.0\" right=\"36.5\" width=\"61\"/>\r\n    <boldItalic x=\"3978\" y=\"128\" left=\"5.0\" right=\"38.0\" width=\"66\"/>\r\n  </character>\r\n  <character uvIndex=\"96\" character=\"°\" byte=\"176\" type=\"special\">\r\n    <regular x=\"5846\" y=\"0\" left=\"25.0\" right=\"38.5\" width=\"44\"/>\r\n    <bold x=\"6230\" y=\"0\" left=\"24.0\" right=\"39.5\" width=\"44\"/>\r\n    <italic x=\"4132\" y=\"128\" left=\"18.0\" right=\"32.5\" width=\"29\"/>\r\n    <boldItalic x=\"4129\" y=\"128\" left=\"16.5\" right=\"33.5\" width=\"34\"/>\r\n  </character>\r\n  <character uvIndex=\"97\" character=\"±\" byte=\"177\" type=\"special\">\r\n    <regular x=\"5898\" y=\"0\" left=\"18.0\" right=\"45.5\" width=\"74\"/>\r\n    <bold x=\"6286\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"74\"/>\r\n    <italic x=\"4231\" y=\"128\" left=\"3.5\" right=\"37.5\" width=\"68\"/>\r\n    <boldItalic x=\"4229\" y=\"128\" left=\"2.5\" right=\"38.5\" width=\"72\"/>\r\n  </character>\r\n  <character uvIndex=\"98\" character=\"²\" byte=\"178\" type=\"numerical\">\r\n    <regular x=\"5980\" y=\"0\" left=\"25.0\" right=\"37.5\" width=\"35\"/>\r\n    <bold x=\"6372\" y=\"0\" left=\"24.0\" right=\"38.5\" width=\"35\"/>\r\n    <italic x=\"4382\" y=\"128\" left=\"15.0\" right=\"32.0\" width=\"34\"/>\r\n    <boldItalic x=\"4379\" y=\"128\" left=\"13.5\" right=\"33.0\" width=\"39\"/>\r\n  </character>\r\n  <character uvIndex=\"99\" character=\"³\" byte=\"179\" type=\"numerical\">\r\n    <regular x=\"6023\" y=\"0\" left=\"25.0\" right=\"38.0\" width=\"35\"/>\r\n    <bold x=\"6419\" y=\"0\" left=\"24.0\" right=\"39.0\" width=\"35\"/>\r\n    <italic x=\"4510\" y=\"128\" left=\"15.0\" right=\"32.5\" width=\"35\"/>\r\n    <boldItalic x=\"4508\" y=\"128\" left=\"14.0\" right=\"33.5\" width=\"39\"/>\r\n  </character>\r\n  <character uvIndex=\"100\" character=\"´\" byte=\"180\" type=\"special\">\r\n    <regular x=\"6066\" y=\"0\" left=\"29.0\" right=\"39.0\" width=\"44\"/>\r\n    <bold x=\"6466\" y=\"0\" left=\"27.5\" right=\"40.0\" width=\"44\"/>\r\n    <italic x=\"4653\" y=\"128\" left=\"22.5\" right=\"35.0\" width=\"25\"/>\r\n    <boldItalic x=\"4651\" y=\"128\" left=\"21.5\" right=\"36.5\" width=\"30\"/>\r\n  </character>\r\n  <character uvIndex=\"101\" character=\"¿\" byte=\"191\" type=\"special\">\r\n    <regular x=\"6118\" y=\"0\" left=\"23.0\" right=\"40.0\" width=\"47\"/>\r\n    <bold x=\"6522\" y=\"0\" left=\"22.0\" right=\"41.0\" width=\"47\"/>\r\n    <italic x=\"4751\" y=\"128\" left=\"7.5\" right=\"27.5\" width=\"40\"/>\r\n    <boldItalic x=\"4749\" y=\"128\" left=\"6.5\" right=\"29.0\" width=\"45\"/>\r\n  </character>\r\n  <character uvIndex=\"102\" character=\"À\" byte=\"192\" type=\"alphabetical\">\r\n    <regular x=\"6173\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"6581\" y=\"0\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"4870\" y=\"128\" left=\"3.0\" right=\"32.5\" width=\"59\"/>\r\n    <boldItalic x=\"4867\" y=\"128\" left=\"1.5\" right=\"33.5\" width=\"64\"/>\r\n  </character>\r\n  <character uvIndex=\"103\" character=\"Á\" byte=\"193\" type=\"alphabetical\">\r\n    <regular x=\"6241\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"6653\" y=\"0\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"4998\" y=\"128\" left=\"3.0\" right=\"34.5\" width=\"63\"/>\r\n    <boldItalic x=\"4995\" y=\"128\" left=\"1.5\" right=\"36.0\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"104\" character=\"Â\" byte=\"194\" type=\"alphabetical\">\r\n    <regular x=\"6309\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"6725\" y=\"0\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"5126\" y=\"128\" left=\"3.0\" right=\"34.5\" width=\"63\"/>\r\n    <boldItalic x=\"5123\" y=\"128\" left=\"1.5\" right=\"35.5\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"105\" character=\"Ã\" byte=\"195\" type=\"alphabetical\">\r\n    <regular x=\"6377\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"6797\" y=\"0\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"5254\" y=\"128\" left=\"3.0\" right=\"37.0\" width=\"68\"/>\r\n    <boldItalic x=\"5251\" y=\"128\" left=\"1.5\" right=\"38.0\" width=\"73\"/>\r\n  </character>\r\n  <character uvIndex=\"106\" character=\"Ä\" byte=\"196\" type=\"alphabetical\">\r\n    <regular x=\"6445\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"6869\" y=\"0\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"5382\" y=\"128\" left=\"3.0\" right=\"36.0\" width=\"66\"/>\r\n    <boldItalic x=\"5379\" y=\"128\" left=\"1.5\" right=\"37.5\" width=\"72\"/>\r\n  </character>\r\n  <character uvIndex=\"107\" character=\"Å\" byte=\"197\" type=\"alphabetical\">\r\n    <regular x=\"6513\" y=\"0\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"6941\" y=\"0\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"5510\" y=\"128\" left=\"3.0\" right=\"34.5\" width=\"63\"/>\r\n    <boldItalic x=\"5507\" y=\"128\" left=\"1.5\" right=\"35.5\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"108\" character=\"Æ\" byte=\"198\" type=\"alphabetical\">\r\n    <regular x=\"6581\" y=\"0\" left=\"10.5\" right=\"50.5\" width=\"86\"/>\r\n    <bold x=\"7013\" y=\"0\" left=\"9.5\" right=\"51.5\" width=\"86\"/>\r\n    <italic x=\"5636\" y=\"128\" left=\"0.0\" right=\"45.5\" width=\"91\"/>\r\n    <boldItalic x=\"5636\" y=\"128\" left=\"0.0\" right=\"46.5\" width=\"93\"/>\r\n  </character>\r\n  <character uvIndex=\"109\" character=\"Ç\" byte=\"199\" type=\"alphabetical\">\r\n    <regular x=\"6675\" y=\"0\" left=\"18.5\" right=\"44.5\" width=\"61\"/>\r\n    <bold x=\"7111\" y=\"0\" left=\"17.5\" right=\"45.5\" width=\"61\"/>\r\n    <italic x=\"5776\" y=\"128\" left=\"8.0\" right=\"39.5\" width=\"63\"/>\r\n    <boldItalic x=\"5774\" y=\"128\" left=\"7.0\" right=\"40.5\" width=\"67\"/>\r\n  </character>\r\n  <character uvIndex=\"110\" character=\"È\" byte=\"200\" type=\"alphabetical\">\r\n    <regular x=\"6744\" y=\"0\" left=\"22.0\" right=\"42.5\" width=\"56\"/>\r\n    <bold x=\"7184\" y=\"0\" left=\"21.0\" right=\"43.5\" width=\"56\"/>\r\n    <italic x=\"5903\" y=\"128\" left=\"7.5\" right=\"38.0\" width=\"61\"/>\r\n    <boldItalic x=\"5901\" y=\"128\" left=\"6.5\" right=\"39.0\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"111\" character=\"É\" byte=\"201\" type=\"alphabetical\">\r\n    <regular x=\"6808\" y=\"0\" left=\"22.0\" right=\"42.5\" width=\"56\"/>\r\n    <bold x=\"7252\" y=\"0\" left=\"21.0\" right=\"43.5\" width=\"56\"/>\r\n    <italic x=\"6031\" y=\"128\" left=\"7.5\" right=\"38.0\" width=\"61\"/>\r\n    <boldItalic x=\"6029\" y=\"128\" left=\"6.5\" right=\"39.0\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"112\" character=\"Ê\" byte=\"202\" type=\"alphabetical\">\r\n    <regular x=\"6872\" y=\"0\" left=\"22.0\" right=\"42.5\" width=\"56\"/>\r\n    <bold x=\"7320\" y=\"0\" left=\"21.0\" right=\"43.5\" width=\"56\"/>\r\n    <italic x=\"6159\" y=\"128\" left=\"7.5\" right=\"38.0\" width=\"61\"/>\r\n    <boldItalic x=\"6157\" y=\"128\" left=\"6.5\" right=\"39.0\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"113\" character=\"Ë\" byte=\"203\" type=\"alphabetical\">\r\n    <regular x=\"6936\" y=\"0\" left=\"22.0\" right=\"42.5\" width=\"56\"/>\r\n    <bold x=\"7388\" y=\"0\" left=\"21.0\" right=\"43.5\" width=\"56\"/>\r\n    <italic x=\"6287\" y=\"128\" left=\"7.5\" right=\"38.0\" width=\"61\"/>\r\n    <boldItalic x=\"6285\" y=\"128\" left=\"6.5\" right=\"39.0\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"114\" character=\"Ì\" byte=\"204\" type=\"alphabetical\">\r\n    <regular x=\"7000\" y=\"0\" left=\"26.5\" right=\"34.5\" width=\"26\"/>\r\n    <bold x=\"7456\" y=\"0\" left=\"25.5\" right=\"35.5\" width=\"26\"/>\r\n    <italic x=\"6430\" y=\"128\" left=\"15.0\" right=\"31.0\" width=\"32\"/>\r\n    <boldItalic x=\"6428\" y=\"128\" left=\"14.0\" right=\"32.0\" width=\"36\"/>\r\n  </character>\r\n  <character uvIndex=\"115\" character=\"Í\" byte=\"205\" type=\"alphabetical\">\r\n    <regular x=\"7034\" y=\"0\" left=\"29.0\" right=\"37.0\" width=\"26\"/>\r\n    <bold x=\"7494\" y=\"0\" left=\"27.5\" right=\"38.0\" width=\"26\"/>\r\n    <italic x=\"6558\" y=\"128\" left=\"15.0\" right=\"34.5\" width=\"39\"/>\r\n    <boldItalic x=\"6556\" y=\"128\" left=\"14.0\" right=\"36.0\" width=\"44\"/>\r\n  </character>\r\n  <character uvIndex=\"116\" character=\"Î\" byte=\"206\" type=\"alphabetical\">\r\n    <regular x=\"7068\" y=\"0\" left=\"25.0\" right=\"38.5\" width=\"28\"/>\r\n    <bold x=\"7532\" y=\"0\" left=\"24.0\" right=\"39.5\" width=\"28\"/>\r\n    <italic x=\"6686\" y=\"128\" left=\"15.0\" right=\"34.5\" width=\"39\"/>\r\n    <boldItalic x=\"6684\" y=\"128\" left=\"14.0\" right=\"35.5\" width=\"43\"/>\r\n  </character>\r\n  <character uvIndex=\"117\" character=\"Ï\" byte=\"207\" type=\"alphabetical\">\r\n    <regular x=\"7104\" y=\"0\" left=\"25.5\" right=\"38.0\" width=\"26\"/>\r\n    <bold x=\"7572\" y=\"0\" left=\"24.5\" right=\"39.0\" width=\"26\"/>\r\n    <italic x=\"6814\" y=\"128\" left=\"15.0\" right=\"36.0\" width=\"42\"/>\r\n    <boldItalic x=\"6812\" y=\"128\" left=\"14.0\" right=\"37.5\" width=\"47\"/>\r\n  </character>\r\n  <character uvIndex=\"118\" character=\"Ð\" byte=\"208\" type=\"alphabetical\">\r\n    <regular x=\"7138\" y=\"0\" left=\"15.0\" right=\"46.0\" width=\"68\"/>\r\n    <bold x=\"7610\" y=\"0\" left=\"14.0\" right=\"47.0\" width=\"68\"/>\r\n    <italic x=\"6922\" y=\"128\" left=\"5.0\" right=\"38.0\" width=\"66\"/>\r\n    <boldItalic x=\"6920\" y=\"128\" left=\"4.0\" right=\"39.5\" width=\"71\"/>\r\n  </character>\r\n  <character uvIndex=\"119\" character=\"Ñ\" byte=\"209\" type=\"alphabetical\">\r\n    <regular x=\"7214\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"66\"/>\r\n    <bold x=\"7690\" y=\"0\" left=\"18.5\" right=\"45.0\" width=\"66\"/>\r\n    <italic x=\"7050\" y=\"128\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n    <boldItalic x=\"7048\" y=\"128\" left=\"4.0\" right=\"40.5\" width=\"73\"/>\r\n  </character>\r\n  <character uvIndex=\"120\" character=\"Ò\" byte=\"210\" type=\"alphabetical\">\r\n    <regular x=\"7288\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"69\"/>\r\n    <bold x=\"7768\" y=\"0\" left=\"15.5\" right=\"47.5\" width=\"69\"/>\r\n    <italic x=\"7180\" y=\"128\" left=\"6.0\" right=\"38.5\" width=\"65\"/>\r\n    <boldItalic x=\"7178\" y=\"128\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"121\" character=\"Ó\" byte=\"211\" type=\"alphabetical\">\r\n    <regular x=\"7365\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"69\"/>\r\n    <bold x=\"7849\" y=\"0\" left=\"15.5\" right=\"47.5\" width=\"69\"/>\r\n    <italic x=\"7308\" y=\"128\" left=\"6.0\" right=\"38.5\" width=\"65\"/>\r\n    <boldItalic x=\"7306\" y=\"128\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"122\" character=\"Ô\" byte=\"212\" type=\"alphabetical\">\r\n    <regular x=\"7442\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"69\"/>\r\n    <bold x=\"7930\" y=\"0\" left=\"15.5\" right=\"47.5\" width=\"69\"/>\r\n    <italic x=\"7436\" y=\"128\" left=\"6.0\" right=\"38.5\" width=\"65\"/>\r\n    <boldItalic x=\"7434\" y=\"128\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"123\" character=\"Õ\" byte=\"213\" type=\"alphabetical\">\r\n    <regular x=\"7519\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"69\"/>\r\n    <bold x=\"8011\" y=\"0\" left=\"15.5\" right=\"47.5\" width=\"69\"/>\r\n    <italic x=\"7564\" y=\"128\" left=\"6.0\" right=\"38.5\" width=\"65\"/>\r\n    <boldItalic x=\"7562\" y=\"128\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"124\" character=\"Ö\" byte=\"214\" type=\"alphabetical\">\r\n    <regular x=\"7596\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"69\"/>\r\n    <bold x=\"8092\" y=\"0\" left=\"15.5\" right=\"47.5\" width=\"69\"/>\r\n    <italic x=\"7692\" y=\"128\" left=\"6.0\" right=\"38.5\" width=\"65\"/>\r\n    <boldItalic x=\"7690\" y=\"128\" left=\"5.0\" right=\"39.5\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"125\" character=\"Ù\" byte=\"217\" type=\"alphabetical\">\r\n    <regular x=\"7673\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"64\"/>\r\n    <bold x=\"4\" y=\"128\" left=\"18.5\" right=\"45.0\" width=\"64\"/>\r\n    <italic x=\"7823\" y=\"128\" left=\"7.5\" right=\"39.5\" width=\"64\"/>\r\n    <boldItalic x=\"7821\" y=\"128\" left=\"6.5\" right=\"41.0\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"126\" character=\"Ú\" byte=\"218\" type=\"alphabetical\">\r\n    <regular x=\"7745\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"64\"/>\r\n    <bold x=\"80\" y=\"128\" left=\"18.5\" right=\"45.0\" width=\"64\"/>\r\n    <italic x=\"7951\" y=\"128\" left=\"7.5\" right=\"39.5\" width=\"64\"/>\r\n    <boldItalic x=\"7949\" y=\"128\" left=\"6.5\" right=\"41.0\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"127\" character=\"Û\" byte=\"219\" type=\"alphabetical\">\r\n    <regular x=\"7817\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"64\"/>\r\n    <bold x=\"156\" y=\"128\" left=\"18.5\" right=\"45.0\" width=\"64\"/>\r\n    <italic x=\"8079\" y=\"128\" left=\"7.5\" right=\"39.5\" width=\"64\"/>\r\n    <boldItalic x=\"8077\" y=\"128\" left=\"6.5\" right=\"41.0\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"128\" character=\"Ü\" byte=\"220\" type=\"alphabetical\">\r\n    <regular x=\"7889\" y=\"0\" left=\"19.5\" right=\"44.0\" width=\"64\"/>\r\n    <bold x=\"232\" y=\"128\" left=\"18.5\" right=\"45.0\" width=\"64\"/>\r\n    <italic x=\"15\" y=\"256\" left=\"7.5\" right=\"39.5\" width=\"64\"/>\r\n    <boldItalic x=\"13\" y=\"256\" left=\"6.5\" right=\"41.0\" width=\"69\"/>\r\n  </character>\r\n  <character uvIndex=\"129\" character=\"Ý\" byte=\"221\" type=\"alphabetical\">\r\n    <regular x=\"7961\" y=\"0\" left=\"18.0\" right=\"45.0\" width=\"55\"/>\r\n    <bold x=\"308\" y=\"128\" left=\"17.0\" right=\"46.0\" width=\"55\"/>\r\n    <italic x=\"155\" y=\"256\" left=\"13.5\" right=\"40.5\" width=\"54\"/>\r\n    <boldItalic x=\"153\" y=\"256\" left=\"12.5\" right=\"42.0\" width=\"59\"/>\r\n  </character>\r\n  <character uvIndex=\"130\" character=\"ß\" byte=\"223\" type=\"alphabetical\">\r\n    <regular x=\"8024\" y=\"0\" left=\"22.0\" right=\"43.5\" width=\"55\"/>\r\n    <bold x=\"375\" y=\"128\" left=\"21.0\" right=\"44.5\" width=\"55\"/>\r\n    <italic x=\"271\" y=\"256\" left=\"7.5\" right=\"34.5\" width=\"54\"/>\r\n    <boldItalic x=\"269\" y=\"256\" left=\"6.5\" right=\"35.5\" width=\"58\"/>\r\n  </character>\r\n  <character uvIndex=\"131\" character=\"à\" byte=\"224\" type=\"alphabetical\">\r\n    <regular x=\"8087\" y=\"0\" left=\"21.0\" right=\"41.0\" width=\"54\"/>\r\n    <bold x=\"442\" y=\"128\" left=\"20.0\" right=\"42.0\" width=\"54\"/>\r\n    <italic x=\"400\" y=\"256\" left=\"8.0\" right=\"32.0\" width=\"48\"/>\r\n    <boldItalic x=\"398\" y=\"256\" left=\"7.0\" right=\"33.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"132\" character=\"á\" byte=\"225\" type=\"alphabetical\">\r\n    <regular x=\"4\" y=\"128\" left=\"21.0\" right=\"41.0\" width=\"54\"/>\r\n    <bold x=\"508\" y=\"128\" left=\"20.0\" right=\"42.0\" width=\"54\"/>\r\n    <italic x=\"528\" y=\"256\" left=\"8.0\" right=\"34.5\" width=\"53\"/>\r\n    <boldItalic x=\"526\" y=\"256\" left=\"7.0\" right=\"35.5\" width=\"57\"/>\r\n  </character>\r\n  <character uvIndex=\"133\" character=\"â\" byte=\"226\" type=\"alphabetical\">\r\n    <regular x=\"66\" y=\"128\" left=\"21.0\" right=\"41.0\" width=\"54\"/>\r\n    <bold x=\"574\" y=\"128\" left=\"20.0\" right=\"42.0\" width=\"54\"/>\r\n    <italic x=\"656\" y=\"256\" left=\"8.0\" right=\"32.0\" width=\"48\"/>\r\n    <boldItalic x=\"654\" y=\"256\" left=\"7.0\" right=\"33.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"134\" character=\"ã\" byte=\"227\" type=\"alphabetical\">\r\n    <regular x=\"128\" y=\"128\" left=\"21.0\" right=\"41.0\" width=\"54\"/>\r\n    <bold x=\"640\" y=\"128\" left=\"20.0\" right=\"42.0\" width=\"54\"/>\r\n    <italic x=\"784\" y=\"256\" left=\"8.0\" right=\"34.0\" width=\"52\"/>\r\n    <boldItalic x=\"782\" y=\"256\" left=\"7.0\" right=\"35.5\" width=\"57\"/>\r\n  </character>\r\n  <character uvIndex=\"135\" character=\"ä\" byte=\"228\" type=\"alphabetical\">\r\n    <regular x=\"190\" y=\"128\" left=\"21.0\" right=\"41.0\" width=\"54\"/>\r\n    <bold x=\"706\" y=\"128\" left=\"20.0\" right=\"42.0\" width=\"54\"/>\r\n    <italic x=\"912\" y=\"256\" left=\"8.0\" right=\"33.5\" width=\"51\"/>\r\n    <boldItalic x=\"910\" y=\"256\" left=\"7.0\" right=\"34.5\" width=\"55\"/>\r\n  </character>\r\n  <character uvIndex=\"136\" character=\"å\" byte=\"229\" type=\"alphabetical\">\r\n    <regular x=\"252\" y=\"128\" left=\"21.0\" right=\"41.0\" width=\"54\"/>\r\n    <bold x=\"772\" y=\"128\" left=\"20.0\" right=\"42.0\" width=\"54\"/>\r\n    <italic x=\"1040\" y=\"256\" left=\"8.0\" right=\"33.0\" width=\"50\"/>\r\n    <boldItalic x=\"1038\" y=\"256\" left=\"7.0\" right=\"34.0\" width=\"54\"/>\r\n  </character>\r\n  <character uvIndex=\"137\" character=\"æ\" byte=\"230\" type=\"alphabetical\">\r\n    <regular x=\"314\" y=\"128\" left=\"13.0\" right=\"51.0\" width=\"86\"/>\r\n    <bold x=\"838\" y=\"128\" left=\"12.0\" right=\"52.0\" width=\"86\"/>\r\n    <italic x=\"1156\" y=\"256\" left=\"0.0\" right=\"42.0\" width=\"84\"/>\r\n    <boldItalic x=\"1156\" y=\"256\" left=\"0.0\" right=\"43.0\" width=\"86\"/>\r\n  </character>\r\n  <character uvIndex=\"138\" character=\"ç\" byte=\"231\" type=\"alphabetical\">\r\n    <regular x=\"408\" y=\"128\" left=\"22.0\" right=\"41.0\" width=\"48\"/>\r\n    <bold x=\"936\" y=\"128\" left=\"21.0\" right=\"42.0\" width=\"48\"/>\r\n    <italic x=\"1301\" y=\"256\" left=\"10.5\" right=\"34.0\" width=\"47\"/>\r\n    <boldItalic x=\"1299\" y=\"256\" left=\"9.5\" right=\"35.0\" width=\"51\"/>\r\n  </character>\r\n  <character uvIndex=\"139\" character=\"è\" byte=\"232\" type=\"alphabetical\">\r\n    <regular x=\"464\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"996\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"1426\" y=\"256\" left=\"9.0\" right=\"33.5\" width=\"49\"/>\r\n    <boldItalic x=\"1424\" y=\"256\" left=\"8.0\" right=\"34.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"140\" character=\"é\" byte=\"233\" type=\"alphabetical\">\r\n    <regular x=\"526\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"1062\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"1554\" y=\"256\" left=\"9.0\" right=\"35.5\" width=\"53\"/>\r\n    <boldItalic x=\"1552\" y=\"256\" left=\"8.0\" right=\"37.0\" width=\"58\"/>\r\n  </character>\r\n  <character uvIndex=\"141\" character=\"ê\" byte=\"234\" type=\"alphabetical\">\r\n    <regular x=\"588\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"1128\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"1682\" y=\"256\" left=\"9.0\" right=\"33.5\" width=\"49\"/>\r\n    <boldItalic x=\"1680\" y=\"256\" left=\"8.0\" right=\"34.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"142\" character=\"ë\" byte=\"235\" type=\"alphabetical\">\r\n    <regular x=\"650\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"1194\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"1810\" y=\"256\" left=\"9.0\" right=\"34.5\" width=\"51\"/>\r\n    <boldItalic x=\"1808\" y=\"256\" left=\"8.0\" right=\"36.0\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"143\" character=\"ì\" byte=\"236\" type=\"alphabetical\">\r\n    <regular x=\"712\" y=\"128\" left=\"24.5\" right=\"35.0\" width=\"27\"/>\r\n    <bold x=\"1260\" y=\"128\" left=\"23.5\" right=\"36.0\" width=\"27\"/>\r\n    <italic x=\"1951\" y=\"256\" left=\"15.5\" right=\"28.5\" width=\"26\"/>\r\n    <boldItalic x=\"1949\" y=\"256\" left=\"14.5\" right=\"30.0\" width=\"31\"/>\r\n  </character>\r\n  <character uvIndex=\"144\" character=\"í\" byte=\"237\" type=\"alphabetical\">\r\n    <regular x=\"747\" y=\"128\" left=\"29.0\" right=\"39.0\" width=\"27\"/>\r\n    <bold x=\"1299\" y=\"128\" left=\"28.0\" right=\"40.0\" width=\"27\"/>\r\n    <italic x=\"2079\" y=\"256\" left=\"15.5\" right=\"35.5\" width=\"40\"/>\r\n    <boldItalic x=\"2077\" y=\"256\" left=\"14.5\" right=\"36.5\" width=\"44\"/>\r\n  </character>\r\n  <character uvIndex=\"145\" character=\"î\" byte=\"238\" type=\"alphabetical\">\r\n    <regular x=\"782\" y=\"128\" left=\"25.0\" right=\"38.5\" width=\"28\"/>\r\n    <bold x=\"1338\" y=\"128\" left=\"24.0\" right=\"39.5\" width=\"28\"/>\r\n    <italic x=\"2207\" y=\"256\" left=\"15.5\" right=\"32.5\" width=\"34\"/>\r\n    <boldItalic x=\"2205\" y=\"256\" left=\"14.5\" right=\"34.0\" width=\"39\"/>\r\n  </character>\r\n  <character uvIndex=\"146\" character=\"ï\" byte=\"239\" type=\"alphabetical\">\r\n    <regular x=\"818\" y=\"128\" left=\"25.5\" right=\"38.5\" width=\"27\"/>\r\n    <bold x=\"1378\" y=\"128\" left=\"24.5\" right=\"39.5\" width=\"27\"/>\r\n    <italic x=\"2335\" y=\"256\" left=\"15.5\" right=\"34.0\" width=\"37\"/>\r\n    <boldItalic x=\"2333\" y=\"256\" left=\"14.5\" right=\"35.5\" width=\"42\"/>\r\n  </character>\r\n  <character uvIndex=\"147\" character=\"ð\" byte=\"240\" type=\"alphabetical\">\r\n    <regular x=\"853\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"1417\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"2450\" y=\"256\" left=\"9.0\" right=\"35.5\" width=\"53\"/>\r\n    <boldItalic x=\"2448\" y=\"256\" left=\"8.0\" right=\"36.5\" width=\"57\"/>\r\n  </character>\r\n  <character uvIndex=\"148\" character=\"ñ\" byte=\"241\" type=\"alphabetical\">\r\n    <regular x=\"915\" y=\"128\" left=\"22.0\" right=\"42.0\" width=\"56\"/>\r\n    <bold x=\"1483\" y=\"128\" left=\"21.0\" right=\"43.0\" width=\"56\"/>\r\n    <italic x=\"2575\" y=\"256\" left=\"7.5\" right=\"35.0\" width=\"55\"/>\r\n    <boldItalic x=\"2573\" y=\"256\" left=\"6.5\" right=\"36.5\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"149\" character=\"ò\" byte=\"242\" type=\"alphabetical\">\r\n    <regular x=\"979\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"1551\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"2706\" y=\"256\" left=\"9.0\" right=\"33.5\" width=\"49\"/>\r\n    <boldItalic x=\"2704\" y=\"256\" left=\"8.0\" right=\"34.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"150\" character=\"ó\" byte=\"243\" type=\"alphabetical\">\r\n    <regular x=\"1041\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"1617\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"2834\" y=\"256\" left=\"9.0\" right=\"35.0\" width=\"52\"/>\r\n    <boldItalic x=\"2832\" y=\"256\" left=\"8.0\" right=\"36.5\" width=\"57\"/>\r\n  </character>\r\n  <character uvIndex=\"151\" character=\"ô\" byte=\"244\" type=\"alphabetical\">\r\n    <regular x=\"1103\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"1683\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"2962\" y=\"256\" left=\"9.0\" right=\"33.5\" width=\"49\"/>\r\n    <boldItalic x=\"2960\" y=\"256\" left=\"8.0\" right=\"34.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"152\" character=\"õ\" byte=\"245\" type=\"alphabetical\">\r\n    <regular x=\"1165\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"1749\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"3090\" y=\"256\" left=\"9.0\" right=\"34.5\" width=\"51\"/>\r\n    <boldItalic x=\"3088\" y=\"256\" left=\"8.0\" right=\"36.0\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"153\" character=\"ö\" byte=\"246\" type=\"alphabetical\">\r\n    <regular x=\"1227\" y=\"128\" left=\"20.5\" right=\"43.0\" width=\"54\"/>\r\n    <bold x=\"1815\" y=\"128\" left=\"19.5\" right=\"44.0\" width=\"54\"/>\r\n    <italic x=\"3218\" y=\"256\" left=\"9.0\" right=\"34.0\" width=\"50\"/>\r\n    <boldItalic x=\"3216\" y=\"256\" left=\"8.0\" right=\"35.0\" width=\"54\"/>\r\n  </character>\r\n  <character uvIndex=\"154\" character=\"÷\" byte=\"247\" type=\"special\">\r\n    <regular x=\"1289\" y=\"128\" left=\"18.0\" right=\"45.5\" width=\"74\"/>\r\n    <bold x=\"1881\" y=\"128\" left=\"17.0\" right=\"46.5\" width=\"74\"/>\r\n    <italic x=\"3342\" y=\"256\" left=\"7.0\" right=\"36.0\" width=\"58\"/>\r\n    <boldItalic x=\"3340\" y=\"256\" left=\"6.0\" right=\"37.0\" width=\"62\"/>\r\n  </character>\r\n  <character uvIndex=\"155\" character=\"ø\" byte=\"248\" type=\"alphabetical\">\r\n    <regular x=\"1371\" y=\"128\" left=\"20.0\" right=\"43.5\" width=\"54\"/>\r\n    <bold x=\"1967\" y=\"128\" left=\"19.0\" right=\"44.5\" width=\"54\"/>\r\n    <italic x=\"3467\" y=\"256\" left=\"5.5\" right=\"37.0\" width=\"63\"/>\r\n    <boldItalic x=\"3465\" y=\"256\" left=\"4.5\" right=\"38.0\" width=\"67\"/>\r\n  </character>\r\n  <character uvIndex=\"156\" character=\"ù\" byte=\"249\" type=\"alphabetical\">\r\n    <regular x=\"1433\" y=\"128\" left=\"21.5\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"2033\" y=\"128\" left=\"20.5\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"3602\" y=\"256\" left=\"9.0\" right=\"34.5\" width=\"51\"/>\r\n    <boldItalic x=\"3600\" y=\"256\" left=\"8.0\" right=\"36.0\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"157\" character=\"ú\" byte=\"250\" type=\"alphabetical\">\r\n    <regular x=\"1497\" y=\"128\" left=\"21.5\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"2101\" y=\"128\" left=\"20.5\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"3730\" y=\"256\" left=\"9.0\" right=\"35.0\" width=\"52\"/>\r\n    <boldItalic x=\"3728\" y=\"256\" left=\"8.0\" right=\"36.0\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"158\" character=\"û\" byte=\"251\" type=\"alphabetical\">\r\n    <regular x=\"1561\" y=\"128\" left=\"21.5\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"2169\" y=\"128\" left=\"20.5\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"3858\" y=\"256\" left=\"9.0\" right=\"34.5\" width=\"51\"/>\r\n    <boldItalic x=\"3856\" y=\"256\" left=\"8.0\" right=\"36.0\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"159\" character=\"ü\" byte=\"252\" type=\"alphabetical\">\r\n    <regular x=\"1625\" y=\"128\" left=\"21.5\" right=\"41.5\" width=\"56\"/>\r\n    <bold x=\"2237\" y=\"128\" left=\"20.5\" right=\"42.5\" width=\"56\"/>\r\n    <italic x=\"3986\" y=\"256\" left=\"9.0\" right=\"34.5\" width=\"51\"/>\r\n    <boldItalic x=\"3984\" y=\"256\" left=\"8.0\" right=\"36.0\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"160\" character=\"ý\" byte=\"253\" type=\"alphabetical\">\r\n    <regular x=\"1689\" y=\"128\" left=\"20.0\" right=\"43.5\" width=\"52\"/>\r\n    <bold x=\"2305\" y=\"128\" left=\"19.0\" right=\"44.5\" width=\"52\"/>\r\n    <italic x=\"4107\" y=\"256\" left=\"5.5\" right=\"36.5\" width=\"62\"/>\r\n    <boldItalic x=\"4104\" y=\"256\" left=\"4.0\" right=\"38.0\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"161\" character=\"ÿ\" byte=\"255\" type=\"alphabetical\">\r\n    <regular x=\"1749\" y=\"128\" left=\"20.0\" right=\"43.5\" width=\"52\"/>\r\n    <bold x=\"2369\" y=\"128\" left=\"19.0\" right=\"44.5\" width=\"52\"/>\r\n    <italic x=\"4235\" y=\"256\" left=\"5.5\" right=\"36.5\" width=\"62\"/>\r\n    <boldItalic x=\"4232\" y=\"256\" left=\"4.0\" right=\"38.0\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"162\" character=\"Ā\" byte=\"256\" type=\"alphabetical\">\r\n    <regular x=\"1809\" y=\"128\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"2433\" y=\"128\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"4358\" y=\"256\" left=\"3.0\" right=\"36.0\" width=\"66\"/>\r\n    <boldItalic x=\"4355\" y=\"256\" left=\"1.5\" right=\"37.0\" width=\"71\"/>\r\n  </character>\r\n  <character uvIndex=\"163\" character=\"ā\" byte=\"257\" type=\"alphabetical\">\r\n    <regular x=\"1877\" y=\"128\" left=\"21.0\" right=\"41.0\" width=\"54\"/>\r\n    <bold x=\"2505\" y=\"128\" left=\"20.0\" right=\"42.0\" width=\"54\"/>\r\n    <italic x=\"4496\" y=\"256\" left=\"8.0\" right=\"33.0\" width=\"50\"/>\r\n    <boldItalic x=\"4494\" y=\"256\" left=\"7.0\" right=\"34.0\" width=\"54\"/>\r\n  </character>\r\n  <character uvIndex=\"164\" character=\"Ă\" byte=\"258\" type=\"alphabetical\">\r\n    <regular x=\"1939\" y=\"128\" left=\"17.0\" right=\"46.5\" width=\"60\"/>\r\n    <bold x=\"2571\" y=\"128\" left=\"16.0\" right=\"47.5\" width=\"60\"/>\r\n    <italic x=\"4614\" y=\"256\" left=\"3.0\" right=\"37.5\" width=\"69\"/>\r\n    <boldItalic x=\"4611\" y=\"256\" left=\"1.5\" right=\"38.5\" width=\"74\"/>\r\n  </character>\r\n  <character uvIndex=\"165\" character=\"ă\" byte=\"259\" type=\"alphabetical\">\r\n    <regular x=\"2007\" y=\"128\" left=\"21.0\" right=\"41.0\" width=\"54\"/>\r\n    <bold x=\"2643\" y=\"128\" left=\"20.0\" right=\"42.0\" width=\"54\"/>\r\n    <italic x=\"4752\" y=\"256\" left=\"8.0\" right=\"33.5\" width=\"51\"/>\r\n    <boldItalic x=\"4750\" y=\"256\" left=\"7.0\" right=\"35.0\" width=\"56\"/>\r\n  </character>\r\n</font>\r\n"
  },
  {
    "path": "fonts/fonts.xml",
    "content": "<fonts>\r\n\t<font path=\"fonts/dejavu_sans\"/>\r\n\t<font path=\"fonts/toms_handwritten\"/>\r\n</fonts>"
  },
  {
    "path": "fonts/toms_handwritten/font.xml",
    "content": "<?xml version=\"1.0\" ?>\r\n<font name=\"toms_handwritten\" width=\"64\" language=\"latin\">\r\n  <character uvIndex=\"0\" character=\"!\" byte=\"33\" type=\"special\">\r\n    <regular x=\"4\" y=\"0\" left=\"29.5\" right=\"33.5\" width=\"16\"/>\r\n    <bold x=\"4\" y=\"0\" left=\"28.5\" right=\"34.5\" width=\"16\"/>\r\n    <italic x=\"36\" y=\"0\" left=\"18.0\" right=\"30.0\" width=\"24\"/>\r\n    <boldItalic x=\"33\" y=\"0\" left=\"16.5\" right=\"31.0\" width=\"29\"/>\r\n  </character>\r\n  <character uvIndex=\"1\" character=\"&quot;\" byte=\"34\" type=\"special\">\r\n    <regular x=\"28\" y=\"0\" left=\"27.5\" right=\"35.5\" width=\"24\"/>\r\n    <bold x=\"32\" y=\"0\" left=\"26.5\" right=\"36.5\" width=\"24\"/>\r\n    <italic x=\"175\" y=\"0\" left=\"23.5\" right=\"35.5\" width=\"24\"/>\r\n    <boldItalic x=\"173\" y=\"0\" left=\"22.5\" right=\"36.5\" width=\"28\"/>\r\n  </character>\r\n  <character uvIndex=\"2\" character=\"#\" byte=\"35\" type=\"special\">\r\n    <regular x=\"60\" y=\"0\" left=\"19.5\" right=\"43.5\" width=\"56\"/>\r\n    <bold x=\"68\" y=\"0\" left=\"18.5\" right=\"44.5\" width=\"56\"/>\r\n    <italic x=\"278\" y=\"0\" left=\"11.0\" right=\"37.0\" width=\"52\"/>\r\n    <boldItalic x=\"276\" y=\"0\" left=\"10.0\" right=\"38.0\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"3\" character=\"$\" byte=\"36\" type=\"special\">\r\n    <regular x=\"124\" y=\"0\" left=\"19.0\" right=\"44.0\" width=\"58\"/>\r\n    <bold x=\"136\" y=\"0\" left=\"18.0\" right=\"45.0\" width=\"58\"/>\r\n    <italic x=\"405\" y=\"0\" left=\"10.5\" right=\"36.0\" width=\"51\"/>\r\n    <boldItalic x=\"403\" y=\"0\" left=\"9.5\" right=\"37.0\" width=\"55\"/>\r\n  </character>\r\n  <character uvIndex=\"4\" character=\"%\" byte=\"37\" type=\"special\">\r\n    <regular x=\"190\" y=\"0\" left=\"19.0\" right=\"43.5\" width=\"57\"/>\r\n    <bold x=\"206\" y=\"0\" left=\"18.0\" right=\"44.5\" width=\"57\"/>\r\n    <italic x=\"538\" y=\"0\" left=\"13.0\" right=\"41.5\" width=\"57\"/>\r\n    <boldItalic x=\"535\" y=\"0\" left=\"11.5\" right=\"42.5\" width=\"62\"/>\r\n  </character>\r\n  <character uvIndex=\"5\" character=\"&amp;\" byte=\"38\" type=\"special\">\r\n    <regular x=\"255\" y=\"0\" left=\"18.5\" right=\"44.5\" width=\"60\"/>\r\n    <bold x=\"275\" y=\"0\" left=\"17.5\" right=\"45.5\" width=\"60\"/>\r\n    <italic x=\"666\" y=\"0\" left=\"13.0\" right=\"37.0\" width=\"48\"/>\r\n    <boldItalic x=\"664\" y=\"0\" left=\"12.0\" right=\"38.0\" width=\"52\"/>\r\n  </character>\r\n  <character uvIndex=\"6\" character=\"'\" byte=\"39\" type=\"special\">\r\n    <regular x=\"323\" y=\"0\" left=\"29.5\" right=\"33.0\" width=\"15\"/>\r\n    <bold x=\"347\" y=\"0\" left=\"28.5\" right=\"34.0\" width=\"15\"/>\r\n    <italic x=\"824\" y=\"0\" left=\"28.0\" right=\"33.0\" width=\"10\"/>\r\n    <boldItalic x=\"822\" y=\"0\" left=\"27.0\" right=\"34.0\" width=\"14\"/>\r\n  </character>\r\n  <character uvIndex=\"7\" character=\"(\" byte=\"40\" type=\"special\">\r\n    <regular x=\"346\" y=\"0\" left=\"21.0\" right=\"41.5\" width=\"49\"/>\r\n    <bold x=\"374\" y=\"0\" left=\"20.0\" right=\"42.5\" width=\"49\"/>\r\n    <italic x=\"915\" y=\"0\" left=\"9.5\" right=\"41.0\" width=\"63\"/>\r\n    <boldItalic x=\"913\" y=\"0\" left=\"8.5\" right=\"42.0\" width=\"67\"/>\r\n  </character>\r\n  <character uvIndex=\"8\" character=\")\" byte=\"41\" type=\"special\">\r\n    <regular x=\"403\" y=\"0\" left=\"23.5\" right=\"39.5\" width=\"40\"/>\r\n    <bold x=\"435\" y=\"0\" left=\"22.5\" right=\"40.5\" width=\"40\"/>\r\n    <italic x=\"1047\" y=\"0\" left=\"11.5\" right=\"32.5\" width=\"42\"/>\r\n    <boldItalic x=\"1045\" y=\"0\" left=\"10.5\" right=\"33.5\" width=\"46\"/>\r\n  </character>\r\n  <character uvIndex=\"9\" character=\"*\" byte=\"42\" type=\"special\">\r\n    <regular x=\"451\" y=\"0\" left=\"23.0\" right=\"39.5\" width=\"41\"/>\r\n    <bold x=\"487\" y=\"0\" left=\"22.0\" right=\"40.5\" width=\"41\"/>\r\n    <italic x=\"1180\" y=\"0\" left=\"14.0\" right=\"33.0\" width=\"38\"/>\r\n    <boldItalic x=\"1178\" y=\"0\" left=\"13.0\" right=\"34.0\" width=\"42\"/>\r\n  </character>\r\n  <character uvIndex=\"10\" character=\"+\" byte=\"43\" type=\"special\">\r\n    <regular x=\"500\" y=\"0\" left=\"23.0\" right=\"39.5\" width=\"41\"/>\r\n    <bold x=\"540\" y=\"0\" left=\"22.0\" right=\"40.5\" width=\"41\"/>\r\n    <italic x=\"1312\" y=\"0\" left=\"16.0\" right=\"33.5\" width=\"35\"/>\r\n    <boldItalic x=\"1310\" y=\"0\" left=\"15.0\" right=\"34.5\" width=\"39\"/>\r\n  </character>\r\n  <character uvIndex=\"11\" character=\",\" byte=\"44\" type=\"special\">\r\n    <regular x=\"549\" y=\"0\" left=\"29.0\" right=\"33.5\" width=\"17\"/>\r\n    <bold x=\"593\" y=\"0\" left=\"28.0\" right=\"34.5\" width=\"17\"/>\r\n    <italic x=\"1431\" y=\"0\" left=\"11.5\" right=\"20.0\" width=\"17\"/>\r\n    <boldItalic x=\"1429\" y=\"0\" left=\"10.5\" right=\"21.0\" width=\"21\"/>\r\n  </character>\r\n  <character uvIndex=\"12\" character=\"-\" byte=\"45\" type=\"special\">\r\n    <regular x=\"574\" y=\"0\" left=\"21.5\" right=\"42.0\" width=\"48\"/>\r\n    <bold x=\"622\" y=\"0\" left=\"20.5\" right=\"43.0\" width=\"48\"/>\r\n    <italic x=\"1567\" y=\"0\" left=\"15.5\" right=\"36.5\" width=\"42\"/>\r\n    <boldItalic x=\"1565\" y=\"0\" left=\"14.5\" right=\"38.0\" width=\"47\"/>\r\n  </character>\r\n  <character uvIndex=\"13\" character=\".\" byte=\"46\" type=\"special\">\r\n    <regular x=\"630\" y=\"0\" left=\"30.0\" right=\"33.0\" width=\"14\"/>\r\n    <bold x=\"682\" y=\"0\" left=\"29.0\" right=\"34.0\" width=\"14\"/>\r\n    <italic x=\"1699\" y=\"0\" left=\"17.5\" right=\"21.0\" width=\"7\"/>\r\n    <boldItalic x=\"1696\" y=\"0\" left=\"16.0\" right=\"22.5\" width=\"13\"/>\r\n  </character>\r\n  <character uvIndex=\"14\" character=\"/\" byte=\"47\" type=\"special\">\r\n    <regular x=\"652\" y=\"0\" left=\"20.5\" right=\"45.5\" width=\"51\"/>\r\n    <bold x=\"708\" y=\"0\" left=\"19.5\" right=\"46.5\" width=\"51\"/>\r\n    <italic x=\"1805\" y=\"0\" left=\"6.5\" right=\"43.0\" width=\"73\"/>\r\n    <boldItalic x=\"1803\" y=\"0\" left=\"5.5\" right=\"44.0\" width=\"77\"/>\r\n  </character>\r\n  <character uvIndex=\"15\" character=\"0\" byte=\"48\" type=\"numerical\">\r\n    <regular x=\"711\" y=\"0\" left=\"18.5\" right=\"44.0\" width=\"59\"/>\r\n    <bold x=\"771\" y=\"0\" left=\"17.5\" right=\"45.0\" width=\"59\"/>\r\n    <italic x=\"1937\" y=\"0\" left=\"8.5\" right=\"41.5\" width=\"66\"/>\r\n    <boldItalic x=\"1935\" y=\"0\" left=\"7.5\" right=\"42.5\" width=\"70\"/>\r\n  </character>\r\n  <character uvIndex=\"16\" character=\"1\" byte=\"49\" type=\"numerical\">\r\n    <regular x=\"778\" y=\"0\" left=\"29.5\" right=\"33.5\" width=\"17\"/>\r\n    <bold x=\"842\" y=\"0\" left=\"28.5\" right=\"34.5\" width=\"17\"/>\r\n    <italic x=\"2082\" y=\"0\" left=\"17.0\" right=\"28.5\" width=\"23\"/>\r\n    <boldItalic x=\"2080\" y=\"0\" left=\"16.0\" right=\"29.5\" width=\"27\"/>\r\n  </character>\r\n  <character uvIndex=\"17\" character=\"2\" byte=\"50\" type=\"numerical\">\r\n    <regular x=\"803\" y=\"0\" left=\"22.5\" right=\"42.5\" width=\"42\"/>\r\n    <bold x=\"871\" y=\"0\" left=\"21.5\" right=\"43.5\" width=\"42\"/>\r\n    <italic x=\"2197\" y=\"0\" left=\"10.5\" right=\"38.5\" width=\"56\"/>\r\n    <boldItalic x=\"2194\" y=\"0\" left=\"9.0\" right=\"39.5\" width=\"61\"/>\r\n  </character>\r\n  <character uvIndex=\"18\" character=\"3\" byte=\"51\" type=\"numerical\">\r\n    <regular x=\"853\" y=\"0\" left=\"21.5\" right=\"41.5\" width=\"41\"/>\r\n    <bold x=\"925\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"41\"/>\r\n    <italic x=\"2324\" y=\"0\" left=\"10.0\" right=\"36.0\" width=\"52\"/>\r\n    <boldItalic x=\"2322\" y=\"0\" left=\"9.0\" right=\"37.5\" width=\"57\"/>\r\n  </character>\r\n  <character uvIndex=\"19\" character=\"4\" byte=\"52\" type=\"numerical\">\r\n    <regular x=\"902\" y=\"0\" left=\"19.0\" right=\"45.0\" width=\"54\"/>\r\n    <bold x=\"978\" y=\"0\" left=\"18.0\" right=\"46.0\" width=\"54\"/>\r\n    <italic x=\"2448\" y=\"0\" left=\"8.0\" right=\"35.5\" width=\"55\"/>\r\n    <boldItalic x=\"2446\" y=\"0\" left=\"7.0\" right=\"37.0\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"20\" character=\"5\" byte=\"53\" type=\"numerical\">\r\n    <regular x=\"964\" y=\"0\" left=\"17.5\" right=\"45.5\" width=\"57\"/>\r\n    <bold x=\"1044\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"57\"/>\r\n    <italic x=\"2574\" y=\"0\" left=\"7.0\" right=\"42.0\" width=\"70\"/>\r\n    <boldItalic x=\"2571\" y=\"0\" left=\"5.5\" right=\"43.0\" width=\"75\"/>\r\n  </character>\r\n  <character uvIndex=\"21\" character=\"6\" byte=\"54\" type=\"numerical\">\r\n    <regular x=\"1029\" y=\"0\" left=\"21.5\" right=\"42.5\" width=\"44\"/>\r\n    <bold x=\"1113\" y=\"0\" left=\"20.5\" right=\"43.5\" width=\"44\"/>\r\n    <italic x=\"2710\" y=\"0\" left=\"11.0\" right=\"38.5\" width=\"55\"/>\r\n    <boldItalic x=\"2708\" y=\"0\" left=\"10.0\" right=\"39.5\" width=\"59\"/>\r\n  </character>\r\n  <character uvIndex=\"22\" character=\"7\" byte=\"55\" type=\"numerical\">\r\n    <regular x=\"1081\" y=\"0\" left=\"20.0\" right=\"44.0\" width=\"49\"/>\r\n    <bold x=\"1169\" y=\"0\" left=\"19.0\" right=\"45.0\" width=\"49\"/>\r\n    <italic x=\"2837\" y=\"0\" left=\"10.5\" right=\"41.0\" width=\"61\"/>\r\n    <boldItalic x=\"2835\" y=\"0\" left=\"9.5\" right=\"42.5\" width=\"66\"/>\r\n  </character>\r\n  <character uvIndex=\"23\" character=\"8\" byte=\"56\" type=\"numerical\">\r\n    <regular x=\"1138\" y=\"0\" left=\"20.0\" right=\"43.5\" width=\"48\"/>\r\n    <bold x=\"1230\" y=\"0\" left=\"19.0\" right=\"44.5\" width=\"48\"/>\r\n    <italic x=\"2961\" y=\"0\" left=\"8.5\" right=\"34.5\" width=\"52\"/>\r\n    <boldItalic x=\"2959\" y=\"0\" left=\"7.5\" right=\"35.5\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"24\" character=\"9\" byte=\"57\" type=\"numerical\">\r\n    <regular x=\"1194\" y=\"0\" left=\"21.5\" right=\"41.5\" width=\"41\"/>\r\n    <bold x=\"1290\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"41\"/>\r\n    <italic x=\"3093\" y=\"0\" left=\"10.5\" right=\"37.0\" width=\"53\"/>\r\n    <boldItalic x=\"3091\" y=\"0\" left=\"9.5\" right=\"38.0\" width=\"57\"/>\r\n  </character>\r\n  <character uvIndex=\"25\" character=\":\" byte=\"58\" type=\"special\">\r\n    <regular x=\"1243\" y=\"0\" left=\"28.0\" right=\"33.0\" width=\"17\"/>\r\n    <bold x=\"1343\" y=\"0\" left=\"27.0\" right=\"34.0\" width=\"17\"/>\r\n    <italic x=\"3236\" y=\"0\" left=\"18.0\" right=\"25.5\" width=\"15\"/>\r\n    <boldItalic x=\"3234\" y=\"0\" left=\"17.0\" right=\"26.5\" width=\"19\"/>\r\n  </character>\r\n  <character uvIndex=\"26\" character=\";\" byte=\"59\" type=\"special\">\r\n    <regular x=\"1268\" y=\"0\" left=\"28.5\" right=\"34.5\" width=\"20\"/>\r\n    <bold x=\"1372\" y=\"0\" left=\"27.5\" right=\"35.5\" width=\"20\"/>\r\n    <italic x=\"3355\" y=\"0\" left=\"13.5\" right=\"27.0\" width=\"27\"/>\r\n    <boldItalic x=\"3353\" y=\"0\" left=\"12.5\" right=\"28.0\" width=\"31\"/>\r\n  </character>\r\n  <character uvIndex=\"27\" character=\"&lt;\" byte=\"60\" type=\"special\">\r\n    <regular x=\"1296\" y=\"0\" left=\"21.0\" right=\"42.0\" width=\"50\"/>\r\n    <bold x=\"1404\" y=\"0\" left=\"20.0\" right=\"43.0\" width=\"50\"/>\r\n    <italic x=\"3477\" y=\"0\" left=\"10.5\" right=\"33.0\" width=\"45\"/>\r\n    <boldItalic x=\"3475\" y=\"0\" left=\"9.5\" right=\"34.0\" width=\"49\"/>\r\n  </character>\r\n  <character uvIndex=\"28\" character=\"=\" byte=\"61\" type=\"special\">\r\n    <regular x=\"1354\" y=\"0\" left=\"23.0\" right=\"39.5\" width=\"41\"/>\r\n    <bold x=\"1466\" y=\"0\" left=\"22.0\" right=\"40.5\" width=\"41\"/>\r\n    <italic x=\"3609\" y=\"0\" left=\"12.5\" right=\"32.0\" width=\"39\"/>\r\n    <boldItalic x=\"3607\" y=\"0\" left=\"11.5\" right=\"33.0\" width=\"43\"/>\r\n  </character>\r\n  <character uvIndex=\"29\" character=\"&gt;\" byte=\"62\" type=\"special\">\r\n    <regular x=\"1403\" y=\"0\" left=\"19.5\" right=\"43.5\" width=\"56\"/>\r\n    <bold x=\"1519\" y=\"0\" left=\"18.5\" right=\"44.5\" width=\"56\"/>\r\n    <italic x=\"3733\" y=\"0\" left=\"10.5\" right=\"37.5\" width=\"54\"/>\r\n    <boldItalic x=\"3731\" y=\"0\" left=\"9.5\" right=\"38.5\" width=\"58\"/>\r\n  </character>\r\n  <character uvIndex=\"30\" character=\"?\" byte=\"63\" type=\"special\">\r\n    <regular x=\"1467\" y=\"0\" left=\"23.5\" right=\"39.5\" width=\"40\"/>\r\n    <bold x=\"1587\" y=\"0\" left=\"22.5\" right=\"40.5\" width=\"40\"/>\r\n    <italic x=\"3870\" y=\"0\" left=\"15.0\" right=\"36.5\" width=\"43\"/>\r\n    <boldItalic x=\"3868\" y=\"0\" left=\"14.0\" right=\"37.5\" width=\"47\"/>\r\n  </character>\r\n  <character uvIndex=\"31\" character=\"@\" byte=\"64\" type=\"special\">\r\n    <regular x=\"1515\" y=\"0\" left=\"15.5\" right=\"47.0\" width=\"71\"/>\r\n    <bold x=\"1639\" y=\"0\" left=\"14.5\" right=\"48.0\" width=\"71\"/>\r\n    <italic x=\"3979\" y=\"0\" left=\"5.5\" right=\"40.5\" width=\"70\"/>\r\n    <boldItalic x=\"3977\" y=\"0\" left=\"4.5\" right=\"42.0\" width=\"75\"/>\r\n  </character>\r\n  <character uvIndex=\"32\" character=\"A\" byte=\"65\" type=\"alphabetical\">\r\n    <regular x=\"1594\" y=\"0\" left=\"23.5\" right=\"42.5\" width=\"40\"/>\r\n    <bold x=\"1722\" y=\"0\" left=\"22.5\" right=\"43.5\" width=\"40\"/>\r\n    <italic x=\"4119\" y=\"0\" left=\"11.5\" right=\"34.5\" width=\"46\"/>\r\n    <boldItalic x=\"4117\" y=\"0\" left=\"10.5\" right=\"35.5\" width=\"50\"/>\r\n  </character>\r\n  <character uvIndex=\"33\" character=\"B\" byte=\"66\" type=\"alphabetical\">\r\n    <regular x=\"1642\" y=\"0\" left=\"22.0\" right=\"40.5\" width=\"39\"/>\r\n    <bold x=\"1774\" y=\"0\" left=\"21.0\" right=\"41.5\" width=\"39\"/>\r\n    <italic x=\"4252\" y=\"0\" left=\"14.0\" right=\"37.5\" width=\"47\"/>\r\n    <boldItalic x=\"4250\" y=\"0\" left=\"13.0\" right=\"38.5\" width=\"51\"/>\r\n  </character>\r\n  <character uvIndex=\"34\" character=\"C\" byte=\"67\" type=\"alphabetical\">\r\n    <regular x=\"1689\" y=\"0\" left=\"19.0\" right=\"44.0\" width=\"51\"/>\r\n    <bold x=\"1825\" y=\"0\" left=\"18.0\" right=\"45.0\" width=\"51\"/>\r\n    <italic x=\"4369\" y=\"0\" left=\"8.5\" right=\"40.0\" width=\"63\"/>\r\n    <boldItalic x=\"4366\" y=\"0\" left=\"7.0\" right=\"41.0\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"35\" character=\"D\" byte=\"68\" type=\"alphabetical\">\r\n    <regular x=\"1748\" y=\"0\" left=\"21.5\" right=\"41.5\" width=\"41\"/>\r\n    <bold x=\"1888\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"41\"/>\r\n    <italic x=\"4500\" y=\"0\" left=\"10.0\" right=\"34.5\" width=\"49\"/>\r\n    <boldItalic x=\"4498\" y=\"0\" left=\"9.0\" right=\"35.5\" width=\"53\"/>\r\n  </character>\r\n  <character uvIndex=\"36\" character=\"E\" byte=\"69\" type=\"alphabetical\">\r\n    <regular x=\"1797\" y=\"0\" left=\"18.5\" right=\"44.0\" width=\"52\"/>\r\n    <bold x=\"1941\" y=\"0\" left=\"17.5\" right=\"45.0\" width=\"52\"/>\r\n    <italic x=\"4623\" y=\"0\" left=\"7.5\" right=\"38.0\" width=\"61\"/>\r\n    <boldItalic x=\"4621\" y=\"0\" left=\"6.5\" right=\"39.0\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"37\" character=\"F\" byte=\"70\" type=\"alphabetical\">\r\n    <regular x=\"1857\" y=\"0\" left=\"22.5\" right=\"41.0\" width=\"38\"/>\r\n    <bold x=\"2005\" y=\"0\" left=\"21.5\" right=\"42.0\" width=\"38\"/>\r\n    <italic x=\"4766\" y=\"0\" left=\"15.0\" right=\"38.0\" width=\"46\"/>\r\n    <boldItalic x=\"4763\" y=\"0\" left=\"13.5\" right=\"39.0\" width=\"51\"/>\r\n  </character>\r\n  <character uvIndex=\"38\" character=\"G\" byte=\"71\" type=\"alphabetical\">\r\n    <regular x=\"1903\" y=\"0\" left=\"19.5\" right=\"43.5\" width=\"49\"/>\r\n    <bold x=\"2055\" y=\"0\" left=\"18.5\" right=\"44.5\" width=\"49\"/>\r\n    <italic x=\"4885\" y=\"0\" left=\"10.5\" right=\"39.5\" width=\"58\"/>\r\n    <boldItalic x=\"4883\" y=\"0\" left=\"9.5\" right=\"40.5\" width=\"62\"/>\r\n  </character>\r\n  <character uvIndex=\"39\" character=\"H\" byte=\"72\" type=\"alphabetical\">\r\n    <regular x=\"1960\" y=\"0\" left=\"21.5\" right=\"40.0\" width=\"38\"/>\r\n    <bold x=\"2116\" y=\"0\" left=\"20.5\" right=\"41.0\" width=\"38\"/>\r\n    <italic x=\"5020\" y=\"0\" left=\"14.0\" right=\"33.5\" width=\"39\"/>\r\n    <boldItalic x=\"5018\" y=\"0\" left=\"13.0\" right=\"35.0\" width=\"44\"/>\r\n  </character>\r\n  <character uvIndex=\"40\" character=\"I\" byte=\"73\" type=\"alphabetical\">\r\n    <regular x=\"2006\" y=\"0\" left=\"30.0\" right=\"35.0\" width=\"14\"/>\r\n    <bold x=\"2166\" y=\"0\" left=\"29.0\" right=\"36.0\" width=\"14\"/>\r\n    <italic x=\"5162\" y=\"0\" left=\"21.0\" right=\"31.0\" width=\"20\"/>\r\n    <boldItalic x=\"5160\" y=\"0\" left=\"20.0\" right=\"32.0\" width=\"24\"/>\r\n  </character>\r\n  <character uvIndex=\"41\" character=\"J\" byte=\"74\" type=\"alphabetical\">\r\n    <regular x=\"2028\" y=\"0\" left=\"21.0\" right=\"44.5\" width=\"51\"/>\r\n    <bold x=\"2192\" y=\"0\" left=\"20.0\" right=\"45.5\" width=\"51\"/>\r\n    <italic x=\"5269\" y=\"0\" left=\"10.5\" right=\"42.5\" width=\"64\"/>\r\n    <boldItalic x=\"5267\" y=\"0\" left=\"9.5\" right=\"43.5\" width=\"68\"/>\r\n  </character>\r\n  <character uvIndex=\"42\" character=\"K\" byte=\"75\" type=\"alphabetical\">\r\n    <regular x=\"2087\" y=\"0\" left=\"21.5\" right=\"42.0\" width=\"45\"/>\r\n    <bold x=\"2255\" y=\"0\" left=\"20.5\" right=\"43.0\" width=\"45\"/>\r\n    <italic x=\"5399\" y=\"0\" left=\"11.5\" right=\"39.0\" width=\"55\"/>\r\n    <boldItalic x=\"5397\" y=\"0\" left=\"10.5\" right=\"40.0\" width=\"59\"/>\r\n  </character>\r\n  <character uvIndex=\"43\" character=\"L\" byte=\"76\" type=\"alphabetical\">\r\n    <regular x=\"2140\" y=\"0\" left=\"23.0\" right=\"42.5\" width=\"43\"/>\r\n    <bold x=\"2312\" y=\"0\" left=\"22.0\" right=\"43.5\" width=\"43\"/>\r\n    <italic x=\"5525\" y=\"0\" left=\"10.5\" right=\"31.5\" width=\"42\"/>\r\n    <boldItalic x=\"5522\" y=\"0\" left=\"9.0\" right=\"32.5\" width=\"47\"/>\r\n  </character>\r\n  <character uvIndex=\"44\" character=\"M\" byte=\"77\" type=\"alphabetical\">\r\n    <regular x=\"2191\" y=\"0\" left=\"18.5\" right=\"44.5\" width=\"54\"/>\r\n    <bold x=\"2367\" y=\"0\" left=\"17.5\" right=\"45.5\" width=\"54\"/>\r\n    <italic x=\"5645\" y=\"0\" left=\"6.5\" right=\"41.0\" width=\"69\"/>\r\n    <boldItalic x=\"5642\" y=\"0\" left=\"5.0\" right=\"42.0\" width=\"74\"/>\r\n  </character>\r\n  <character uvIndex=\"45\" character=\"N\" byte=\"78\" type=\"alphabetical\">\r\n    <regular x=\"2253\" y=\"0\" left=\"20.0\" right=\"45.0\" width=\"53\"/>\r\n    <bold x=\"2433\" y=\"0\" left=\"19.0\" right=\"46.0\" width=\"53\"/>\r\n    <italic x=\"5776\" y=\"0\" left=\"8.0\" right=\"38.5\" width=\"61\"/>\r\n    <boldItalic x=\"5774\" y=\"0\" left=\"7.0\" right=\"39.5\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"46\" character=\"O\" byte=\"79\" type=\"alphabetical\">\r\n    <regular x=\"2314\" y=\"0\" left=\"21.5\" right=\"43.0\" width=\"46\"/>\r\n    <bold x=\"2498\" y=\"0\" left=\"20.5\" right=\"44.0\" width=\"46\"/>\r\n    <italic x=\"5908\" y=\"0\" left=\"10.0\" right=\"38.0\" width=\"56\"/>\r\n    <boldItalic x=\"5906\" y=\"0\" left=\"9.0\" right=\"39.0\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"47\" character=\"P\" byte=\"80\" type=\"alphabetical\">\r\n    <regular x=\"2368\" y=\"0\" left=\"21.5\" right=\"41.5\" width=\"41\"/>\r\n    <bold x=\"2556\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"41\"/>\r\n    <italic x=\"6041\" y=\"0\" left=\"12.5\" right=\"37.0\" width=\"49\"/>\r\n    <boldItalic x=\"6038\" y=\"0\" left=\"11.0\" right=\"38.0\" width=\"54\"/>\r\n  </character>\r\n  <character uvIndex=\"48\" character=\"Q\" byte=\"81\" type=\"alphabetical\">\r\n    <regular x=\"2417\" y=\"0\" left=\"20.0\" right=\"44.0\" width=\"50\"/>\r\n    <bold x=\"2609\" y=\"0\" left=\"19.0\" right=\"45.0\" width=\"50\"/>\r\n    <italic x=\"6162\" y=\"0\" left=\"9.0\" right=\"38.0\" width=\"58\"/>\r\n    <boldItalic x=\"6159\" y=\"0\" left=\"7.5\" right=\"39.5\" width=\"64\"/>\r\n  </character>\r\n  <character uvIndex=\"49\" character=\"R\" byte=\"82\" type=\"alphabetical\">\r\n    <regular x=\"2475\" y=\"0\" left=\"21.0\" right=\"42.0\" width=\"43\"/>\r\n    <bold x=\"2671\" y=\"0\" left=\"20.0\" right=\"43.0\" width=\"43\"/>\r\n    <italic x=\"6296\" y=\"0\" left=\"12.0\" right=\"37.0\" width=\"50\"/>\r\n    <boldItalic x=\"6293\" y=\"0\" left=\"10.5\" right=\"38.0\" width=\"55\"/>\r\n  </character>\r\n  <character uvIndex=\"50\" character=\"S\" byte=\"83\" type=\"alphabetical\">\r\n    <regular x=\"2526\" y=\"0\" left=\"20.5\" right=\"41.5\" width=\"43\"/>\r\n    <bold x=\"2726\" y=\"0\" left=\"19.5\" right=\"42.5\" width=\"43\"/>\r\n    <italic x=\"6421\" y=\"0\" left=\"10.5\" right=\"34.0\" width=\"47\"/>\r\n    <boldItalic x=\"6419\" y=\"0\" left=\"9.5\" right=\"35.0\" width=\"51\"/>\r\n  </character>\r\n  <character uvIndex=\"51\" character=\"T\" byte=\"84\" type=\"alphabetical\">\r\n    <regular x=\"2577\" y=\"0\" left=\"19.5\" right=\"46.0\" width=\"54\"/>\r\n    <bold x=\"2781\" y=\"0\" left=\"18.5\" right=\"47.0\" width=\"54\"/>\r\n    <italic x=\"6557\" y=\"0\" left=\"14.5\" right=\"42.0\" width=\"55\"/>\r\n    <boldItalic x=\"6555\" y=\"0\" left=\"13.5\" right=\"43.5\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"52\" character=\"U\" byte=\"85\" type=\"alphabetical\">\r\n    <regular x=\"2639\" y=\"0\" left=\"23.0\" right=\"41.0\" width=\"38\"/>\r\n    <bold x=\"2847\" y=\"0\" left=\"22.0\" right=\"42.0\" width=\"38\"/>\r\n    <italic x=\"6684\" y=\"0\" left=\"14.0\" right=\"35.5\" width=\"43\"/>\r\n    <boldItalic x=\"6682\" y=\"0\" left=\"13.0\" right=\"37.0\" width=\"48\"/>\r\n  </character>\r\n  <character uvIndex=\"53\" character=\"V\" byte=\"86\" type=\"alphabetical\">\r\n    <regular x=\"2685\" y=\"0\" left=\"20.5\" right=\"43.5\" width=\"47\"/>\r\n    <bold x=\"2897\" y=\"0\" left=\"19.5\" right=\"44.5\" width=\"47\"/>\r\n    <italic x=\"6809\" y=\"0\" left=\"12.5\" right=\"39.0\" width=\"53\"/>\r\n    <boldItalic x=\"6806\" y=\"0\" left=\"11.0\" right=\"40.0\" width=\"58\"/>\r\n  </character>\r\n  <character uvIndex=\"54\" character=\"W\" byte=\"87\" type=\"alphabetical\">\r\n    <regular x=\"2740\" y=\"0\" left=\"15.0\" right=\"48.0\" width=\"67\"/>\r\n    <bold x=\"2956\" y=\"0\" left=\"14.0\" right=\"49.0\" width=\"67\"/>\r\n    <italic x=\"6920\" y=\"0\" left=\"4.0\" right=\"39.5\" width=\"71\"/>\r\n    <boldItalic x=\"6918\" y=\"0\" left=\"3.0\" right=\"40.5\" width=\"75\"/>\r\n  </character>\r\n  <character uvIndex=\"55\" character=\"X\" byte=\"88\" type=\"alphabetical\">\r\n    <regular x=\"2815\" y=\"0\" left=\"20.5\" right=\"44.5\" width=\"50\"/>\r\n    <bold x=\"3035\" y=\"0\" left=\"19.5\" right=\"45.5\" width=\"50\"/>\r\n    <italic x=\"7057\" y=\"0\" left=\"8.5\" right=\"39.0\" width=\"61\"/>\r\n    <boldItalic x=\"7054\" y=\"0\" left=\"7.0\" right=\"40.0\" width=\"66\"/>\r\n  </character>\r\n  <character uvIndex=\"56\" character=\"Y\" byte=\"89\" type=\"alphabetical\">\r\n    <regular x=\"2873\" y=\"0\" left=\"22.5\" right=\"41.5\" width=\"40\"/>\r\n    <bold x=\"3097\" y=\"0\" left=\"21.5\" right=\"42.5\" width=\"40\"/>\r\n    <italic x=\"7197\" y=\"0\" left=\"14.5\" right=\"38.0\" width=\"47\"/>\r\n    <boldItalic x=\"7194\" y=\"0\" left=\"13.0\" right=\"39.0\" width=\"52\"/>\r\n  </character>\r\n  <character uvIndex=\"57\" character=\"Z\" byte=\"90\" type=\"alphabetical\">\r\n    <regular x=\"2921\" y=\"0\" left=\"19.5\" right=\"43.5\" width=\"49\"/>\r\n    <bold x=\"3149\" y=\"0\" left=\"18.5\" right=\"44.5\" width=\"49\"/>\r\n    <italic x=\"7310\" y=\"0\" left=\"7.0\" right=\"41.0\" width=\"68\"/>\r\n    <boldItalic x=\"7308\" y=\"0\" left=\"6.0\" right=\"42.0\" width=\"72\"/>\r\n  </character>\r\n  <character uvIndex=\"58\" character=\"[\" byte=\"91\" type=\"special\">\r\n    <regular x=\"2978\" y=\"0\" left=\"22.5\" right=\"41.5\" width=\"42\"/>\r\n    <bold x=\"3210\" y=\"0\" left=\"21.5\" right=\"42.5\" width=\"42\"/>\r\n    <italic x=\"7448\" y=\"0\" left=\"12.0\" right=\"40.5\" width=\"57\"/>\r\n    <boldItalic x=\"7445\" y=\"0\" left=\"10.5\" right=\"41.5\" width=\"62\"/>\r\n  </character>\r\n  <character uvIndex=\"59\" character=\"\\\" byte=\"92\" type=\"special\">\r\n    <regular x=\"3028\" y=\"0\" left=\"18.5\" right=\"46.0\" width=\"59\"/>\r\n    <bold x=\"3264\" y=\"0\" left=\"17.5\" right=\"47.0\" width=\"59\"/>\r\n    <italic x=\"7583\" y=\"0\" left=\"15.5\" right=\"37.0\" width=\"43\"/>\r\n    <boldItalic x=\"7581\" y=\"0\" left=\"14.5\" right=\"38.0\" width=\"47\"/>\r\n  </character>\r\n  <character uvIndex=\"60\" character=\"]\" byte=\"93\" type=\"special\">\r\n    <regular x=\"3095\" y=\"0\" left=\"23.0\" right=\"39.5\" width=\"41\"/>\r\n    <bold x=\"3335\" y=\"0\" left=\"22.0\" right=\"40.5\" width=\"41\"/>\r\n    <italic x=\"7707\" y=\"0\" left=\"13.5\" right=\"37.5\" width=\"48\"/>\r\n    <boldItalic x=\"7705\" y=\"0\" left=\"12.5\" right=\"38.5\" width=\"52\"/>\r\n  </character>\r\n  <character uvIndex=\"61\" character=\"^\" byte=\"94\" type=\"special\">\r\n    <regular x=\"3144\" y=\"0\" left=\"0.0\" right=\"63.5\" width=\"184\"/>\r\n    <bold x=\"3388\" y=\"0\" left=\"0.0\" right=\"63.5\" width=\"184\"/>\r\n    <italic x=\"7812\" y=\"0\" left=\"0.0\" right=\"52.5\" width=\"105\"/>\r\n    <boldItalic x=\"7812\" y=\"0\" left=\"0.0\" right=\"54.0\" width=\"108\"/>\r\n  </character>\r\n  <character uvIndex=\"62\" character=\"_\" byte=\"95\" type=\"special\">\r\n    <regular x=\"3336\" y=\"0\" left=\"0.0\" right=\"45.5\" width=\"65\"/>\r\n    <bold x=\"3584\" y=\"0\" left=\"0.0\" right=\"46.5\" width=\"65\"/>\r\n    <italic x=\"7940\" y=\"0\" left=\"0.0\" right=\"30.5\" width=\"61\"/>\r\n    <boldItalic x=\"7940\" y=\"0\" left=\"0.0\" right=\"32.0\" width=\"64\"/>\r\n  </character>\r\n  <character uvIndex=\"63\" character=\"a\" byte=\"97\" type=\"alphabetical\">\r\n    <regular x=\"3409\" y=\"0\" left=\"20.5\" right=\"41.0\" width=\"42\"/>\r\n    <bold x=\"3661\" y=\"0\" left=\"19.5\" right=\"42.0\" width=\"42\"/>\r\n    <italic x=\"8083\" y=\"0\" left=\"9.5\" right=\"29.5\" width=\"40\"/>\r\n    <boldItalic x=\"8081\" y=\"0\" left=\"8.5\" right=\"30.5\" width=\"44\"/>\r\n  </character>\r\n  <character uvIndex=\"64\" character=\"b\" byte=\"98\" type=\"alphabetical\">\r\n    <regular x=\"3459\" y=\"0\" left=\"21.0\" right=\"41.5\" width=\"42\"/>\r\n    <bold x=\"3715\" y=\"0\" left=\"20.0\" right=\"42.5\" width=\"42\"/>\r\n    <italic x=\"22\" y=\"128\" left=\"11.0\" right=\"32.5\" width=\"43\"/>\r\n    <boldItalic x=\"20\" y=\"128\" left=\"10.0\" right=\"33.5\" width=\"47\"/>\r\n  </character>\r\n  <character uvIndex=\"65\" character=\"c\" byte=\"99\" type=\"alphabetical\">\r\n    <regular x=\"3509\" y=\"0\" left=\"22.0\" right=\"43.5\" width=\"44\"/>\r\n    <bold x=\"3769\" y=\"0\" left=\"21.0\" right=\"44.5\" width=\"44\"/>\r\n    <italic x=\"149\" y=\"128\" left=\"10.5\" right=\"38.5\" width=\"56\"/>\r\n    <boldItalic x=\"147\" y=\"128\" left=\"9.5\" right=\"39.5\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"66\" character=\"d\" byte=\"100\" type=\"alphabetical\">\r\n    <regular x=\"3561\" y=\"0\" left=\"22.5\" right=\"39.0\" width=\"34\"/>\r\n    <bold x=\"3825\" y=\"0\" left=\"21.5\" right=\"40.0\" width=\"34\"/>\r\n    <italic x=\"276\" y=\"128\" left=\"10.0\" right=\"32.5\" width=\"45\"/>\r\n    <boldItalic x=\"274\" y=\"128\" left=\"9.0\" right=\"33.5\" width=\"49\"/>\r\n  </character>\r\n  <character uvIndex=\"67\" character=\"e\" byte=\"101\" type=\"alphabetical\">\r\n    <regular x=\"3603\" y=\"0\" left=\"22.5\" right=\"43.5\" width=\"43\"/>\r\n    <bold x=\"3871\" y=\"0\" left=\"21.5\" right=\"44.5\" width=\"43\"/>\r\n    <italic x=\"405\" y=\"128\" left=\"10.5\" right=\"38.5\" width=\"56\"/>\r\n    <boldItalic x=\"403\" y=\"128\" left=\"9.5\" right=\"40.0\" width=\"61\"/>\r\n  </character>\r\n  <character uvIndex=\"68\" character=\"f\" byte=\"102\" type=\"alphabetical\">\r\n    <regular x=\"3654\" y=\"0\" left=\"21.5\" right=\"44.5\" width=\"47\"/>\r\n    <bold x=\"3926\" y=\"0\" left=\"20.5\" right=\"45.5\" width=\"47\"/>\r\n    <italic x=\"533\" y=\"128\" left=\"10.5\" right=\"38.5\" width=\"56\"/>\r\n    <boldItalic x=\"530\" y=\"128\" left=\"9.0\" right=\"39.5\" width=\"61\"/>\r\n  </character>\r\n  <character uvIndex=\"69\" character=\"g\" byte=\"103\" type=\"alphabetical\">\r\n    <regular x=\"3709\" y=\"0\" left=\"18.5\" right=\"44.0\" width=\"52\"/>\r\n    <bold x=\"3985\" y=\"0\" left=\"17.5\" right=\"45.0\" width=\"52\"/>\r\n    <italic x=\"655\" y=\"128\" left=\"7.5\" right=\"37.0\" width=\"59\"/>\r\n    <boldItalic x=\"653\" y=\"128\" left=\"6.5\" right=\"38.0\" width=\"63\"/>\r\n  </character>\r\n  <character uvIndex=\"70\" character=\"h\" byte=\"104\" type=\"alphabetical\">\r\n    <regular x=\"3769\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"45\"/>\r\n    <bold x=\"4049\" y=\"0\" left=\"19.5\" right=\"43.5\" width=\"45\"/>\r\n    <italic x=\"789\" y=\"128\" left=\"10.5\" right=\"35.5\" width=\"50\"/>\r\n    <boldItalic x=\"787\" y=\"128\" left=\"9.5\" right=\"36.5\" width=\"54\"/>\r\n  </character>\r\n  <character uvIndex=\"71\" character=\"i\" byte=\"105\" type=\"alphabetical\">\r\n    <regular x=\"3822\" y=\"0\" left=\"30.0\" right=\"35.0\" width=\"14\"/>\r\n    <bold x=\"4106\" y=\"0\" left=\"29.0\" right=\"36.0\" width=\"14\"/>\r\n    <italic x=\"936\" y=\"128\" left=\"20.0\" right=\"30.0\" width=\"20\"/>\r\n    <boldItalic x=\"934\" y=\"128\" left=\"19.0\" right=\"31.0\" width=\"24\"/>\r\n  </character>\r\n  <character uvIndex=\"72\" character=\"j\" byte=\"106\" type=\"alphabetical\">\r\n    <regular x=\"3844\" y=\"0\" left=\"20.0\" right=\"43.0\" width=\"47\"/>\r\n    <bold x=\"4132\" y=\"0\" left=\"19.0\" right=\"44.0\" width=\"47\"/>\r\n    <italic x=\"1053\" y=\"128\" left=\"14.5\" right=\"38.5\" width=\"48\"/>\r\n    <boldItalic x=\"1051\" y=\"128\" left=\"13.5\" right=\"39.5\" width=\"52\"/>\r\n  </character>\r\n  <character uvIndex=\"73\" character=\"k\" byte=\"107\" type=\"alphabetical\">\r\n    <regular x=\"3899\" y=\"0\" left=\"23.5\" right=\"42.5\" width=\"39\"/>\r\n    <bold x=\"4191\" y=\"0\" left=\"22.5\" right=\"43.5\" width=\"39\"/>\r\n    <italic x=\"1175\" y=\"128\" left=\"11.5\" right=\"33.5\" width=\"44\"/>\r\n    <boldItalic x=\"1173\" y=\"128\" left=\"10.5\" right=\"34.5\" width=\"48\"/>\r\n  </character>\r\n  <character uvIndex=\"74\" character=\"l\" byte=\"108\" type=\"alphabetical\">\r\n    <regular x=\"3946\" y=\"0\" left=\"22.0\" right=\"43.0\" width=\"43\"/>\r\n    <bold x=\"4242\" y=\"0\" left=\"21.0\" right=\"44.0\" width=\"43\"/>\r\n    <italic x=\"1298\" y=\"128\" left=\"9.0\" right=\"31.0\" width=\"44\"/>\r\n    <boldItalic x=\"1296\" y=\"128\" left=\"8.0\" right=\"32.0\" width=\"48\"/>\r\n  </character>\r\n  <character uvIndex=\"75\" character=\"m\" byte=\"109\" type=\"alphabetical\">\r\n    <regular x=\"3997\" y=\"0\" left=\"20.0\" right=\"43.5\" width=\"48\"/>\r\n    <bold x=\"4297\" y=\"0\" left=\"19.0\" right=\"44.5\" width=\"48\"/>\r\n    <italic x=\"1422\" y=\"128\" left=\"7.0\" right=\"38.0\" width=\"62\"/>\r\n    <boldItalic x=\"1420\" y=\"128\" left=\"6.0\" right=\"39.0\" width=\"66\"/>\r\n  </character>\r\n  <character uvIndex=\"76\" character=\"n\" byte=\"110\" type=\"alphabetical\">\r\n    <regular x=\"4053\" y=\"0\" left=\"18.5\" right=\"44.0\" width=\"52\"/>\r\n    <bold x=\"4357\" y=\"0\" left=\"17.5\" right=\"45.0\" width=\"52\"/>\r\n    <italic x=\"1548\" y=\"128\" left=\"6.0\" right=\"36.5\" width=\"61\"/>\r\n    <boldItalic x=\"1546\" y=\"128\" left=\"5.0\" right=\"37.5\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"77\" character=\"o\" byte=\"111\" type=\"alphabetical\">\r\n    <regular x=\"4113\" y=\"0\" left=\"17.5\" right=\"44.0\" width=\"54\"/>\r\n    <bold x=\"4421\" y=\"0\" left=\"16.5\" right=\"45.0\" width=\"54\"/>\r\n    <italic x=\"1681\" y=\"128\" left=\"8.5\" right=\"36.5\" width=\"56\"/>\r\n    <boldItalic x=\"1679\" y=\"128\" left=\"7.5\" right=\"37.5\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"78\" character=\"p\" byte=\"112\" type=\"alphabetical\">\r\n    <regular x=\"4175\" y=\"0\" left=\"21.5\" right=\"41.5\" width=\"41\"/>\r\n    <bold x=\"4487\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"41\"/>\r\n    <italic x=\"1815\" y=\"128\" left=\"11.5\" right=\"36.5\" width=\"50\"/>\r\n    <boldItalic x=\"1813\" y=\"128\" left=\"10.5\" right=\"37.5\" width=\"54\"/>\r\n  </character>\r\n  <character uvIndex=\"79\" character=\"q\" byte=\"113\" type=\"alphabetical\">\r\n    <regular x=\"4224\" y=\"0\" left=\"20.0\" right=\"42.0\" width=\"45\"/>\r\n    <bold x=\"4540\" y=\"0\" left=\"19.0\" right=\"43.0\" width=\"45\"/>\r\n    <italic x=\"1937\" y=\"128\" left=\"8.5\" right=\"36.0\" width=\"55\"/>\r\n    <boldItalic x=\"1935\" y=\"128\" left=\"7.5\" right=\"37.0\" width=\"59\"/>\r\n  </character>\r\n  <character uvIndex=\"80\" character=\"r\" byte=\"114\" type=\"alphabetical\">\r\n    <regular x=\"4277\" y=\"0\" left=\"19.5\" right=\"45.5\" width=\"53\"/>\r\n    <bold x=\"4597\" y=\"0\" left=\"18.5\" right=\"46.5\" width=\"53\"/>\r\n    <italic x=\"2067\" y=\"128\" left=\"9.5\" right=\"37.0\" width=\"55\"/>\r\n    <boldItalic x=\"2065\" y=\"128\" left=\"8.5\" right=\"38.5\" width=\"60\"/>\r\n  </character>\r\n  <character uvIndex=\"81\" character=\"s\" byte=\"115\" type=\"alphabetical\">\r\n    <regular x=\"4338\" y=\"0\" left=\"19.5\" right=\"44.5\" width=\"51\"/>\r\n    <bold x=\"4662\" y=\"0\" left=\"18.5\" right=\"45.5\" width=\"51\"/>\r\n    <italic x=\"2191\" y=\"128\" left=\"7.5\" right=\"33.0\" width=\"51\"/>\r\n    <boldItalic x=\"2189\" y=\"128\" left=\"6.5\" right=\"34.0\" width=\"55\"/>\r\n  </character>\r\n  <character uvIndex=\"82\" character=\"t\" byte=\"116\" type=\"alphabetical\">\r\n    <regular x=\"4397\" y=\"0\" left=\"22.5\" right=\"44.5\" width=\"45\"/>\r\n    <bold x=\"4725\" y=\"0\" left=\"21.5\" right=\"45.5\" width=\"45\"/>\r\n    <italic x=\"2338\" y=\"128\" left=\"17.0\" right=\"39.5\" width=\"45\"/>\r\n    <boldItalic x=\"2336\" y=\"128\" left=\"16.0\" right=\"40.5\" width=\"49\"/>\r\n  </character>\r\n  <character uvIndex=\"83\" character=\"u\" byte=\"117\" type=\"alphabetical\">\r\n    <regular x=\"4450\" y=\"0\" left=\"21.0\" right=\"41.5\" width=\"42\"/>\r\n    <bold x=\"4782\" y=\"0\" left=\"20.0\" right=\"42.5\" width=\"42\"/>\r\n    <italic x=\"2456\" y=\"128\" left=\"12.0\" right=\"35.0\" width=\"46\"/>\r\n    <boldItalic x=\"2454\" y=\"128\" left=\"11.0\" right=\"36.0\" width=\"50\"/>\r\n  </character>\r\n  <character uvIndex=\"84\" character=\"v\" byte=\"118\" type=\"alphabetical\">\r\n    <regular x=\"4500\" y=\"0\" left=\"23.5\" right=\"40.0\" width=\"34\"/>\r\n    <bold x=\"4836\" y=\"0\" left=\"22.5\" right=\"41.0\" width=\"34\"/>\r\n    <italic x=\"2590\" y=\"128\" left=\"15.0\" right=\"33.5\" width=\"37\"/>\r\n    <boldItalic x=\"2588\" y=\"128\" left=\"14.0\" right=\"34.5\" width=\"41\"/>\r\n  </character>\r\n  <character uvIndex=\"85\" character=\"w\" byte=\"119\" type=\"alphabetical\">\r\n    <regular x=\"4542\" y=\"0\" left=\"17.5\" right=\"45.5\" width=\"57\"/>\r\n    <bold x=\"4882\" y=\"0\" left=\"16.5\" right=\"46.5\" width=\"57\"/>\r\n    <italic x=\"2700\" y=\"128\" left=\"6.0\" right=\"39.5\" width=\"67\"/>\r\n    <boldItalic x=\"2698\" y=\"128\" left=\"5.0\" right=\"40.5\" width=\"71\"/>\r\n  </character>\r\n  <character uvIndex=\"86\" character=\"x\" byte=\"120\" type=\"alphabetical\">\r\n    <regular x=\"4607\" y=\"0\" left=\"22.5\" right=\"40.5\" width=\"37\"/>\r\n    <bold x=\"4951\" y=\"0\" left=\"21.5\" right=\"41.5\" width=\"37\"/>\r\n    <italic x=\"2836\" y=\"128\" left=\"10.0\" right=\"34.0\" width=\"48\"/>\r\n    <boldItalic x=\"2834\" y=\"128\" left=\"9.0\" right=\"35.0\" width=\"52\"/>\r\n  </character>\r\n  <character uvIndex=\"87\" character=\"y\" byte=\"121\" type=\"alphabetical\">\r\n    <regular x=\"4652\" y=\"0\" left=\"22.5\" right=\"42.5\" width=\"42\"/>\r\n    <bold x=\"5000\" y=\"0\" left=\"21.5\" right=\"43.5\" width=\"42\"/>\r\n    <italic x=\"2975\" y=\"128\" left=\"15.5\" right=\"37.5\" width=\"44\"/>\r\n    <boldItalic x=\"2973\" y=\"128\" left=\"14.5\" right=\"38.5\" width=\"48\"/>\r\n  </character>\r\n  <character uvIndex=\"88\" character=\"z\" byte=\"122\" type=\"alphabetical\">\r\n    <regular x=\"4702\" y=\"0\" left=\"21.0\" right=\"43.0\" width=\"45\"/>\r\n    <bold x=\"5054\" y=\"0\" left=\"20.0\" right=\"44.0\" width=\"45\"/>\r\n    <italic x=\"3092\" y=\"128\" left=\"10.0\" right=\"36.0\" width=\"52\"/>\r\n    <boldItalic x=\"3090\" y=\"128\" left=\"9.0\" right=\"37.0\" width=\"56\"/>\r\n  </character>\r\n  <character uvIndex=\"89\" character=\"{\" byte=\"123\" type=\"special\">\r\n    <regular x=\"4755\" y=\"0\" left=\"18.0\" right=\"44.5\" width=\"61\"/>\r\n    <bold x=\"5111\" y=\"0\" left=\"17.0\" right=\"45.5\" width=\"61\"/>\r\n    <italic x=\"3207\" y=\"128\" left=\"3.5\" right=\"36.5\" width=\"66\"/>\r\n    <boldItalic x=\"3205\" y=\"128\" left=\"2.5\" right=\"37.5\" width=\"70\"/>\r\n  </character>\r\n  <character uvIndex=\"90\" character=\"|\" byte=\"124\" type=\"special\">\r\n    <regular x=\"4824\" y=\"0\" left=\"28.5\" right=\"34.5\" width=\"20\"/>\r\n    <bold x=\"5184\" y=\"0\" left=\"27.5\" right=\"35.5\" width=\"20\"/>\r\n    <italic x=\"3351\" y=\"128\" left=\"11.5\" right=\"32.0\" width=\"41\"/>\r\n    <boldItalic x=\"3349\" y=\"128\" left=\"10.5\" right=\"33.0\" width=\"45\"/>\r\n  </character>\r\n  <character uvIndex=\"91\" character=\"}\" byte=\"125\" type=\"special\">\r\n    <regular x=\"4852\" y=\"0\" left=\"23.5\" right=\"39.5\" width=\"40\"/>\r\n    <bold x=\"5216\" y=\"0\" left=\"22.5\" right=\"40.5\" width=\"40\"/>\r\n    <italic x=\"3469\" y=\"128\" left=\"6.5\" right=\"37.5\" width=\"62\"/>\r\n    <boldItalic x=\"3467\" y=\"128\" left=\"5.5\" right=\"38.5\" width=\"66\"/>\r\n  </character>\r\n  <character uvIndex=\"92\" character=\"~\" byte=\"126\" type=\"special\">\r\n    <regular x=\"4900\" y=\"0\" left=\"17.5\" right=\"44.5\" width=\"62\"/>\r\n    <bold x=\"5268\" y=\"0\" left=\"16.5\" right=\"45.5\" width=\"62\"/>\r\n    <italic x=\"3608\" y=\"128\" left=\"12.0\" right=\"41.0\" width=\"58\"/>\r\n    <boldItalic x=\"3606\" y=\"128\" left=\"11.0\" right=\"42.0\" width=\"62\"/>\r\n  </character>\r\n  <character uvIndex=\"93\" character=\"£\" byte=\"163\" type=\"special\">\r\n    <regular x=\"4970\" y=\"0\" left=\"19.5\" right=\"40.5\" width=\"51\"/>\r\n    <bold x=\"5342\" y=\"0\" left=\"18.5\" right=\"41.5\" width=\"51\"/>\r\n    <italic x=\"3730\" y=\"128\" left=\"9.0\" right=\"36.0\" width=\"54\"/>\r\n    <boldItalic x=\"3728\" y=\"128\" left=\"8.0\" right=\"37.0\" width=\"58\"/>\r\n  </character>\r\n  <character uvIndex=\"94\" character=\"°\" byte=\"176\" type=\"special\">\r\n    <regular x=\"5029\" y=\"0\" left=\"26.0\" right=\"36.5\" width=\"29\"/>\r\n    <bold x=\"5405\" y=\"0\" left=\"25.0\" right=\"37.5\" width=\"29\"/>\r\n    <italic x=\"3884\" y=\"128\" left=\"22.0\" right=\"34.0\" width=\"24\"/>\r\n    <boldItalic x=\"3881\" y=\"128\" left=\"20.5\" right=\"35.0\" width=\"29\"/>\r\n  </character>\r\n  <character uvIndex=\"95\" character=\"±\" byte=\"177\" type=\"special\">\r\n    <regular x=\"5066\" y=\"0\" left=\"24.0\" right=\"38.5\" width=\"37\"/>\r\n    <bold x=\"5446\" y=\"0\" left=\"23.0\" right=\"39.5\" width=\"37\"/>\r\n    <italic x=\"3993\" y=\"128\" left=\"12.5\" right=\"31.0\" width=\"37\"/>\r\n    <boldItalic x=\"3991\" y=\"128\" left=\"11.5\" right=\"32.0\" width=\"41\"/>\r\n  </character>\r\n  <character uvIndex=\"96\" character=\"Ä\" byte=\"196\" type=\"alphabetical\">\r\n    <regular x=\"5111\" y=\"0\" left=\"18.5\" right=\"45.0\" width=\"54\"/>\r\n    <bold x=\"5495\" y=\"0\" left=\"17.5\" right=\"46.0\" width=\"54\"/>\r\n    <italic x=\"4117\" y=\"128\" left=\"10.5\" right=\"43.0\" width=\"65\"/>\r\n    <boldItalic x=\"4115\" y=\"128\" left=\"9.5\" right=\"44.5\" width=\"70\"/>\r\n  </character>\r\n  <character uvIndex=\"97\" character=\"Ö\" byte=\"214\" type=\"alphabetical\">\r\n    <regular x=\"5173\" y=\"0\" left=\"20.0\" right=\"45.0\" width=\"52\"/>\r\n    <bold x=\"5561\" y=\"0\" left=\"19.0\" right=\"46.0\" width=\"52\"/>\r\n    <italic x=\"4245\" y=\"128\" left=\"10.5\" right=\"43.0\" width=\"65\"/>\r\n    <boldItalic x=\"4242\" y=\"128\" left=\"9.0\" right=\"44.5\" width=\"71\"/>\r\n  </character>\r\n  <character uvIndex=\"98\" character=\"Ü\" byte=\"220\" type=\"alphabetical\">\r\n    <regular x=\"5233\" y=\"0\" left=\"19.0\" right=\"42.5\" width=\"49\"/>\r\n    <bold x=\"5625\" y=\"0\" left=\"18.0\" right=\"43.5\" width=\"49\"/>\r\n    <italic x=\"4373\" y=\"128\" left=\"10.5\" right=\"39.5\" width=\"58\"/>\r\n    <boldItalic x=\"4371\" y=\"128\" left=\"9.5\" right=\"41.0\" width=\"63\"/>\r\n  </character>\r\n  <character uvIndex=\"99\" character=\"ß\" byte=\"223\" type=\"alphabetical\">\r\n    <regular x=\"5290\" y=\"0\" left=\"18.0\" right=\"42.0\" width=\"49\"/>\r\n    <bold x=\"5686\" y=\"0\" left=\"17.0\" right=\"43.0\" width=\"49\"/>\r\n    <italic x=\"4482\" y=\"128\" left=\"1.0\" right=\"31.0\" width=\"60\"/>\r\n    <boldItalic x=\"4484\" y=\"128\" left=\"0.0\" right=\"32.5\" width=\"65\"/>\r\n  </character>\r\n  <character uvIndex=\"100\" character=\"ä\" byte=\"228\" type=\"alphabetical\">\r\n    <regular x=\"5347\" y=\"0\" left=\"22.5\" right=\"41.0\" width=\"38\"/>\r\n    <bold x=\"5747\" y=\"0\" left=\"21.5\" right=\"42.0\" width=\"38\"/>\r\n    <italic x=\"4627\" y=\"128\" left=\"9.5\" right=\"37.0\" width=\"55\"/>\r\n    <boldItalic x=\"4625\" y=\"128\" left=\"8.5\" right=\"38.0\" width=\"59\"/>\r\n  </character>\r\n  <character uvIndex=\"101\" character=\"ö\" byte=\"246\" type=\"alphabetical\">\r\n    <regular x=\"5393\" y=\"0\" left=\"20.0\" right=\"43.5\" width=\"48\"/>\r\n    <bold x=\"5797\" y=\"0\" left=\"19.0\" right=\"44.5\" width=\"48\"/>\r\n    <italic x=\"4756\" y=\"128\" left=\"10.0\" right=\"40.0\" width=\"60\"/>\r\n    <boldItalic x=\"4754\" y=\"128\" left=\"9.0\" right=\"41.0\" width=\"64\"/>\r\n  </character>\r\n  <character uvIndex=\"102\" character=\"ü\" byte=\"252\" type=\"alphabetical\">\r\n    <regular x=\"5449\" y=\"0\" left=\"21.5\" right=\"41.5\" width=\"41\"/>\r\n    <bold x=\"5857\" y=\"0\" left=\"20.5\" right=\"42.5\" width=\"41\"/>\r\n    <italic x=\"4888\" y=\"128\" left=\"12.0\" right=\"39.0\" width=\"54\"/>\r\n    <boldItalic x=\"4885\" y=\"128\" left=\"10.5\" right=\"40.0\" width=\"59\"/>\r\n  </character>\r\n</font>\r\n"
  },
  {
    "path": "gui/AnimalAIDialog.xml",
    "content": "<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n\t<GuiElement profile=\"newLayer\"/>\r\n\t<Bitmap profile=\"dialogFullscreenBg\" id=\"dialogBg\"/>\r\n\t<GuiElement profile=\"rl_animalAIDialogBg\" id=\"dialogElement\">\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgMiddle\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgTop\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgBottom\"/>\r\n\t\t<GuiElement profile=\"fs25_dialogContentContainer\">\r\n\t\t\t<Animation profile=\"fs25_dialogLoading\" id=\"iconLoadingElement\"/>\r\n\r\n\t\t\t<GuiElement profile=\"rl_headerContainer\" position=\"0px -35px\">\r\n\r\n\t\t\t\t<Button profile=\"rl_headerButtonLeft\" position=\"5px 0px\" width=\"145px\" text=\"$l10n_infohud_name\" onClick=\"onClickSortButton\" id=\"nameButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"150px 0px\" width=\"125px\" text=\"$l10n_rl_ui_earTag\" onClick=\"onClickSortButton\" id=\"identifierButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"295px 0px\" width=\"100px\" text=\"$l10n_infohud_type\" onClick=\"onClickSortButton\" id=\"subTypeButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"485px 0px\" width=\"100px\" text=\"$l10n_rl_ui_strawMultiple\" onClick=\"onClickSortButton\" id=\"strawsButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"585px 0px\" width=\"120px\" text=\"$l10n_rl_ui_success\" onClick=\"onClickSortButton\" id=\"successButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"745px 0px\" width=\"120px\" text=\"$l10n_rl_ui_metabolism\" onClick=\"onClickSortButton\" id=\"metabolismButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"875px 0px\" width=\"160px\" text=\"$l10n_rl_ui_quality\" onClick=\"onClickSortButton\" id=\"qualityButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"1045px 0px\" width=\"120px\" text=\"$l10n_rl_ui_health\" onClick=\"onClickSortButton\" id=\"healthButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"1185px 0px\" width=\"120px\" text=\"$l10n_rl_ui_fertility\" onClick=\"onClickSortButton\" id=\"fertilityButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"1325px 0px\" width=\"160px\" text=\"$l10n_rl_ui_productivity\" onClick=\"onClickSortButton\" id=\"productivityButton\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_vehiclesHeaderIconSortAscending\" position=\"10px 0px\" id=\"sortingIcon_false\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_vehiclesHeaderIconSortDescending\" position=\"10px 0px\" id=\"sortingIcon_true\"/>\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_lineSeparatorBottom\" position=\"0px -2dp\"/>\r\n\r\n\t\t\t</GuiElement>\r\n\r\n\t\t\t<SmoothList profile=\"rl_husbandryList\" id=\"dewarList\" position=\"5px -75px\">\r\n\t\t\t\t<ListItem profile=\"rl_husbandryListItem\">\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListTextRight\" position=\"5px 0px\" name=\"name\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"195px 0px\" name=\"identifier\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"345px 0px\" name=\"subType\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"475px 0px\" name=\"straws\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"595px 0px\" name=\"success\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"745px 0px\" name=\"metabolism\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"875px 0px\" name=\"quality\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"1045px 0px\" name=\"health\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"1185px 0px\" name=\"fertility\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"1325px 0px\" name=\"productivity\"/>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</SmoothList>\r\n\r\n\t\t\t<ThreePartBitmap profile=\"rl_sliderBox\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"dewarList\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\t\t\t\r\n\t\t</GuiElement>\r\n\t\t<BoxLayout profile=\"fs25_dialogButtonBox\">\r\n\t\t\t<Button profile=\"buttonOK\" text=\"$l10n_rl_ui_inseminate\" onClick=\"onClickOk\" id=\"okButton\"/>\r\n\t\t\t<Button profile=\"buttonBack\" text=\"$l10n_button_back\" onClick=\"onClickBack\" id=\"backButton\"/>\r\n\t\t</BoxLayout>\r\n\t</GuiElement>\r\n\t<GuiProfiles>\r\n\t\t<Profile name=\"rl_animalAIDialogBg\" extends=\"fs25_dialogBg\">\r\n\t\t\t<size value=\"85% 75%\"/>\r\n\t\t</Profile>\r\n\t</GuiProfiles>\r\n</GUI>"
  },
  {
    "path": "gui/AnimalFilterDialog.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n\t<GuiElement profile=\"newLayer\"/>\r\n\t<Bitmap profile=\"dialogFullscreenBg\" id=\"dialogBg\"/>\r\n\t<GuiElement profile=\"rl_animalFilterDialog\" id=\"dialogElement\">\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgMiddleSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgTopSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgBottom\"/>\r\n\t\t\r\n\t\t<GuiElement profile=\"rl_animalFilterDialogContainer\">\r\n\r\n\t\t\t<SmoothList profile=\"fs25_animalTargetList\" id=\"filterList\" startClipperElementName=\"startClipperTarget\" endClipperElementName=\"endClipperTarget\">\r\n\t\t\t\t<ListItem profile=\"rl_animalFilterListItem\">\r\n\t\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"name\"/>\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalInfoSeparator\" name=\"separator\"/>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</SmoothList>\r\n\t\t\t<DoubleOptionSlider profile=\"rl_animalFilterListItemSlider\" id=\"sliderTemplate\" visible=\"false\" name=\"sliderTemplate\"/>\r\n\t\t\t<TripleOption profile=\"rl_animalFilterListItemBinaryOption\" id=\"binaryOptionTemplate\" visible=\"false\" name=\"binaryOptionTemplate\"/>\r\n\t\t\t<Bitmap profile=\"fs25_secondaryMenuStartClipper\" name=\"startClipperTarget\"/>\r\n\t\t\t<Bitmap profile=\"fs25_secondaryMenuStopClipper\" name=\"endClipperTarget\"/>\r\n\t\t\t<ThreePartBitmap profile=\"fs25_subCategoryListSliderBox\" position=\"20px 0px\">\r\n\t\t\t\t<Slider profile=\"fs25_animalTargetListSlider\" id=\"filterSlider\" dataElementId=\"filterList\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\t\t\t\r\n\t\t</GuiElement>\r\n\t\t\r\n\t\t<BoxLayout profile=\"fs25_dialogButtonBox\" id=\"buttonsPC\">\r\n\t\t\t<Button profile=\"buttonOK\" text=\"$l10n_rl_button_confirm\" onClick=\"onClickOk\" id=\"yesButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n\t\t\t<Button profile=\"buttonBack\" text=\"$l10n_rl_button_cancel\" onClick=\"onClickBack\" id=\"noButton\"/>\r\n\t\t</BoxLayout>\r\n\t</GuiElement>\r\n\t\r\n\t<GUIProfiles>\r\n\t\t<Profile name=\"rl_animalFilterListItem\" extends=\"emptyPanel\" with=\"anchorTopStretchingX pivotTopLeft\">\r\n\t\t\t<height value=\"140px\"/>\r\n\t\t</Profile>\r\n\t</GUIProfiles>\r\n</GUI>"
  },
  {
    "path": "gui/AnimalInfoDialog.xml",
    "content": "﻿<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n\t<GuiElement profile=\"newLayer\"/>\r\n\t<Bitmap profile=\"dialogFullscreenBg\" id=\"dialogBg\"/>\r\n\t<GuiElement profile=\"rl_animalInfoDialogBg\" id=\"dialogElement\">\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgMiddle\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgTop\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgBottom\"/>\r\n\t\t<GuiElement profile=\"fs25_dialogContentContainer\">\r\n\t\t\t<Animation profile=\"fs25_dialogLoading\" id=\"iconLoadingElement\"/>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t<!--\r\n\t\t\t<Bitmap profile=\"fs25_dialogCircle\" id=\"dialogCircle\">\r\n\t\t\t\t<Bitmap profile=\"fs25_dialogQuestion\" id=\"iconQuestionElement\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_dialogWarning\" id=\"iconWarningElement\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_dialogKey\" id=\"iconKeyElement\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_dialogInfo\" id=\"iconInfoElement\"/>\r\n\t\t\t</Bitmap>\r\n\t\t\t-->\r\n\t\t\t\r\n\t\t\t<GuiElement profile=\"fs25_animalDetailsContainer\" id=\"detailsContainer\">\r\n\t\t\t\t<Bitmap profile=\"rl_animalInfoAnimalIcon\" id=\"animalIcon\"/>\r\n\t\t\t\t<MultiTextOption profile=\"fs25_dialogMultiTextOption\" id=\"childrenSelector\" position=\"0px -150px\" onClick=\"onClickItems\"/>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -200px\" id=\"infoTitle[1]\" text=\"$l10n_rl_ui_uniqueId\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -200px\" id=\"infoValue[1]\" text=\"15 Monate\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -240px\" id=\"infoTitle[2]\" text=\"$l10n_rl_ui_farmId\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -240px\" id=\"infoValue[2]\" text=\"75 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -280px\" id=\"infoTitle[3]\" text=\"$l10n_infohud_age\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -280px\" id=\"infoValue[3]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -200px\" id=\"infoTitle[4]\" text=\"$l10n_infohud_health\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -200px\" id=\"infoValue[4]\" text=\"15 Monate\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -240px\" id=\"infoTitle[5]\" text=\"$l10n_rl_ui_gender\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -240px\" id=\"infoValue[5]\" text=\"75 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -280px\" id=\"infoTitle[6]\" text=\"$l10n_rl_ui_weight\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -280px\" id=\"infoValue[6]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -320px\" id=\"infoTitle[7]\" text=\"$l10n_rl_ui_value\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -320px\" id=\"infoValue[7]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -320px\" id=\"infoTitle[8]\" text=\"$l10n_rl_ui_targetWeight\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -320px\" id=\"infoValue[8]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -360px\" id=\"infoTitle[9]\" text=\"$l10n_rl_ui_valuePerKilo\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -360px\" id=\"infoValue[9]\" text=\"30 %\"/>\r\n\t\t\t\t\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_animalInfoSeparator\" position=\"0px -430px\" id=\"separator1\"/>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -440px\" id=\"infoTitle[10]\" text=\"$l10n_infohud_reproduction\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -440px\" id=\"infoValue[10]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -440px\" id=\"infoTitle[11]\" text=\"$l10n_rl_ui_canReproduce\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -440px\" id=\"infoValue[11]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -480px\" id=\"infoTitle[12]\" text=\"$l10n_rl_ui_pregnant\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -480px\" id=\"infoValue[12]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -480px\" id=\"infoTitle[13]\" text=\"$l10n_rl_ui_impregnatedBy\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -480px\" id=\"infoValue[13]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -520px\" id=\"infoTitle[14]\" text=\"$l10n_rl_ui_lactating\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -520px\" id=\"infoValue[14]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -520px\" id=\"infoTitle[15]\" text=\"$l10n_rl_ui_lactating\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -520px\" id=\"infoValue[15]\" text=\"30 %\"/>\r\n\t\t\t\t\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_animalInfoSeparator\" position=\"0px -590px\" id=\"separator2\"/>\r\n\t\t\t\t\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -600px\" id=\"infoTitle[16]\" text=\"$l10n_infohud_riding\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -600px\" id=\"infoValue[16]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -600px\" id=\"infoTitle[17]\" text=\"$l10n_infohud_fitness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -600px\" id=\"infoValue[17]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -640px\" id=\"infoTitle[18]\" text=\"$l10n_statistic_cleanliness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -640px\" id=\"infoValue[18]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -640px\" id=\"infoTitle[19]\" text=\"$l10n_statistic_cleanliness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -640px\" id=\"infoValue[19]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -680px\" id=\"infoTitle[20]\" text=\"$l10n_statistic_cleanliness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -680px\" id=\"infoValue[20]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -680px\" id=\"infoTitle[21]\" text=\"$l10n_statistic_cleanliness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -680px\" id=\"infoValue[21]\" text=\"30 %\"/>\r\n\t\t\t\t\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_animalInfoSeparator\" position=\"0px -710px\" id=\"separator3\"/>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -720px\" id=\"infoTitle[22]\" text=\"$l10n_infohud_riding\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -720px\" id=\"infoValue[22]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -720px\" id=\"infoTitle[23]\" text=\"$l10n_infohud_fitness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -720px\" id=\"infoValue[23]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -760px\" id=\"infoTitle[24]\" text=\"$l10n_statistic_cleanliness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -760px\" id=\"infoValue[24]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -760px\" id=\"infoTitle[25]\" text=\"$l10n_statistic_cleanliness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -760px\" id=\"infoValue[25]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"10px -820px\" id=\"infoTitle[26]\" text=\"$l10n_statistic_cleanliness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"210px -820px\" id=\"infoValue[26]\" text=\"30 %\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoTitle\" position=\"380px -820px\" id=\"infoTitle[27]\" text=\"$l10n_statistic_cleanliness\"/>\r\n\t\t\t\t<Text profile=\"rl_animalInfoValue\" position=\"580px -820px\" id=\"infoValue[27]\" text=\"30 %\"/>\r\n\t\t\t\t\r\n\t\t\t</GuiElement>\r\n\t\t</GuiElement>\r\n\t\t<BoxLayout profile=\"fs25_dialogButtonBox\">\r\n\t\t\t<Button profile=\"buttonOK\" text=\"$l10n_button_ok\" onClick=\"onClickOk\" id=\"okButton\"/>\r\n\t\t</BoxLayout>\r\n\t</GuiElement>\r\n\t<GUIProfiles>\r\n\t\t<Profile name=\"rl_animalInfoAnimalIcon\" extends=\"baseReference\" with=\"anchorTopCenter\">\r\n\t\t\t<size value=\"96px 95px\"/>\r\n\t\t\t<position value=\"-60px -50px\"/>\r\n\t\t\t<imageUVs value=\"0 0 1 1\"/>\r\n\t\t\t<imageSliceId value=\"noSlice\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_animalInfoDialogBg\" extends=\"fs25_dialogBg\">\r\n\t\t\t<height value=\"860px\"/>\r\n\t\t\t<width value=\"860px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_dialogBgMiddleLarge\" extends=\"fs25_dialogBgMiddle\" with=\"anchorStretchingYStretchingX pivotBottomCenter\">\r\n\t\t\t<absoluteSizeOffset value=\"0px 704px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_animalInfoTitle\" extends=\"fs25_textDefault\" with=\"anchorTopLeft\">\r\n\t\t\t<textBold value=\"true\"/>\r\n\t\t\t<textUpperCase value=\"true\"/>\r\n\t\t\t<textMaxWidth value=\"180px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_animalInfoValue\" extends=\"fs25_textDefault\" with=\"anchorTopLeft\">\r\n\t\t\t<textMaxWidth value=\"180px\"/>\r\n\t\t</Profile>\r\n\t</GUIProfiles>\r\n</GUI>"
  },
  {
    "path": "gui/AnimalScreen.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n\t<Bitmap profile=\"fs25_fullScreenBackground\"/>\r\n\r\n\t<GuiElement id=\"logContainer\" profile=\"fs25_menuContainer\" visible=\"false\">\r\n\r\n\t\t<GuiElement profile=\"fs25_menuHeaderPanel\" position=\"63px 74px\">\r\n\t\t\t<Bitmap profile=\"fs25_menuHeaderIconBg\">\r\n\t\t\t\t<Bitmap profile=\"fs25_menuHeaderIcon\" imageSliceId=\"gui.icon_ingameMenu_animals\"/>\r\n\t\t\t</Bitmap>\r\n\t\t\t<Text profile=\"fs25_menuHeaderTitle\" text=\"$l10n_rl_ui_messages\"/>\r\n\t\t</GuiElement>\r\n\r\n\t\t<GuiElement profile=\"rl_headerContainer\">\r\n\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"10px 0px\" width=\"120px\" text=\"$l10n_rl_ui_importance\" onClick=\"onClickMessageSortButton\" id=\"messagesImportanceButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"125px 0px\" width=\"110px\" text=\"$l10n_rl_ui_type\" onClick=\"onClickMessageSortButton\" id=\"messagesTypeButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"235px 0px\" width=\"110px\" text=\"$l10n_rl_ui_date\" id=\"messagesDateButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"355px 0px\" width=\"110px\" text=\"$l10n_infohud_animal\" onClick=\"onClickMessageSortButton\" id=\"messagesAnimalButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"535px 0px\" width=\"120px\" text=\"$l10n_rl_ui_message\" onClick=\"onClickMessageSortButton\" id=\"messagesMessageButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_vehiclesHeaderIconSortAscending\" position=\"10px 0px\" id=\"sortingIcon_false\"/>\r\n\t\t\t<Bitmap profile=\"fs25_vehiclesHeaderIconSortDescending\" position=\"10px 0px\" id=\"sortingIcon_true\"/>\r\n\t\t\t<ThreePartBitmap profile=\"fs25_lineSeparatorBottom\" position=\"0px -2dp\"/>\r\n\r\n\t\t</GuiElement>\r\n\r\n\t\t<SmoothList profile=\"rl_husbandryList\" id=\"husbandryList\">\r\n\t\t\t<ListItem profile=\"rl_husbandryListItem\">\r\n\t\t\t\t<Bitmap profile=\"rl_husbandryListImage\" position=\"15px 0px\" name=\"importance\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"135px 0px\" name=\"type\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"250px 0px\" name=\"date\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"390px 0px\" name=\"animal\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListTextRight\" position=\"575px 0px\" name=\"message\" width=\"600px\"/>\r\n\t\t\t</ListItem>\r\n\t\t</SmoothList>\r\n\r\n\t\t<GuiElement profile=\"rl_husbandryListPageContainer\">\r\n\t\t\t<Button profile=\"rl_husbandryListPageFirst\" id=\"messageListPageFirst\" onClick=\"onClickMessagePageFirst\"/>\r\n\t\t\t<Button profile=\"rl_husbandryListPagePrevious\" id=\"messageListPagePrevious\" onClick=\"onClickMessagePagePrevious\"/>\r\n\t\t\t<Text profile=\"rl_husbandryListPageText\" id=\"messageListPageNumber\" position=\"55px 10px\"/>\r\n\t\t\t<Text profile=\"rl_husbandryListPageText\" id=\"messageListMessageNumber\" position=\"30px -10px\"/>\r\n\t\t\t<Button profile=\"rl_husbandryListPageNext\" id=\"messageListPageNext\" onClick=\"onClickMessagePageNext\"/>\r\n\t\t\t<Button profile=\"rl_husbandryListPageLast\" id=\"messageListPageLast\" onClick=\"onClickMessagePageLast\"/>\r\n\t\t</GuiElement>\r\n\r\n\t\t<ThreePartBitmap profile=\"rl_sliderBox\">\r\n\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"husbandryList\"/>\r\n\t\t</ThreePartBitmap>\r\n\t</GuiElement>\r\n\r\n\t<GuiElement id=\"herdsmanContainer\" profile=\"fs25_menuContainer\" visible=\"false\">\r\n\r\n\t\t<GuiElement profile=\"fs25_menuHeaderPanel\" position=\"63px 74px\">\r\n\t\t\t<Bitmap profile=\"fs25_menuHeaderIconBg\">\r\n\t\t\t\t<Bitmap profile=\"fs25_menuHeaderIcon\" imageSliceId=\"gui.icon_ingameMenu_animals\"/>\r\n\t\t\t</Bitmap>\r\n\t\t\t<Text profile=\"fs25_menuHeaderTitle\" text=\"$l10n_rl_ui_herdsman\"/>\r\n\t\t\t<RoundCorner profile=\"fs25_shopMoneyBoxBg\"/>\r\n\t\t\t<BoxLayout profile=\"fs25_shopMoneyBox\">\r\n\t\t\t\t<Text profile=\"fs25_shopBalance\" text=\"$l10n_rl_ui_previousWage\"/>\r\n\t\t\t\t<Text profile=\"fs25_shopMoney\" id=\"herdsmanPreviousWageText\"/>\r\n\t\t\t</BoxLayout>\r\n\r\n\t\t\t<Button profile=\"rl_herdsmanSaveButton\" position=\"60px 0px\" onClick=\"onClickHerdsmanSaveProfile\"/>\r\n\t\t\t<Button profile=\"rl_herdsmanLoadButton\" position=\"100px 0px\" onClick=\"onClickHerdsmanLoadProfile\" id=\"herdsmanLoadProfileButton\"/>\r\n\t\t</GuiElement>\r\n\r\n\t\t<BoxLayout profile=\"fs25_subCategorySelectorTabbedBox\" absoluteSizeOffset=\"60px 0px\" position=\"0px -20px\" elementSpacing=\"50px\">\r\n\t\t\t<Button profile=\"fs25_subCategorySelectorTabbedTab\" text=\"$l10n_button_buy\" onClick=\"onClickHerdsmanPageBuy\">\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategorySelectorTabbedTabBg\" id=\"herdsmanPageBuyButtonBg\" name=\"background\"/>\r\n\t\t\t</Button>\r\n\t\t\t<Button profile=\"fs25_subCategorySelectorTabbedTab\" text=\"$l10n_button_sell\" onClick=\"onClickHerdsmanPageSell\">\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategorySelectorTabbedTabBg\" id=\"herdsmanPageSellButtonBg\" name=\"background\"/>\r\n\t\t\t</Button>\r\n\t\t\t<Button profile=\"fs25_subCategorySelectorTabbedTab\" text=\"$l10n_rl_ui_castrate\" onClick=\"onClickHerdsmanPageCastrate\">\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategorySelectorTabbedTabBg\" id=\"herdsmanPageCastrateButtonBg\" name=\"background\"/>\r\n\t\t\t</Button>\r\n\t\t\t<Button profile=\"fs25_subCategorySelectorTabbedTab\" text=\"$l10n_rl_ui_naming\" onClick=\"onClickHerdsmanPageNaming\">\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategorySelectorTabbedTabBg\" id=\"herdsmanPageNamingButtonBg\" name=\"background\"/>\r\n\t\t\t</Button>\r\n\t\t\t<Button profile=\"fs25_subCategorySelectorTabbedTab\" text=\"$l10n_rl_ui_artificialInsemination\" onClick=\"onClickHerdsmanPageAI\">\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategorySelectorTabbedTabBg\" id=\"herdsmanPageAIButtonBg\" name=\"background\"/>\r\n\t\t\t</Button>\r\n\t\t</BoxLayout>\r\n\r\n\t\t<ThreePartBitmap profile=\"fs25_lineSeparatorTopHighlighted\" absoluteSizeOffset=\"60px 0px\" position=\"0px -77px\"/>\r\n\r\n\t\t<GuiElement id=\"herdsmanPageBuy\" visible=\"false\">\r\n\r\n\t\t\t<ScrollingLayout profile=\"rl_scrollingLayout\" id=\"herdsmanPageBuyScrollingLayout\">\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"enabled\" position=\"-12px -110px\" onClick=\"onClickEnableHerdsman\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_budgetType\" position=\"-12px -110px\"/>\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"budget|type\" position=\"-12px -110px\" onClick=\"onClickChangeHerdsmanBudgetType\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<TextInput profile=\"rl_aiTextInput\" name=\"budget|fixed\" position=\"-12px -110px\" focusOnHighlight=\"true\" maxCharacters=\"6\" onTextChanged=\"onHerdsmanTextChangedInt\">\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_textInputBg\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_textInputIconBox\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_textInputIcon\"/>\r\n\t\t\t\t\t</Bitmap>\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</TextInput>\r\n\r\n\t\t\t\t<MultiTextOption profile=\"rl_aiMultiOption\" name=\"budget|percentage\" position=\"-24px -110px\"  visible=\"false\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</MultiTextOption>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_maxAnimals\" position=\"-12px -110px\"/>\r\n\t\t\t\t<TextInput profile=\"rl_aiTextInput\" name=\"maxAnimals\" position=\"-12px -110px\" focusOnHighlight=\"true\" maxCharacters=\"5\" onTextChanged=\"onHerdsmanTextChangedInt\">\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_textInputBg\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_textInputIconBox\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_textInputIcon\"/>\r\n\t\t\t\t\t</Bitmap>\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</TextInput>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_breed\" position=\"-12px -110px\"/>\r\n\t\t\t\t<MultiTextOption profile=\"rl_aiMultiOption\" name=\"breed\" position=\"-24px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</MultiTextOption>\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"diseases\" position=\"-12px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<TripleOption profile=\"rl_aiTripleOption\" name=\"gender\" position=\"-12px -180px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</TripleOption>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_infohud_age\" position=\"-12px -230px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"age\" position=\"-12px -250px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_meat\" position=\"-12px -230px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"quality\" position=\"-12px -250px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_health\" position=\"-12px -320px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"health\" position=\"-12px -340px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_fertility\" position=\"-12px -410px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"fertility\" position=\"-12px -430px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_productivity\" position=\"-12px -500px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"productivity\" position=\"-12px -520px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_metabolism\" position=\"-12px -590px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"metabolism\" position=\"-12px -610px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t</ScrollingLayout>\r\n\r\n\t\t\t<ThreePartBitmap profile=\"fs25_listSliderBox\" position=\"5px 0px\" absoluteSizeOffset=\"0px 5px\" pivot=\"1 1\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"herdsmanPageBuyScrollingLayout\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\r\n\t\t</GuiElement>\r\n\r\n\t\t<GuiElement id=\"herdsmanPageSell\" visible=\"false\">\r\n\r\n\t\t\t<ScrollingLayout profile=\"rl_scrollingLayout\" id=\"herdsmanPageSellScrollingLayout\">\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"enabled\" position=\"-12px -110px\" onClick=\"onClickEnableHerdsman\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_maxAnimals\" position=\"-12px -110px\"/>\r\n\t\t\t\t<TextInput profile=\"rl_aiTextInput\" name=\"maxAnimals\" position=\"-12px -110px\" focusOnHighlight=\"true\" maxCharacters=\"5\" onTextChanged=\"onHerdsmanTextChangedInt\">\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_textInputBg\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_textInputIconBox\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_textInputIcon\"/>\r\n\t\t\t\t\t</Bitmap>\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</TextInput>\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"mark\" position=\"-12px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"diseasesSecondary\" position=\"-12px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<TripleOption profile=\"rl_aiTripleOption\" name=\"gender\" position=\"-12px -180px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</TripleOption>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_infohud_age\" position=\"-12px -230px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"age\" position=\"-12px -250px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_meat\" position=\"-12px -230px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"quality\" position=\"-12px -250px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_health\" position=\"-12px -320px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"health\" position=\"-12px -340px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_fertility\" position=\"-12px -410px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"fertility\" position=\"-12px -430px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_productivity\" position=\"-12px -500px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"productivity\" position=\"-12px -520px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_metabolism\" position=\"-12px -590px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"metabolism\" position=\"-12px -610px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t</ScrollingLayout>\r\n\r\n\t\t\t<ThreePartBitmap profile=\"fs25_listSliderBox\" position=\"5px 0px\" absoluteSizeOffset=\"0px 5px\" pivot=\"1 1\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"herdsmanPageSellScrollingLayout\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\r\n\t\t</GuiElement>\r\n\r\n\t\t<GuiElement id=\"herdsmanPageCastrate\" visible=\"false\">\r\n\r\n\t\t\t<ScrollingLayout profile=\"rl_scrollingLayout\" id=\"herdsmanPageCastrateScrollingLayout\">\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"enabled\" position=\"-12px -110px\" onClick=\"onClickEnableHerdsman\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"mark\" position=\"-12px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"diseasesSecondary\" position=\"-12px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_infohud_age\" position=\"-12px -230px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"age\" position=\"-12px -250px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_meat\" position=\"-12px -230px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"quality\" position=\"-12px -250px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_health\" position=\"-12px -320px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"health\" position=\"-12px -340px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_fertility\" position=\"-12px -410px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"fertility\" position=\"-12px -430px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_productivity\" position=\"-12px -500px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"productivity\" position=\"-12px -520px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_metabolism\" position=\"-12px -590px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"metabolism\" position=\"-12px -610px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t</ScrollingLayout>\r\n\r\n\t\t\t<ThreePartBitmap profile=\"fs25_listSliderBox\" position=\"5px 0px\" absoluteSizeOffset=\"0px 5px\" pivot=\"1 1\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"herdsmanPageCastrateScrollingLayout\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\r\n\t\t</GuiElement>\r\n\r\n\t\t<GuiElement id=\"herdsmanPageNaming\" visible=\"false\">\r\n\r\n\t\t\t<ScrollingLayout profile=\"rl_scrollingLayout\" id=\"herdsmanPageNamingScrollingLayout\">\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"enabled\" position=\"-12px -110px\" onClick=\"onClickEnableHerdsman\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"convention\" position=\"-12px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t</ScrollingLayout>\r\n\r\n\t\t\t<ThreePartBitmap profile=\"fs25_listSliderBox\" position=\"5px 0px\" absoluteSizeOffset=\"0px 5px\" pivot=\"1 1\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"herdsmanPageNamingScrollingLayout\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\r\n\t\t</GuiElement>\r\n\r\n\t\t<GuiElement id=\"herdsmanPageAI\" visible=\"false\">\r\n\r\n\t\t\t<ScrollingLayout profile=\"rl_scrollingLayout\" id=\"herdsmanPageAIScrollingLayout\">\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"enabled\" position=\"-12px -110px\" onClick=\"onClickEnableHerdsman\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_maxAnimals\" position=\"-12px -110px\"/>\r\n\t\t\t\t<TextInput profile=\"rl_aiTextInput\" name=\"maxAnimals\" position=\"-12px -110px\" focusOnHighlight=\"true\" maxCharacters=\"5\" onTextChanged=\"onHerdsmanTextChangedInt\">\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_textInputBg\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_textInputIconBox\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_textInputIcon\"/>\r\n\t\t\t\t\t</Bitmap>\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</TextInput>\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"mark\" position=\"-12px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\r\n\t\t\t\t<BinaryOption profile=\"rl_aiBinaryOption\" name=\"diseasesSecondary\" position=\"-12px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</BinaryOption>\r\n\t\t\t\t\r\n\t\t\t\t<MultiTextOption profile=\"rl_aiMultiOption\" name=\"semen\" position=\"-24px -110px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</MultiTextOption>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_infohud_age\" position=\"-12px -230px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"age\" position=\"-12px -250px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_meat\" position=\"-12px -230px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"quality\" position=\"-12px -250px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_health\" position=\"-12px -320px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"health\" position=\"-12px -340px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_fertility\" position=\"-12px -410px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"fertility\" position=\"-12px -430px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_productivity\" position=\"-12px -500px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"productivity\" position=\"-12px -520px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t\t<Text profile=\"rl_animalFilterListItemName\" name=\"ignore\" text=\"$l10n_rl_ui_metabolism\" position=\"-12px -590px\"/>\r\n\t\t\t\t<DoubleOptionSlider profile=\"rl_aiDoubleSlider\" name=\"metabolism\" position=\"-12px -610px\">\r\n\t\t\t\t\t<Text profile=\"rl_aiTooltip\" name=\"tooltip\"/>\r\n\t\t\t\t</DoubleOptionSlider>\r\n\r\n\t\t\t</ScrollingLayout>\r\n\r\n\t\t\t<ThreePartBitmap profile=\"fs25_listSliderBox\" position=\"5px 0px\" absoluteSizeOffset=\"0px 5px\" pivot=\"1 1\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"herdsmanPageAIScrollingLayout\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\r\n\t\t</GuiElement>\r\n\t\t\r\n\t</GuiElement>\r\n\r\n\t<GuiElement id=\"aiContainer\" profile=\"fs25_menuContainer\" visible=\"false\">\r\n\r\n\t\t<GuiElement profile=\"fs25_menuHeaderPanel\" position=\"63px 74px\">\r\n\t\t\t<Bitmap profile=\"fs25_menuHeaderIconBg\">\r\n\t\t\t\t<Bitmap profile=\"fs25_menuHeaderIcon\" imageSliceId=\"gui.icon_ingameMenu_animals\"/>\r\n\t\t\t</Bitmap>\r\n\t\t\t<Text profile=\"fs25_menuHeaderTitle\" text=\"$l10n_rl_ui_artificialInsemination\"/>\r\n\t\t\t<RoundCorner profile=\"fs25_shopMoneyBoxBg\" id=\"aiShopMoneyBoxBg\"/>\r\n\t\t\t<BoxLayout profile=\"fs25_shopMoneyBox\" id=\"aiShopMoneyBox\">\r\n\t\t\t\t<Text profile=\"fs25_shopBalance\" text=\"$l10n_ui_balance\"/>\r\n\t\t\t\t<Text profile=\"fs25_shopMoney\" id=\"aiCurrentBalanceText\"/>\r\n\t\t\t</BoxLayout>\r\n\t\t</GuiElement>\r\n\r\n\t\t<ThreePartBitmap profile=\"fs25_primaryMenuContainerBg\" position=\"-35px -50px\">\r\n\t\t\t<Bitmap profile=\"fs25_menuContainerArrow\"/>\r\n\t\t\t<GuiElement profile=\"fs25_subCategoryContainer\">\r\n\t\t\t\t<MultiTextOption profile=\"fs25_subCategorySelector\" id=\"aiPageAnimalTypeSelector\" onClick=\"onClickChangeAIAnimalType\"/>\r\n\t\t\t\t<BoxLayout profile=\"fs25_subCategorySelectorBox\"/>\r\n\t\t\t\t<RoundCorner profile=\"fs25_subCategorySelectorDot\"/>\r\n\t\t\t\t<GuiElement profile=\"fs25_subCategoryListContainer\">\r\n\t\t\t\t\t<Bitmap profile=\"fs25_subCategoryStartClipper\" name=\"startClipper\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_subCategoryStopClipper\" name=\"endClipper\"/>\r\n\t\t\t\t\t<SmoothList profile=\"fs25_subCategoryList\" id=\"aiList\" startClipperElementName=\"startClipper\" endClipperElementName=\"endClipper\">\r\n\t\t\t\t\t\t<ListItem profile=\"fs25_subCategoryListItem\" name=\"defaultCell\">\r\n\t\t\t\t\t\t\t<Bitmap profile=\"fs25_subCategoryListItemIcon\" name=\"icon\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListItemName\" name=\"name\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalSourceListItemPrice\" name=\"price\"/>\r\n\t\t\t\t\t\t</ListItem>\r\n\t\t\t\t\t\t<ListItem profile=\"fs25_animalSourceListSection\" name=\"sectionCell\">\r\n\t\t\t\t\t\t\t<GuiElement profile=\"fs25_subCategoryListSectionHeaderTitle\">\r\n\t\t\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListSectionHeaderTitle\" name=\"title\" position=\"0px -15px\"/>\r\n\t\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t\t<Bitmap profile=\"fs25_subCategoryListItem\" position=\"0px -50px\" name=\"background\">\r\n\t\t\t\t\t\t\t\t<Bitmap profile=\"fs25_subCategoryListItemIcon\" name=\"icon\"/>\r\n\t\t\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListItemName\" name=\"name\"/>\r\n\t\t\t\t\t\t\t\t<Text profile=\"fs25_animalSourceListItemPrice\" name=\"price\"/>\r\n\t\t\t\t\t\t\t</Bitmap>\r\n\t\t\t\t\t\t</ListItem>\r\n\t\t\t\t\t</SmoothList>\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategoryListSliderBox\">\r\n\t\t\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"aiList\"/>\r\n\t\t\t\t\t</ThreePartBitmap>\r\n\t\t\t\t</GuiElement>\r\n\t\t\t</GuiElement>\r\n\t\t</ThreePartBitmap>\r\n\r\n\t\t<GuiElement id=\"aiInfoContainer\">\r\n\r\n\t\t\t<ScrollingLayout profile=\"rl_animalScreenScrollingLayout\" id=\"aiInfoSlider\" width=\"50%\">\r\n\r\n\t\t\t\t<Text profile=\"fs25_menuHeaderTitle\" text=\"$l10n_rl_ui_genetics\" position=\"250px 0px\"/>\r\n\r\n\t\t\t\t<GuiElement profile=\"rl_aiGeneticsBox\">\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"0px 190px\" id=\"aiGeneticsTitle[1]\" text=\"$l10n_rl_ui_meat\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-90px 190px\" id=\"aiGeneticsValue[1]\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"0px 160px\" id=\"aiGeneticsTitle[2]\" text=\"$l10n_rl_ui_metabolism\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-90px 160px\" id=\"aiGeneticsValue[2]\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"0px 130px\" id=\"aiGeneticsTitle[3]\" text=\"$l10n_rl_ui_health\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-90px 130px\" id=\"aiGeneticsValue[3]\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"0px 100px\" id=\"aiGeneticsTitle[4]\" text=\"$l10n_rl_ui_fertility\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-90px 100px\" id=\"aiGeneticsValue[4]\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"0px 70px\" id=\"aiGeneticsTitle[5]\" text=\"$l10n_rl_ui_productivity\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-90px 70px\" id=\"aiGeneticsValue[5]\"/>\r\n\t\t\t\t</GuiElement>\r\n\r\n\t\t\t\t<GuiElement profile=\"rl_aiGeneticsBox\">\r\n\t\t\t\t\t<Text profile=\"rl_aiSuccessTitle\" text=\"$l10n_rl_ui_averageSuccessColon\"/>\r\n\t\t\t\t\t<Text profile=\"rl_aiSuccessValue\" id=\"aiSuccessValue\"/>\r\n\t\t\t\t</GuiElement>\r\n\r\n\t\t\t\t<GuiElement profile=\"fs25_animalAmountSelectorBox\" position=\"0px 240px\" width=\"450px\">\r\n\t\t\t\t\t<Text profile=\"fs25_animalAmountSelectorTitle\" text=\"$l10n_rl_ui_quantity\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_animalAmountSelectorSeparator\"/>\r\n\t\t\t\t\t<MultiTextOption profile=\"fs25_animalAmountSelector\" id=\"aiQuantitySelector\" onClick=\"onClickChangeAIQuantity\" width=\"100%\"/>\r\n\t\t\t\t</GuiElement>\r\n\r\n\t\t\t\t<GuiElement profile=\"fs25_animalAmountSelectorBox\" position=\"0px 240px\" width=\"450px\">\r\n\t\t\t\t\t<Text profile=\"fs25_animalAmountSelectorTitle\" id=\"aiQuantityPrice\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_animalAmountSelectorSeparator\"/>\r\n\t\t\t\t</GuiElement>\r\n\r\n\t\t\t</ScrollingLayout>\r\n\r\n\r\n\t\t\t<ThreePartBitmap profile=\"fs25_listSliderBox\" position=\"46px 0px\" absoluteSizeOffset=\"0px 5px\" pivot=\"1 1\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"aiInfoSlider\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\t\t\t\r\n\t\t</GuiElement>\r\n\t\t\r\n\t</GuiElement>\r\n\t\r\n\t<ThreePartBitmap profile=\"fs25_primaryMenuContainerBg\" id=\"sourceBoxBg\" position=\"125px 0px\">\r\n\t\t<Bitmap profile=\"fs25_menuContainerArrow\" id=\"sourceBoxArrow\"/>\r\n\t\t<GuiElement profile=\"fs25_subCategoryContainer\">\r\n\t\t\t<MultiTextOption profile=\"fs25_subCategorySelector\" id=\"sourceSelector\" onClick=\"updateScreen\"/>\r\n\t\t\t<BoxLayout profile=\"fs25_subCategorySelectorBox\" id=\"sourceDotBox\"/>\r\n\t\t\t<RoundCorner profile=\"fs25_subCategorySelectorDot\" id=\"sourceDotTemplate\"/>\r\n\t\t\t<GuiElement profile=\"fs25_subCategoryListContainer\">\r\n\t\t\t\t<Bitmap profile=\"fs25_subCategoryStartClipper\" name=\"startClipper\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_subCategoryStopClipper\" name=\"endClipper\"/>\r\n\t\t\t\t<SmoothList profile=\"fs25_subCategoryList\" id=\"sourceList\" focusInit=\"onOpen\" onDoubleClick=\"onClickSelect\" startClipperElementName=\"startClipper\" endClipperElementName=\"endClipper\">\r\n\t\t\t\t\t<ListItem profile=\"fs25_subCategoryListItem\" name=\"defaultCell\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_subCategoryListItemIcon\" name=\"icon\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListItemName\" name=\"idNoName\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListItemName\" name=\"id\" position=\"100px -10px\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListItemName\" name=\"name\" position=\"100px -30px\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalSourceListItemPrice\" name=\"price\" position=\"100px -50px\"/>\r\n\t\t\t\t\t\t<Text profile=\"rl_animalListItemAIPurchase\" name=\"herdsmanPurchase\" text=\"$l10n_rl_ui_herdsmanRecentlyBought\"/>\r\n\t\t\t\t\t\t<Button profile=\"rl_checkboxButton\" name=\"checkbox\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"rl_checkboxBox\"/>\r\n\t\t\t\t\t\t\t<Bitmap profile=\"rl_checkbox\" name=\"check\"/>\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</ListItem>\r\n\t\t\t\t\t<ListItem profile=\"fs25_animalSourceListSection\" name=\"sectionCell\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_subCategoryListSectionHeaderTitle\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListSectionHeaderTitle\" name=\"title\" position=\"0px -15px\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_subCategoryListItem\" position=\"0px -50px\" name=\"background\">\r\n\t\t\t\t\t\t\t<Bitmap profile=\"fs25_subCategoryListItemIcon\" name=\"icon\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListItemName\" name=\"idNoName\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListItemName\" name=\"id\" position=\"100px -10px\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_subCategoryListItemName\" name=\"name\" position=\"100px -30px\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalSourceListItemPrice\" name=\"price\" position=\"100px -50px\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"rl_animalListItemAIPurchase\" name=\"herdsmanPurchase\" text=\"$l10n_rl_ui_herdsmanRecentlyBought\"/>\r\n\t\t\t\t\t\t\t<Button profile=\"rl_checkboxButton\" name=\"checkbox\">\r\n\t\t\t\t\t\t\t\t<ThreePartBitmap profile=\"rl_checkboxBox\"/>\r\n\t\t\t\t\t\t\t\t<Bitmap profile=\"rl_checkbox\" name=\"check\"/>\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t</Bitmap>\r\n\t\t\t\t\t</ListItem>\r\n\t\t\t\t</SmoothList>\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategoryListSliderBox\">\r\n\t\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"sourceList\"/>\r\n\t\t\t\t</ThreePartBitmap>\r\n\t\t\t</GuiElement>\r\n\t\t</GuiElement>\r\n\t</ThreePartBitmap>\r\n\t<Bitmap profile=\"fs25_tabListContainer\" id=\"tabListContainer\"/>\r\n\t<BoxLayout profile=\"fs25_animalTabListBox\">\r\n\t\t<GuiElement profile=\"fs25_tabListItem\" id=\"tabBuy\">\r\n\t\t\t<Button profile=\"fs25_animalTabListItemButton\" onClick=\"onClickBuyMode\" iconSliceId=\"gui.icon_animalDealer_in\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparator\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparatorBottom\"/>\r\n\t\t</GuiElement>\r\n\t\t<GuiElement profile=\"fs25_tabListItem\" id=\"tabSell\">\r\n\t\t\t<Button profile=\"fs25_animalTabListItemButton\" onClick=\"onClickSellMode\" iconSliceId=\"gui.icon_animalDealer_out\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparator\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparatorBottom\"/>\r\n\t\t</GuiElement>\r\n\t\t<GuiElement profile=\"fs25_tabListItem\" id=\"tabInfo\">\r\n\t\t\t<Button profile=\"rl_animalTabListItemButton\" onClick=\"onClickInfoMode\" iconSliceId=\"gui.dialogType_info\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparator\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparatorBottom\"/>\r\n\t\t</GuiElement>\r\n\t\t<GuiElement profile=\"fs25_tabListItem\" id=\"tabAI\">\r\n\t\t\t<Button profile=\"rl_animalTabListItemButtonMessages\" onClick=\"onClickAIMode\" iconSliceId=\"gui.icon_ingameMenu_animals\" id=\"tabLogButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparator\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparatorBottom\"/>\r\n\t\t</GuiElement>\r\n\t\t<GuiElement profile=\"fs25_tabListItem\" id=\"tabLog\">\r\n\t\t\t<Button profile=\"rl_animalTabListItemButtonMessages\" onClick=\"onClickLogMode\" iconSliceId=\"gui.newMessage\" id=\"tabLogButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparator\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparatorBottom\"/>\r\n\t\t</GuiElement>\r\n\t\t<GuiElement profile=\"fs25_tabListItem\" id=\"tabHerdsman\">\r\n\t\t\t<Button profile=\"rl_animalTabListItemButtonMessages\" onClick=\"onClickHerdsmanMode\" iconSliceId=\"gui.icon_options_generalSettings2\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparator\"/>\r\n\t\t\t<Bitmap profile=\"fs25_tabListItemSeparatorBottom\"/>\r\n\t\t</GuiElement>\r\n\t</BoxLayout>\r\n\t<GuiElement profile=\"fs25_menuContentContainer\" id=\"mainContentContainer\">\r\n\t\t<GuiElement profile=\"fs25_menuHeaderPanel\" position=\"63px 74px\">\r\n\t\t\t<Bitmap profile=\"fs25_menuHeaderIconBg\">\r\n\t\t\t\t<Bitmap profile=\"fs25_menuHeaderIcon\" imageSliceId=\"gui.icon_ingameMenu_animals\"/></Bitmap>\r\n\t\t\t<Text profile=\"fs25_menuHeaderTitle\" text=\"$l10n_ui_ingameMenuAnimals\"/>\r\n\t\t\t<RoundCorner profile=\"fs25_shopMoneyBoxBg\" id=\"shopMoneyBoxBg\"/>\r\n\t\t\t<BoxLayout profile=\"fs25_shopMoneyBox\" id=\"shopMoneyBox\">\r\n\t\t\t\t<Text profile=\"fs25_shopBalance\" text=\"$l10n_ui_balance\"/>\r\n\t\t\t\t<Text profile=\"fs25_shopMoney\" id=\"currentBalanceText\"/>\r\n\t\t\t</BoxLayout>\r\n\t\t</GuiElement>\r\n\t\t<ThreePartBitmap profile=\"fs25_secondaryMenuContainerBg\" id=\"targetBoxBg\" position=\"35px 0px\">\r\n\t\t\t<ThreePartBitmap profile=\"fs25_secondaryMenuContainerBgTop\"/>\r\n\t\t\t<Bitmap profile=\"fs25_menuContainerArrow\"/>\r\n\t\t</ThreePartBitmap>\r\n\t\t<GuiElement profile=\"fs25_secondaryMenuContainer\" id=\"noHusbandriesTextBox\" position=\"68px 0px\">\r\n\t\t\t<Text profile=\"fs25_animalTargetListEmptyText\" text=\"$l10n_ui_noHusbandriesPlaced\"/>\r\n\t\t</GuiElement>\r\n\t\t<GuiElement profile=\"fs25_secondaryMenuContainer\" id=\"targetContainer\" position=\"68px 0px\">\r\n\t\t\t<Text profile=\"fs25_animalTextTransportTo\" id=\"targetText\" text=\"$l10n_ui_animalTransport\"/>\r\n\t\t\t<MultiTextOption profile=\"fs25_animalHusbandrySelector\" id=\"targetSelector\" onClick=\"onTargetSelectionChanged\" onFocus=\"onFocusTargetSelection\"/>\r\n\t\t\t<Bitmap profile=\"fs25_animalHusbandryIcon\" id=\"targetIcon\"/>\r\n\t\t\t<GuiElement profile=\"fs25_animalTargetListContainer\" id=\"husbandryInfoContainer\" position=\"35px 30px\">\r\n\t\t\t\t<BoxLayout profile=\"fs25_animalRequirementsLayout\" id=\"husbandryRequirementsLayout\">\r\n\t\t\t\t\t<Text profile=\"fs25_animalRequirementsHeader\" id=\"conditionsHeader\" text=\"$l10n_ui_animalConditions\"/>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRow\" id=\"conditionRow[1]\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRowTextPanel\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsLabel\" id=\"conditionLabel[1]\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsValue\" id=\"conditionValue[1]\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBarBackground\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBar\" id=\"conditionStatusBar[1]\"/></ThreePartBitmap>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRow\" id=\"conditionRow[2]\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRowTextPanel\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsLabel\" id=\"conditionLabel[2]\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsValue\" id=\"conditionValue[2]\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBarBackground\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBar\" id=\"conditionStatusBar[2]\"/></ThreePartBitmap>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRow\" id=\"conditionRow[3]\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRowTextPanel\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsLabel\" id=\"conditionLabel[3]\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsValue\" id=\"conditionValue[3]\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBarBackground\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBar\" id=\"conditionStatusBar[3]\"/></ThreePartBitmap>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRow\" id=\"conditionRow[4]\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRowTextPanel\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsLabel\" id=\"conditionLabel[4]\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsValue\" id=\"conditionValue[4]\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBarBackground\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBar\" id=\"conditionStatusBar[4]\"/></ThreePartBitmap>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t<Text profile=\"fs25_animalRequirementsHeader\" id=\"conditionsHeader\" text=\"$l10n_ui_animalFood\"/>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRow\" id=\"foodRowTotal\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRowTextPanel\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsLabel\" id=\"foodHeader\" text=\"$l10n_ui_total\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsValue\" id=\"foodRowTotalValue\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBarBackground\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBar\" id=\"foodRowTotalStatusBar\"/></ThreePartBitmap>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRow\" id=\"foodRow[1]\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRowTextPanel\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsLabel\" id=\"foodLabel[1]\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsValue\" id=\"foodValue[1]\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBarBackground\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBar\" id=\"foodStatusBar[1]\"/></ThreePartBitmap>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRow\" id=\"foodRow[2]\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRowTextPanel\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsLabel\" id=\"foodLabel[2]\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsValue\" id=\"foodValue[2]\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBarBackground\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBar\" id=\"foodStatusBar[2]\"/></ThreePartBitmap>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRow\" id=\"foodRow[3]\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRowTextPanel\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsLabel\" id=\"foodLabel[3]\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsValue\" id=\"foodValue[3]\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBarBackground\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBar\" id=\"foodStatusBar[3]\"/></ThreePartBitmap>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRow\" id=\"foodRow[4]\">\r\n\t\t\t\t\t\t<GuiElement profile=\"fs25_animalRequirementsRowTextPanel\">\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsLabel\" id=\"foodLabel[4]\"/>\r\n\t\t\t\t\t\t\t<Text profile=\"fs25_animalRequirementsValue\" id=\"foodValue[4]\"/>\r\n\t\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBarBackground\">\r\n\t\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalSmallStatusBar\" id=\"foodStatusBar[4]\"/></ThreePartBitmap>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t</BoxLayout>\r\n\t\t\t</GuiElement>\r\n\t\t\t<GuiElement profile=\"fs25_animalTargetListContainer\" id=\"targetListContainer\">\r\n\t\t\t\t<SmoothList profile=\"fs25_animalTargetList\" id=\"targetList\" startClipperElementName=\"startClipperTarget\" endClipperElementName=\"endClipperTarget\">\r\n\t\t\t\t\t<ListItem profile=\"fs25_animalTargetListItem\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_animalTargetListItemIcon\" name=\"icon\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalTargetListItemName\" name=\"name\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalTargetListItemAmount\" name=\"amount\" id=\"targetListAnimalAmount\"/>\r\n\t\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalInfoSeparator\" name=\"separator\"/>\r\n\t\t\t\t\t</ListItem>\r\n\t\t\t\t</SmoothList>\r\n\t\t\t\t<Text profile=\"fs25_animalTargetListEmptyText\" text=\"$l10n_ui_noAnimalsInHusbandry\" id=\"targetListEmptyText\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_secondaryMenuStartClipper\" name=\"startClipperTarget\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_secondaryMenuStopClipper\" name=\"endClipperTarget\"/>\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategoryListSliderBox\" position=\"20px 0px\">\r\n\t\t\t\t\t<Slider profile=\"fs25_animalTargetListSlider\" id=\"targetSlider\" dataElementId=\"targetList\"/>\r\n\t\t\t\t</ThreePartBitmap>\r\n\t\t\t</GuiElement>\r\n\t\t</GuiElement>\r\n\r\n\t\t<GuiElement profile=\"fs25_animalDetailsContainer\" id=\"detailsContainer\">\r\n\r\n\t\t\t<ScrollingLayout profile=\"rl_animalScreenScrollingLayout\" id=\"scrollingLayout\" onScroll=\"onScrollLayoutScroll\">\r\n\r\n\t\t\t\t<GuiElement profile=\"rl_animalScreenScrollingLayoutBox\" id=\"scrollingLayoutBox\">\r\n\t\t\t\t\r\n\t\t\t\t\t<Bitmap profile=\"fs25_animalIconGradient\"/>\r\n\t\t\t\t\t<Bitmap profile=\"rl_animalScreenAnimalIcon\" id=\"infoIcon\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalIconTitle\" text=\"Holstein\" id=\"infoName\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"10px -360px\" id=\"infoTitle[1]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"210px -360px\" id=\"infoValue[1]\" text=\"\"/>\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalInfoSeparator\" position=\"0px -430px\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"10px -400px\" id=\"infoTitle[2]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"210px -400px\" id=\"infoValue[2]\" text=\"\"/>\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalInfoSeparator\" position=\"0px -470px\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"10px -440px\" id=\"infoTitle[3]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"210px -440px\" id=\"infoValue[3]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"380px -360px\" id=\"infoTitle[4]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"580px -360px\" id=\"infoValue[4]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"380px -400px\" id=\"infoTitle[5]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"580px -400px\" id=\"infoValue[5]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"380px -440px\" id=\"infoTitle[6]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"580px -440px\" id=\"infoValue[6]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"10px -480px\" id=\"infoTitle[7]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"210px -480px\" id=\"infoValue[7]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"380px -480px\" id=\"infoTitle[8]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"580px -480px\" id=\"infoValue[8]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"10px -520px\" id=\"infoTitle[9]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"210px -520px\" id=\"infoValue[9]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"380px -520px\" id=\"infoTitle[10]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoValue\" position=\"580px -520px\" id=\"infoValue[10]\" text=\"\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoTitle\" position=\"10px -552px\" text=\"$l10n_ui_information\"/>\r\n\t\t\t\t\t<Text profile=\"fs25_animalInfoText\" position=\"10px -582px\" id=\"infoDescription\"/>\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_animalAmountSelectorBoxBg\" id=\"numAnimalsBoxBg\"/>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalAmountSelectorBox\" id=\"numAnimalsBox\" position=\"8px 240px\">\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalAmountSelectorTitle\" text=\"$l10n_ui_animalNumber\"/>\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_animalAmountSelectorSeparator\"/>\r\n\t\t\t\t\t\t<MultiTextOption profile=\"fs25_animalAmountSelector\" id=\"numAnimalsElement\" onClick=\"onClickNumAnimals\" onFocus=\"onFocusNumAnimals\" onLeave=\"onFocusTargetSelection\"/>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalInfoBox\" id=\"infoBox\" position=\"-15px 200px\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_animalMoneyBg\" position=\"0px 154px\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"10px 160px\" text=\"$l10n_ui_prices\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 160px\" text=\"0\" id=\"infoPrice\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"10px 130px\" text=\"$l10n_shop_fee\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 130px\" text=\"0\" id=\"infoFee\"/>\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_animalMoneyTotalBg\" position=\"0px 84px\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTotalTitle\" position=\"10px 89px\" text=\"$l10n_ui_total\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTotalValue\" position=\"-10px 89px\" text=\"0\" id=\"infoTotal\"/>\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_animalInfoIcon\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalInfo\" text=\"$l10n_shop_transportationFee\"/>\r\n\t\t\t\t\t</GuiElement>\r\n\r\n\t\t\t\t\t<!--\r\n\t\t\t\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalParentTabListBox\" id=\"parentBox\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_animalMoneyBg\" position=\"0px 154px\" onClick=\"onClickAnimalInfo\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"10px 160px\" text=\"$l10n_rl_ui_mother\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" id=\"parentBoxMother\" position=\"-10px 160px\" text=\"id\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"10px 120px\" text=\"$l10n_rl_ui_father\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" id=\"parentBoxFather\" position=\"-10px 130px\" text=\"id\"/>\r\n\t\t\t\t\t</GuiElement>\r\n\t\t\t\r\n\t\t\t\t\t<-->\r\n\r\n\t\t\t\t\t<GuiElement profile=\"rl_geneticsBox\" id=\"geneticsBox\">\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 190px\" id=\"geneticsTitle[1]\" text=\"\"/>\r\n\t\t\t\t\t\t<!--<Button profile=\"rl_infoPromptButton\" position=\"65px 195px\" onClick=\"onClickInfoPrompt\" onHighlight=\"onHighlightInfoPrompt\" onHighlightRemove=\"onHighlightRemoveInfoPrompt\"/>-->\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 190px\" id=\"geneticsValue[1]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 160px\" id=\"geneticsTitle[2]\" text=\"\"/>\r\n\t\t\t\t\t\t<!--<Button profile=\"rl_infoPromptButton\" position=\"65px 165px\" onClick=\"onClickInfoPrompt\" onHighlight=\"onHighlightInfoPrompt\" onHighlightRemove=\"onHighlightRemoveInfoPrompt\"/>-->\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 160px\" id=\"geneticsValue[2]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 130px\" id=\"geneticsTitle[3]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 130px\" id=\"geneticsValue[3]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 100px\" id=\"geneticsTitle[4]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 100px\" id=\"geneticsValue[4]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 70px\" id=\"geneticsTitle[5]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 70px\" id=\"geneticsValue[5]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 40px\" id=\"geneticsTitle[6]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 40px\" id=\"geneticsValue[6]\" text=\"\"/>\r\n\t\t\t\t\t</GuiElement>\r\n\r\n\t\t\t\t\t<GuiElement profile=\"rl_geneticsBoxInfo\" id=\"diseasesBox\" position=\"-20px -30px\">\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 220px\" text=\"$l10n_rl_disease\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"400px 220px\" text=\"$l10n_ui_missionStatusTitle\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 190px\" id=\"diseasesTitle[1]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 190px\" id=\"diseasesValue[1]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 160px\" id=\"diseasesTitle[2]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 160px\" id=\"diseasesValue[2]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 130px\" id=\"diseasesTitle[3]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 130px\" id=\"diseasesValue[3]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 100px\" id=\"diseasesTitle[4]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 100px\" id=\"diseasesValue[4]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 70px\" id=\"diseasesTitle[5]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 70px\" id=\"diseasesValue[5]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"80px 40px\" id=\"diseasesTitle[6]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 40px\" id=\"diseasesValue[6]\" text=\"\"/>\r\n\t\t\t\t\t</GuiElement>\r\n\r\n\t\t\t\t\t<BoxLayout profile=\"fs25_animalParentTabListBox\" position=\"0px 220px\" id=\"parentBox\">\r\n\t\t\t\t\t\t<Button profile=\"rl_animalInfoButtonMother\" onClick=\"onClickAnimalInfo\" id=\"motherInfoButton\" text=\"Mother\"/>\r\n\t\t\t\t\t\t<Button profile=\"rl_animalInfoButtonFather\" onClick=\"onClickAnimalInfo\" id=\"fatherInfoButton\" text=\"Father\"/>\r\n\t\t\t\t\t\t<Button profile=\"rl_animalInfoButtonChildren\" onClick=\"onClickAnimalInfo\" id=\"childInfoButton\" text=\"Children\"/>\r\n\t\t\t\t\t</BoxLayout>\r\n\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalInfoBox\" id=\"inputBox\" position=\"-410px 0px\">\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"110px 190px\" id=\"inputTitle[1]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 190px\" id=\"inputValue[1]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"110px 160px\" id=\"inputTitle[2]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 160px\" id=\"inputValue[2]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"110px 130px\" id=\"inputTitle[3]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 130px\" id=\"inputValue[3]\" text=\"\"/>\r\n\t\t\t\t\t</GuiElement>\r\n\r\n\t\t\t\t\t<GuiElement profile=\"fs25_animalInfoBox\" id=\"outputBox\" position=\"0px 0px\">\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"110px 190px\" id=\"outputTitle[1]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 190px\" id=\"outputValue[1]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"110px 160px\" id=\"outputTitle[2]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 160px\" id=\"outputValue[2]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"110px 130px\" id=\"outputTitle[3]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 130px\" id=\"outputValue[3]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"110px 100px\" id=\"outputTitle[4]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 100px\" id=\"outputValue[4]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyTitle\" position=\"110px 70px\" id=\"outputTitle[5]\" text=\"\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_animalMoneyValue\" position=\"-10px 70px\" id=\"outputValue[5]\" text=\"\"/>\r\n\t\t\t\t\t</GuiElement>\r\n\r\n\t\t\t\t\t<Bitmap profile=\"rl_infoPrompt\" visible=\"false\" position=\"0px 0px\" id=\"infoPrompt\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t</Bitmap>\r\n\r\n\t\t\t\t</GuiElement>\r\n\r\n\t\t\t</ScrollingLayout>\r\n\r\n\r\n\t\t\t<ThreePartBitmap profile=\"fs25_listSliderBox\" position=\"46px 0px\" absoluteSizeOffset=\"0px 5px\" pivot=\"1 1\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"scrollingLayout\" id=\"configSlider\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\t\t\r\n\t\t\t\r\n\t\t</GuiElement>\r\n\t</GuiElement>\r\n\t<MultiTextOption profile=\"fs25_multiTextOption\" id=\"pageSelector\" visible=\"false\" handleFocus=\"false\" position=\"-10 -10\"/>\r\n\t<BoxLayout profile=\"fs25_buttonBox\" id=\"buttonsPanel\">\r\n\t\t<Button profile=\"buttonBack\" onClick=\"onClickBack\" text=\"$l10n_button_back\"/>\r\n\t\t<Button profile=\"buttonCancel\" onClick=\"onClickFilter\" text=\"$l10n_rl_ui_filters\" id=\"buttonFilters\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonCancel\" onClick=\"onClickDeleteMessage\" text=\"$l10n_rl_ui_deleteMessage\" id=\"buttonDeleteMessage\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonMenuPrev\" onClick=\"onPagePrevious\" text=\"$l10n_ui_ingameMenuPrev\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonMenuNext\" onClick=\"onPageNext\" text=\"$l10n_ui_ingameMenuNext\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonMenuSwitch\" text=\"$l10n_button_buy\" onClick=\"onClickBuy\" id=\"buttonBuy\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonOK\" text=\"$l10n_button_buy\" onClick=\"onClickBuyAI\" id=\"buttonBuyAI\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonMenuSwitch\" text=\"$l10n_rl_diseases\" onClick=\"onClickDiseases\" id=\"buttonDiseases\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonMenuSwitch\" text=\"$l10n_rl_ui_favourite\" onClick=\"onClickFavouriteAnimal\" id=\"buttonFavourite\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"rlButtonMenuExtra2\" text=\"$l10n_rl_ui_buySelected\" onClick=\"onClickBuySelected\" id=\"buttonBuySelected\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonMenuSwitch\" text=\"$l10n_rl_ui_castrate\" onClick=\"onClickCastrate\" id=\"buttonCastrate\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"rlButtonMenuExtra2\" text=\"$l10n_rl_ui_applyMonitor\" onClick=\"onClickMonitor\" id=\"buttonMonitor\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"rlButtonMenuExtra2\" text=\"$l10n_rl_ui_artificialInsemination\" onClick=\"onClickArtificialInsemination\" id=\"buttonArtificialInsemination\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"rlButtonMenuExtra2\" text=\"$l10n_rl_ui_mark\" onClick=\"onClickMark\" id=\"buttonMark\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonSelect\" text=\"$l10n_rl_ui_selectAll\" onClick=\"onClickToggleSelectAll\" id=\"buttonToggleSelectAll\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonBuy\" text=\"$l10n_rl_ui_rename\" onClick=\"onClickRename\" id=\"buttonRename\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonMenuSwitch\" text=\"$l10n_button_sell\" onClick=\"onClickSell\" id=\"buttonSell\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonOK\" text=\"$l10n_rl_button_apply\" onClick=\"onClickApplyHerdsmanSettings\" id=\"buttonApplyHerdsmanSettings\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t\t<Button profile=\"buttonOK\" text=\"$l10n_button_select\" onClick=\"onClickSelect\" id=\"buttonSelect\">\r\n\t\t\t<Bitmap profile=\"fs25_buttonBoxSeparator\" name=\"separator\"/>\r\n\t\t</Button>\r\n\t</BoxLayout>\r\n\t<GUIProfiles>\r\n\t\t<Profile name=\"rl_animalInfoButtonMother\" extends=\"fs25_wideButton\" with=\"touchButton anchorMiddleLeft\">\r\n\t\t\t<inputAction value=\"MENU_EXTRA_1\"/>\r\n\t\t\t<touchIconSliceId value=\"gui.tick\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_animalInfoButtonFather\" extends=\"fs25_wideButton\" with=\"touchButton anchorMiddleLeft\">\r\n\t\t\t<inputAction value=\"MENU_EXTRA_2\"/>\r\n\t\t\t<touchIconSliceId value=\"gui.tick\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_animalInfoButtonChildren\" extends=\"fs25_wideButton\" with=\"touchButton anchorMiddleLeft\">\r\n\t\t\t<inputAction value=\"MENU_ACTIVATE\"/>\r\n\t\t\t<touchIconSliceId value=\"gui.tick\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_animalParentTabListBox\" extends=\"emptyPanel\" with=\"anchorBottomLeft\">\r\n\t\t\t<size value=\"400px 190px\"/>\r\n\t\t\t<position value=\"10px 0px\"/>\r\n\t\t\t<flowDirection value=\"vertical\"/>\r\n\t\t\t<autoValidateLayout value=\"true\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_animalTabListItemButton\" extends=\"fs25_tabListItemButton\">\r\n\t\t\t<iconSize value=\"20px 50px\"/>\r\n\t\t\t<iconTextOffset value=\"-20px 0px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_animalTabListItemButtonMessages\" extends=\"rl_animalTabListItemButton\">\r\n\t\t\t<iconSize value=\"40px 40px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_animalScreenAnimalIcon\" extends=\"baseReference\" with=\"anchorTopCenter\">\r\n\t\t\t<size value=\"340px 340px\"/>\r\n\t\t\t<position value=\"0px 10px\"/>\r\n\t\t\t<imageSliceId value=\"noSlice\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_checkbox\" extends=\"buttonBase\">\r\n\t\t\t<imageSliceId value=\"gui.tick\"/>\r\n\t\t\t<imageColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<imageSelectedColor value=\"$preset_colorRed\"/>\r\n\t\t\t<position value=\"3px 0px\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_checkboxButton\" extends=\"buttonBase\" with=\"anchorTopRight\">\r\n\t\t\t<width value=\"25px\"/>\r\n\t\t\t<position value=\"-45px -30px\"/>\r\n\t\t\t<imageColor value=\"$preset_colorTransparent\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_checkboxBox\" extends=\"emptyPanel\">\r\n\t\t\t<imageSliceId value=\"ui_elements.square_center\"/>\r\n\t\t\t<imageColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<imageSelectedColor value=\"$preset_colorRed\"/>\r\n\t\t\t<imageHighlightedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<imageFocusedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<startImageSize value=\"5px\"/>\r\n\t\t\t<startImageSliceId value=\"ui_elements.square_left\"/>\r\n\t\t\t<startImageColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<startImageSelectedColor value=\"$preset_colorRed\"/>\r\n\t\t\t<endImageSize value=\"5px\"/>\r\n\t\t\t<endImageSliceId value=\"ui_elements.square_right\"/>\r\n\t\t\t<endImageColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<endImageSelectedColor value=\"$preset_colorRed\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rlButtonMenuExtra2\" extends=\"fs25_wideButton\" with=\"touchButton\">\r\n\t\t\t<inputAction value=\"MENU_EXTRA_2\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_animalScreenScrollingLayout\" extends=\"emptyPanel\" with=\"anchorStretchingYRight\">\r\n\t\t\t<flowDirection value=\"vertical\"/>\r\n\t\t\t<autoValidateLayout value=\"false\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_animalScreenScrollingLayoutBox\" extends=\"baseReference\" with=\"anchorTopRight\">\r\n\t\t\t<size value=\"750px 1100px\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_husbandryListPageContainer\" extends=\"emptyPanel\" with=\"anchorBottomCenter\">\r\n\t\t\t<position value=\"0px -50px\"/>\r\n\t\t\t<size value=\"275px 80px\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_husbandryListPagePrevious\" extends=\"buttonBase\" with=\"anchorMiddleLeft\">\r\n\t\t\t<imageSliceId value=\"realistic_livestock.page_next\"/>\r\n\t\t\t<imageDisabledColor value=\"$preset_fs25_colorGreyMTODisabled\"/>\r\n\t\t\t<imageRotation value=\"180\"/>\r\n\t\t\t<size value=\"32px 32px\"/>\r\n\t\t\t<position value=\"35px 0px\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_husbandryListPageNext\" extends=\"rl_husbandryListPagePrevious\" with=\"anchorMiddleRight\">\r\n\t\t\t<imageRotation value=\"0\"/>\r\n\t\t\t<position value=\"-35px 0px\"/>\r\n\t\t</Profile>\r\n\t\t\r\n\t\t<Profile name=\"rl_husbandryListPageLast\" extends=\"buttonBase\" with=\"anchorMiddleRight\">\r\n\t\t\t<size value=\"32px 32px\"/>\r\n\t\t\t<imageSliceId value=\"realistic_livestock.page_last\"/>\r\n\t\t\t<position value=\"0px 0px\"/>\r\n\t\t\t<imageDisabledColor value=\"$preset_fs25_colorGreyMTODisabled\"/>\r\n\t\t</Profile>\r\n\t\t\r\n\t\t<Profile name=\"rl_herdsmanSaveButton\" extends=\"buttonBase\" with=\"anchorMiddleCenter\">\r\n\t\t\t<size value=\"32px 32px\"/>\r\n\t\t\t<imageSliceId value=\"realistic_livestock.upload\"/>\r\n\t\t\t<imageDisabledColor value=\"$preset_fs25_colorGreyMTODisabled\"/>\r\n\t\t</Profile>\r\n\t\t\r\n\t\t<Profile name=\"rl_herdsmanLoadButton\" extends=\"rl_herdsmanSaveButton\">\r\n\t\t\t<imageSliceId value=\"realistic_livestock.download\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_husbandryListPageFirst\" extends=\"rl_husbandryListPageLast\" with=\"anchorMiddleLeft\">\r\n\t\t\t<imageRotation  value=\"180\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_husbandryListPageText\" extends=\"fs25_textDefault\" with=\"anchorMiddleCenter\">\r\n\t\t\t<position value=\"0px 0px\"/>\r\n\t\t\t<width value=\"125px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_geneticsBox\" extends=\"fs25_animalInfoBox\" with=\"anchorBottomLeft\">\r\n\t\t\t<position value=\"-80px 0px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_aiGeneticsBox\" extends=\"fs25_animalInfoBox\" with=\"anchorTopCenter\">\r\n\t\t\t<position value=\"-150px -30px\"/>\r\n\t\t\t<size value=\"500px 250px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_geneticsBoxInfo\" extends=\"fs25_animalInfoBox\" with=\"anchorBottomRight\">\r\n\t\t\t<position value=\"-15px 220px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_scrollingLayout\" extends=\"emptyPanel\" with=\"anchorMiddleCenter\">\r\n\t\t\t<flowDirection value=\"vertical\"/>\r\n\t\t\t<autoValidateLayout value=\"false\"/>\r\n\t\t\t<position value=\"0px -75px\"/>\r\n\t\t\t<alignmentX value=\"center\"/>\r\n\t\t\t<elementSpacing value=\"30px\"/>\r\n\t\t\t<height value=\"85%\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_aiBinaryOption\" extends=\"fs25_settingsBinaryOption\" with=\"anchorTopCenter\"/>\r\n\r\n\t\t<Profile name=\"rl_aiDoubleSlider\" extends=\"rl_animalFilterListItemSlider\" with=\"anchorTopCenter\"/>\r\n\t\t\r\n\t\t<Profile name=\"rl_aiTripleOption\" extends=\"rl_animalFilterListItemBinaryOption\" with=\"anchorTopCenter\"/>\r\n\t\t\r\n\t\t<Profile name=\"rl_aiTextInput\" extends=\"fs25_settingsTextInput\" with=\"anchorTopCenter\"/>\r\n\t\t\r\n\t\t<Profile name=\"rl_aiMultiOption\" extends=\"fs25_settingsMultiTextOption\" with=\"anchorTopCenter\"/>\r\n\r\n\t\t<Profile name=\"rl_aiTooltip\" extends=\"fs25_multiTextOptionTooltip\" with=\"anchorMiddleRight\">\r\n\t\t\t<position value=\"550px 0px\"/>\r\n\t\t\t<width value=\"350px\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_animalListItemAIPurchase\" extends=\"fs25_animalSourceListItemAmount\" with=\"anchorBottomRight\">\r\n\t\t\t<width value=\"200px\"/>\r\n\t\t\t<position value=\"-30px 17px\"/>\r\n\t\t\t<textSize value=\"13px\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_animalListItem\" extends=\"fs25_subCategoryListItem\">\r\n\t\t\t\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_aiSuccessValue\" extends=\"fs25_animalMoneyValue\" with=\"anchorMiddleCenter\">\r\n\t\t\t<textAlignment value=\"right\"/>\r\n\t\t\t<position value=\"-5px 0px\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"rl_aiSuccessTitle\" extends=\"fs25_animalMoneyTitle\" with=\"anchorMiddleCenter\">\r\n\t\t\t<textAlignment value=\"left\"/>\r\n\t\t\t<position value=\"5px 0px\"/>\r\n\t\t</Profile>\r\n\t</GUIProfiles>\r\n</GUI>"
  },
  {
    "path": "gui/DiseaseDialog.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n\t<GuiElement profile=\"newLayer\"/>\r\n\t<Bitmap profile=\"dialogFullscreenBg\" id=\"dialogBg\"/>\r\n\t<GuiElement profile=\"rl_animalFilterDialog\" id=\"dialogElement\" width=\"900px\">\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgMiddleSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgTopSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgBottom\"/>\r\n\t\t\r\n\t\t<GuiElement profile=\"rl_animalFilterDialogContainer\">\r\n\r\n\t\t\t<GuiElement profile=\"rl_headerContainer\" position=\"15px -25px\">\r\n\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"5px 0px\" width=\"120px\" text=\"$l10n_rl_disease\" onClick=\"onClickMessageSortButton\" id=\"titleButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"160px 0px\" width=\"110px\" text=\"$l10n_rl_ui_duration\" onClick=\"onClickMessageSortButton\" id=\"durationButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"245px 0px\" width=\"110px\" text=\"$l10n_rl_ui_fee\" onClick=\"onClickMessageSortButton\" id=\"feeButton\"/>\r\n\t\t\t\t<Button profile=\"rl_headerButton\" position=\"410px 0px\" width=\"110px\" text=\"$l10n_ui_missionStatusTitle\" onClick=\"onClickMessageSortButton\" id=\"statusButton\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_vehiclesHeaderIconSortAscending\" position=\"10px 0px\" id=\"sortingIcon_false\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_vehiclesHeaderIconSortDescending\" position=\"10px 0px\" id=\"sortingIcon_true\"/>\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_lineSeparatorBottom\" position=\"0px -2dp\"/>\r\n\r\n\t\t\t</GuiElement>\r\n\r\n\t\t\t<SmoothList profile=\"rl_husbandryList\" id=\"diseaseList\" position=\"15px -55px\">\r\n\t\t\t\t<ListItem profile=\"rl_husbandryListItem\">\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"5px 0px\" name=\"title\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"135px 0px\" name=\"duration\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"295px 0px\" name=\"fee\"/>\r\n\t\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"420px 0px\" name=\"status\"/>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</SmoothList>\r\n\r\n\t\t\t<ThreePartBitmap profile=\"rl_sliderBox\" position=\"40px -45px\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"diseaseList\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\t\t\t\r\n\t\t</GuiElement>\r\n\t\t\r\n\t\t<BoxLayout profile=\"fs25_dialogButtonBox\" id=\"buttonsPC\">\r\n\t\t\t<Button profile=\"buttonOK\" text=\"$l10n_rl_ui_startTreatment\" onClick=\"onClickOk\" id=\"yesButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n\t\t\t<Button profile=\"buttonBack\" text=\"$l10n_rl_button_cancel\" onClick=\"onClickBack\" id=\"noButton\"/>\r\n\t\t</BoxLayout>\r\n\t</GuiElement>\r\n\t\r\n\t<GUIProfiles>\r\n\t\t\r\n\t</GUIProfiles>\r\n</GUI>"
  },
  {
    "path": "gui/EarTagColourPickerDialog.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n\t<GuiElement profile=\"newLayer\"/>\r\n\t<Bitmap profile=\"dialogFullscreenBg\"/>\r\n\t<GuiElement profile=\"rl_colorDialogContainer\" id=\"dialogElement\">\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgMiddle\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgTop\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgBottom\"/>\r\n\t\t<GuiElement profile=\"fs25_dialogContentContainer\" id=\"contentContainer\">\r\n\t\t\t<Bitmap profile=\"fs25_dialogLine\" id=\"topLineLeft\" position=\"0px 45px\"/>\r\n\t\t\t<Bitmap profile=\"fs25_dialogLineRight\" id=\"topLineRight\" position=\"0px 45px\"/>\r\n\t\t\t<Text profile=\"fs25_dialogTitle\" id=\"headerText\" text=\"$l10n_ui_chooseColor\" position=\"0px 60px\"/>\r\n\t\t\t<ColorPickButton profile=\"fs25_colorDialogColorButton\" id=\"buttonTemplate\" onClick=\"onClickColorButton\" onFocus=\"onFocusColorButton\" onLeave=\"onLeaveColorButton\" onHighlight=\"onHighlightColorButton\" onHighlightRemove=\"onLeaveColorButton\"/>\r\n\t\t\t<BoxLayout profile=\"fs25_subCategorySelectorTabbedBox\" id=\"subCategoryBox\" absoluteSizeOffset=\"60px 0px\" position=\"0px -20px\" elementSpacing=\"50px\">\r\n\t\t\t\t<Button profile=\"fs25_subCategorySelectorTabbedTab\" id=\"subCategoryTabs[1]\" text=\"$l10n_rl_ui_leftEarTag\" onClick=\"onClickEarTagLeft\">\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategorySelectorTabbedTabBg\" name=\"background\"/>\r\n\t\t\t\t</Button>\r\n\t\t\t\t<Button profile=\"fs25_subCategorySelectorTabbedTab\" id=\"subCategoryTabs[2]\" text=\"$l10n_rl_ui_rightEarTag\" onClick=\"onClickEarTagRight\">\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_subCategorySelectorTabbedTabBg\" name=\"background\"/>\r\n\t\t\t\t</Button>\r\n\t\t\t</BoxLayout>\r\n\t\t\t\r\n\t\t\t<GuiElement profile=\"rl_colorDialogBoxContainer\" id=\"pageColorPicker\">\r\n\t\t\t\t\r\n\t\t\t\t<BoxLayout profile=\"fs25_colorDialogBoxCustomPickerLayout\" id=\"customPickerLayout\" position=\"0px -60px\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t<Text profile=\"fs25_colorDialogCustomPickerTitle\" text=\"$l10n_rl_ui_backgroundHue:\"/>\r\n\t\t\t\t\t<OptionSlider profile=\"fs25_colorDialogOptionSlider\" id=\"hueSliderBase\" onClick=\"onBaseHueChanged\" focusInit=\"onOpen\"/>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<Text profile=\"fs25_colorDialogCustomPickerTitle\" text=\"$l10n_rl_ui_backgroundColour:\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPicker\" id=\"customPickerBase\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPickerGradientWhite\"/>\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPickerGradientBlack\"/>\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPickerFrame\"/>\r\n\t\t\t\t\t</Bitmap>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<BoxLayout profile=\"fs25_colorDialogLayoutContainer\" id=\"cursorGlyphBox\" margin=\"0 -15px 0 20px\">\r\n\t\t\t\t\t\t<InputGlyph profile=\"fs25_inputGlyph\" id=\"cursorGlyph\" margin=\"0 0 10px 0\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_textDefault\" text=\"$l10n_ui_ingameMenuMapMoveCursor\"/>\r\n\t\t\t\t\t</BoxLayout>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<Text profile=\"fs25_colorDialogCustomPickerTitle\" text=\"$l10n_rl_ui_backgroundRgb:\"/>\r\n\t\t\t\t\t<BoxLayout profile=\"fs25_colorDialogLayoutContainer\">\r\n\t\t\t\t\t\t<MultiTextOption profile=\"fs25_colorDialogRGBOption\" id=\"baseRgbRed\" onClick=\"onRGBChanged\"/>\r\n\t\t\t\t\t\t<MultiTextOption profile=\"fs25_colorDialogRGBOption\" id=\"baseRgbGreen\" onClick=\"onRGBChanged\"/>\r\n\t\t\t\t\t\t<MultiTextOption profile=\"fs25_colorDialogRGBOption\" id=\"baseRgbBlue\" onClick=\"onRGBChanged\"/>\r\n\t\t\t\t\t</BoxLayout>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<Text profile=\"fs25_colorDialogCustomPickerTitle\" id=\"animalTypeTitle\" text=\"$l10n_rl_ui_animalType:\"/>\r\n\t\t\t\t\t<MultiTextOption profile=\"fs25_colorDialogMaterialOption\" id=\"animalTypePicker\" onClick=\"onAnimalTypeChanged\"/>\r\n\t\t\t\t\t\r\n\t\t\t\t</BoxLayout>\r\n\r\n\t\t\t\t<BoxLayout profile=\"fs25_colorDialogBoxCustomPickerLayout\" id=\"customPickerLayoutText\" position=\"400px -60px\">\r\n\r\n\t\t\t\t\t<Text profile=\"fs25_colorDialogCustomPickerTitle\" text=\"$l10n_rl_ui_textHue:\"/>\r\n\t\t\t\t\t<OptionSlider profile=\"fs25_colorDialogOptionSlider\" id=\"hueSliderText\" onClick=\"onTextHueChanged\"/>\r\n\r\n\t\t\t\t\t<Text profile=\"fs25_colorDialogCustomPickerTitle\" text=\"$l10n_rl_ui_textColour:\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPicker\" id=\"customPickerText\" position=\"330px -120px\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPickerGradientWhite\"/>\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPickerGradientBlack\"/>\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPickerFrame\"/>\r\n\t\t\t\t\t</Bitmap>\r\n\r\n\t\t\t\t\t<BoxLayout profile=\"fs25_colorDialogLayoutContainer\" id=\"cursorGlyphBoxText\" margin=\"0 -15px 0 20px\">\r\n\t\t\t\t\t\t<InputGlyph profile=\"fs25_inputGlyph\" id=\"cursorGlyphText\" margin=\"0 0 10px 0\"/>\r\n\t\t\t\t\t\t<Text profile=\"fs25_textDefault\" text=\"$l10n_ui_ingameMenuMapMoveCursor\"/>\r\n\t\t\t\t\t</BoxLayout>\r\n\r\n\t\t\t\t\t<Text profile=\"fs25_colorDialogCustomPickerTitle\" text=\"$l10n_rl_ui_textRgb:\"/>\r\n\t\t\t\t\t<BoxLayout profile=\"fs25_colorDialogLayoutContainer\">\r\n\t\t\t\t\t\t<MultiTextOption profile=\"fs25_colorDialogRGBOption\" id=\"textRgbRed\" onClick=\"onRGBChanged\"/>\r\n\t\t\t\t\t\t<MultiTextOption profile=\"fs25_colorDialogRGBOption\" id=\"textRgbGreen\" onClick=\"onRGBChanged\"/>\r\n\t\t\t\t\t\t<MultiTextOption profile=\"fs25_colorDialogRGBOption\" id=\"textRgbBlue\" onClick=\"onRGBChanged\"/>\r\n\t\t\t\t\t</BoxLayout>\r\n\t\t\t\t\t\r\n\t\t\t\t</BoxLayout>\r\n\t\t\t\t\r\n\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPickerCursor\" id=\"baseCursor\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomPickerCursor\" id=\"textCursor\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_colorDialogCustomColorBg\" id=\"colorBg\" position=\"0px -60px\">\r\n\t\t\t\t\t<Render profile=\"rl_colorDialogCustomColor\" id=\"colorRender\"/>\r\n\t\t\t\t</Bitmap>\r\n\t\t\t\t\r\n\t\t\t</GuiElement>\r\n\t\t</GuiElement>\r\n\t\t<BoxLayout profile=\"fs25_dialogButtonBox\" id=\"buttonsBox\">\r\n\t\t\t<Button profile=\"buttonBack\" text=\"$l10n_button_back\" onClick=\"onClickBack\" id=\"backButton\">\r\n\t\t\t\t<Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n\t\t\t</Button>\r\n\t\t\t<Button profile=\"buttonOK\" text=\"$l10n_rl_button_apply\" onClick=\"onClickOk\" id=\"okButton\"/>\r\n\t\t</BoxLayout>\r\n\t</GuiElement>\r\n\t<GUIProfiles>\r\n\t\t<Profile name=\"rl_colorDialogContainer\" extends=\"emptyPanel\" with=\"anchorMiddleCenter\">\r\n\t\t\t<size value=\"1300px 740px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogColorButton\" extends=\"fs25_wideButton\" with=\"anchorTopLeft\">\r\n\t\t\t<size value=\"64px 64px\"/>\r\n\t\t\t<handleFocus value=\"true\"/>\r\n\t\t\t<margin value=\"3px 3px 3px 3px\"/>\r\n\t\t\t<visible value=\"false\"/>\r\n\t\t\t<fitToContent value=\"false\"/>\r\n\t\t\t<textAutoWidth value=\"false\"/>\r\n\t\t\t<selectionFrameThickness value=\"3px 3px\"/>\r\n\t\t\t<selectionFrameColor value=\"$preset_colorWhite\"/>\r\n\t\t\t<imageSliceId value=\"gui.matte\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogColorButtonBg\" extends=\"baseReference\" with=\"anchorStretchingYStretchingX\">\r\n\t\t\t<imageSliceId value=\"gui.matte\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogMaterialIconBox\" extends=\"emptyPanel\" with=\"anchorBottomStretchingX\">\r\n\t\t\t<height value=\"30px\"/>\r\n\t\t\t<absoluteSizeOffset value=\"30px 0px\"/>\r\n\t\t\t<position value=\"0 -30px\"/>\r\n\t\t\t<alignmentX value=\"right\"/>\r\n\t\t\t<alignmentY value=\"middle\"/>\r\n\t\t\t<elementSpacing value=\"5px\"/>\r\n\t\t\t<autoValidateLayout value=\"true\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogMaterialIcon\" extends=\"baseReference\">\r\n\t\t\t<size value=\"25px 25px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogMaterialName\" extends=\"fs25_textDefault\">\r\n\t\t\t<margin value=\"0px 0px 5px 0px\"/>\r\n\t\t\t<textAutoWidth value=\"true\"/>\r\n\t\t\t<textUpperCase vaöue=\"true\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogColorNameBox\" extends=\"emptyPanel\" with=\"anchorBottomStretchingX\">\r\n\t\t\t<height value=\"30px\"/>\r\n\t\t\t<absoluteSizeOffset value=\"30px 0px\"/>\r\n\t\t\t<position value=\"0 -30px\"/>\r\n\t\t\t<alignmentY value=\"middle\"/>\r\n\t\t\t<elementSpacing value=\"5px\"/>\r\n\t\t\t<autoValidateLayout value=\"true\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogColorName\" extends=\"fs25_textDefault\" with=\"anchorBottomLeft\">\r\n\t\t\t<height value=\"20px\"/>\r\n\t\t\t<textAutoWidth value=\"true\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogInputGlyphPrev\" extends=\"emptyPanel\" with=\"anchorTopLeft\">\r\n\t\t\t<size value=\"30px 30px\"/>\r\n\t\t\t<position value=\"-30px 25px\"/>\r\n\t\t\t<handleFocus value=\"false\"/>\r\n\t\t\t<inputAction value=\"MENU_PAGE_PREV\"/>\r\n\t\t\t<iconSize value=\"25px 25px\"/>\r\n\t\t\t<iconTextOffset value=\"0px 0px\"/>\r\n\t\t\t<iconColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<iconFocusedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<iconHighlightedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<iconSelectedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<iconDisabledColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<iconBgColor value=\"$preset_fs25_colorGreenDark\"/>\r\n\t\t\t<iconBgFocusedColor value=\"$preset_fs25_colorGreenDark\"/>\r\n\t\t\t<iconBgHighlightedColor value=\"$preset_fs25_colorGreenDark\"/>\r\n\t\t\t<iconBgSelectedColor value=\"$preset_fs25_colorGreenDark\"/>\r\n\t\t\t<iconBgDisabledColor value=\"$preset_fs25_colorGreenDark\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogInputGlyphNext\" extends=\"fs25_colorDialogInputGlyphPrev\" with=\"anchorTopRight\">\r\n\t\t\t<position value=\"30px 25px\"/>\r\n\t\t\t<inputAction value=\"MENU_PAGE_NEXT\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_colorDialogBoxContainer\" extends=\"emptyPanel\" with=\"anchorMiddleCenter\">\r\n\t\t\t<size value=\"1100px 510px\"/>\r\n\t\t\t<position value=\"0 40px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogBoxLayout\" extends=\"emptyPanel\" with=\"anchorStretchingYStretchingX\">\r\n\t\t\t<numFlows value=\"0\"/>\r\n\t\t\t<fitFlowToElements value=\"true\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogBoxCustomPickerLayout\" extends=\"emptyPanel\" with=\"anchorStretchingYStretchingX\">\r\n\t\t\t<flowDirection value=\"vertical\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogCustomPickerTitle\" extends=\"fs25_textDefault\" with=\"anchorTopLeft\">\r\n\t\t\t<width value=\"360px\"/>\r\n\t\t\t<margin value=\"0 0 0 10px\"/>\r\n\t\t\t<textSize value=\"18px\"/>\r\n\t\t\t<textBold value=\"true\"/>\r\n\t\t\t<textUpperCase value=\"true\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogCustomPicker\" extends=\"baseReference\" with=\"anchorTopLeft\">\r\n\t\t\t<size value=\"360px 200px\"/>\r\n\t\t\t<position value=\"30px -120px\"/>\r\n\t\t\t<handleFocus value=\"true\"/>\r\n\t\t\t<margin value=\"0 0 0 20px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogCustomPickerFrame\" extends=\"emptyPanel\" with=\"anchorStretchingYStretchingX\">\r\n\t\t\t<absoluteSizeOffset value=\"-2dp -2dp\"/>\r\n\t\t\t<hasFrame value=\"true\"/>\r\n\t\t\t<frameThickness value=\"2dp 2dp 2dp 2dp\"/>\r\n\t\t\t<frameLeftColor value=\"0.01521 0.01521 0.01521 1\"/>\r\n\t\t\t<frameTopColor value=\"0.01521 0.01521 0.01521 1\"/>\r\n\t\t\t<frameRightColor value=\"0.01521 0.01521 0.01521 1\"/>\r\n\t\t\t<frameBottomColor value=\"0.01521 0.01521 0.01521 1\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogCustomPickerGradientWhite\" extends=\"baseReference\" with=\"anchorStretchingYStretchingX\">\r\n\t\t\t<imageSliceId value=\"gui.colorPicker_white\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogCustomPickerGradientBlack\" extends=\"baseReference\" with=\"anchorStretchingYStretchingX\">\r\n\t\t\t<imageSliceId value=\"gui.colorPicker_black\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogCustomPickerCursor\" extends=\"baseReference\">\r\n\t\t\t<size value=\"20px 20px\"/>\r\n\t\t\t<imageSliceId value=\"gui.colorPickerRing\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogOptionSlider\" extends=\"fs25_multiTextOption\" with=\"anchorTopLeft\">\r\n\t\t\t<size value=\"360px 46px\"/>\r\n\t\t\t<margin value=\"0 0 0 20px\"/>\r\n\t\t\t<sliderOffset value=\"3px\"/>\r\n\t\t\t<continuousInputStep value=\"9\"/>\r\n\t\t\t<updateTextPosition value=\"false\"/>\r\n\t\t\t<hideLeftRightButtons value=\"true\"/>\r\n\t\t\t<defaultProfileButtonLeft value=\"fs25_optionSliderNoButton\"/>\r\n\t\t\t<defaultProfileButtonRight value=\"fs25_optionSliderNoButton\"/>\r\n\t\t\t<defaultProfileBgThreePart value=\"\"/>\r\n\t\t\t<defaultProfileBg value=\"fs25_colorDialogOptionSliderBg\"/>\r\n\t\t\t<defaultProfileText value=\"fs25_colorDialogOptionSliderText\"/>\r\n\t\t\t<defaultProfileSlider value=\"fs25_colorDialogOptionSliderIcon\"/>\r\n\t\t\t<defaultProfileFillingBarThreePart value=\"\"/>\r\n\t\t\t<defaultProfileFillingBar value=\"fs25_colorDialogOptionSliderFillingBar\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogOptionSliderBg\" extends=\"baseReference\" with=\"anchorMiddleStretchingX\">\r\n\t\t\t<imageSliceId value=\"gui.colorPicker_gradientOutline\"/>\r\n\t\t\t<imageColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageFocusedColor value=\"$preset_colorWhite\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogOptionSliderFillingBar\" extends=\"baseReference\" with=\"anchorStretchingYStretchingX\">\r\n\t\t\t<absoluteSizeOffset value=\"6px 6px\"/>\r\n\t\t\t<imageSliceId value=\"gui.colorPicker_gradient\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogOptionSliderIcon\" extends=\"baseReference\" with=\"anchorStretchingYLeft\">\r\n\t\t\t<width value=\"4px\"/>\r\n\t\t\t<absoluteSizeOffset value=\"0px -4px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogOptionSliderText\" extends=\"fs25_multiTextOptionText\">\r\n\t\t\t<visible value=\"false\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogLayoutContainer\" extends=\"emptyPanel\" with=\"anchorTopStretchingX\">\r\n\t\t\t<height value=\"36px\"/>\r\n\t\t\t<margin value=\"0 0 0 15px\"/>\r\n\t\t\t<alignmentY value=\"middle\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogRGBOption\" extends=\"fs25_multiTextOption\" with=\"anchorTopLeft\">\r\n\t\t\t<width value=\"120px\"/>\r\n\t\t\t<wrap value=\"false\"/>\r\n\t\t\t<continuousInputStep value=\"10\"/>\r\n\t\t\t<hideButtonOnLimitReached value=\"true\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogMaterialOption\" extends=\"fs25_multiTextOption\" with=\"anchorTopLeft\">\r\n\t\t\t<width value=\"360px\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"rl_colorDialogCustomColor\" extends=\"baseReference\" with=\"anchorMiddleCenter\">\r\n\t\t\t<size value=\"300px 300px\"/>\r\n\t\t\t<filename value=\"animals/domesticated/earTagScene.i3d\"/>\r\n\t\t\t<cameraNode value=\"0|1\"/>\r\n\t\t\t<superSamplingFactor value=\"2\"/>\r\n\t\t</Profile>\r\n\t\t<Profile name=\"fs25_colorDialogCustomColorBg\" extends=\"baseReference\" with=\"anchorStretchingYRight pivotBottomRight\">\r\n\t\t\t<size value=\"340px 100%\"/>\r\n\t\t\t<absoluteSizeOffset value=\"0px 30px\"/>\r\n\t\t\t<imageColor value=\"$preset_fs25_colorGreyLight_20\"/>\r\n\t\t</Profile>\r\n\t</GUIProfiles>\r\n</GUI>"
  },
  {
    "path": "gui/FileExplorerDialog.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n\t<GuiElement profile=\"newLayer\"/>\r\n\t<Bitmap profile=\"dialogFullscreenBg\" id=\"dialogBg\"/>\r\n\t<GuiElement profile=\"infoDialogBg\" id=\"dialogElement\" height=\"800px\">\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgMiddleSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgTopSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgBottom\"/>\r\n\r\n\t\t<Bitmap profile=\"cl_fileExplorerTop\" id=\"topPanel\">\r\n\t\t\t<Button profile=\"cl_fileExplorerCloseButton\" onClick=\"onClickCancel\"/>\r\n\t\t\t<Button profile=\"cl_fileExplorerResizeButton\" onClick=\"onClickResize\"/>\r\n\t\t\t<Button profile=\"cl_fileExplorerUpButton\" id=\"upButton\" onClick=\"onClickPathUp\"/>\r\n\t\t\t<Text profile=\"cl_fileExplorerPathText\" id=\"pathText\"/>\r\n\t\t</Bitmap>\r\n\t\t\r\n\t\t<GuiElement profile=\"fs25_dialogContentContainer\">\r\n\t\t\t\r\n\t\t\t<SmoothList profile=\"cl_fileExplorerList\" id=\"fileList\">\r\n\t\t\t\t<ListItem profile=\"cl_fileExplorerListItem\">\r\n\t\t\t\t\t<Bitmap profile=\"cl_fileExplorerListItemIcon\" name=\"icon\"/>\r\n\t\t\t\t\t<Text profile=\"cl_fileExplorerListItemName\" name=\"name\"/>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</SmoothList>\r\n\t\t\t\r\n\t\t\t<ThreePartBitmap profile=\"fs25_subCategoryListSliderBox\">\r\n\t\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"fileList\" id=\"fileListSlider\"/>\r\n\t\t\t</ThreePartBitmap>\r\n\r\n\t\t</GuiElement>\r\n\t\t\r\n\t\t<BoxLayout profile=\"fs25_dialogButtonBox\">\r\n\t\t\t<Button profile=\"buttonOK\" text=\"$l10n_button_ok\" onClick=\"onClickOk\"/>\r\n\t\t</BoxLayout>\r\n\t</GuiElement>\r\n\r\n\t<GUIProfiles>\r\n\r\n\t\t<Profile name=\"cl_fileExplorerTop\" extends=\"baseReference\" with=\"anchorTopStretchingX\">\r\n\t\t\t<size value=\"97% 40px\"/>\r\n\t\t\t<imageColor value=\"$preset_colorLightGrey\"/>\r\n\t\t\t<position value=\"-6px 0px\"/>\r\n\t\t</Profile>\r\n\t\t\r\n\t\t<Profile name=\"cl_fileExplorerCloseButton\" extends=\"baseReference\" with=\"anchorMiddleRight\">\r\n\t\t\t<size value=\"15px 15px\"/>\r\n\t\t\t<position value=\"-10px 0px\"/>\r\n\t\t\t<iconColor value=\"$preset_fs25_colorMainLight\"/>\r\n\t\t\t<iconHighlightedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<iconSize value=\"15px 15px\"/>\r\n\t\t\t<iconSliceId value=\"gui.crossSmall\"/>\r\n\t\t\t<imageColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageFocusedColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageSelectedColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageSliceId value=\"gui.colorPreset\"/>\r\n\t\t</Profile>\r\n\t\t\r\n\t\t<Profile name=\"cl_fileExplorerResizeButton\" extends=\"baseReference\" with=\"anchorMiddleRight\">\r\n\t\t\t<size value=\"15px 15px\"/>\r\n\t\t\t<position value=\"-40px 0px\"/>\r\n\t\t\t<iconColor value=\"$preset_fs25_colorMainLight\"/>\r\n\t\t\t<iconHighlightedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<iconSize value=\"15px 15px\"/>\r\n\t\t\t<iconSliceId value=\"gui.storeAttribute_workingWidth\"/>\r\n\t\t\t<imageColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageFocusedColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageSelectedColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageSliceId value=\"gui.colorPreset\"/>\r\n\t\t</Profile>\r\n\t\t\r\n\t\t<Profile name=\"cl_fileExplorerUpButton\" extends=\"baseReference\" with=\"anchorMiddleRight\">\r\n\t\t\t<size value=\"15px 15px\"/>\r\n\t\t\t<position value=\"-70px 0px\"/>\r\n\t\t\t<iconColor value=\"$preset_fs25_colorMainLight\"/>\r\n\t\t\t<iconRotation value=\"180\"/>\r\n\t\t\t<iconHighlightedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<iconSize value=\"15px 15px\"/>\r\n\t\t\t<iconSliceId value=\"gui.HelperDirection\"/>\r\n\t\t\t<imageColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageFocusedColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageSelectedColor value=\"$preset_colorTransparent\"/>\r\n\t\t\t<imageSliceId value=\"gui.colorPreset\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"cl_fileExplorerListItem\" extends=\"baseReference\" with=\"anchorTopStretchingX alternating\">\r\n\t\t\t<height value=\"32px\"/>\r\n\t\t\t<imageColor value=\"$preset_fs25_colorGrey\"/>\r\n\t\t\t<imageSelectedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t\t<alternateBackgroundColor value=\"$preset_fs25_colorGreyDark_50\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"cl_fileExplorerList\" extends=\"emptyPanel\" with=\"anchorStretchingYLeft pivotTopLeft\">\r\n\t\t\t<position value=\"0px -60px\"/>\r\n\t\t\t<height value=\"90%\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"cl_fileExplorerListItemName\" extends=\"baseReference\" with=\"anchorMiddleLeft\">\r\n\t\t\t<size value=\"90% 100%\"/>\r\n\t\t\t<position value=\"50px 0px\"/>\r\n\t\t\t<textBold value=\"false\"/>\r\n\t\t\t<textSize value=\"16px\"/>\r\n\t\t\t<textAlignment value=\"left\"/>\r\n\t\t\t<textColor value=\"$preset_fs25_colorMainLight\"/>\r\n\t\t\t<textSelectedColor value=\"$preset_fs25_colorMainDark\"/>\r\n\t\t\t<textDisabledColor value=\"$preset_colorDisabled\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"cl_fileExplorerListItemIcon\" extends=\"baseReference\" with=\"anchorMiddleLeft\">\r\n\t\t\t<size value=\"35px 28px\"/>\r\n\t\t\t<position value=\"5px 0px\"/>\r\n\t\t\t<imageSliceId value=\"fileTypeIcons.png\"/>\r\n\t\t</Profile>\r\n\r\n\t\t<Profile name=\"cl_fileExplorerPathText\" extends=\"baseReference\" with=\"anchorMiddleCenter\">\r\n\t\t\t<size value=\"75% 100%\"/>\r\n\t\t\t<position value=\"0px 0px\"/>\r\n\t\t\t<textBold value=\"true\"/>\r\n\t\t\t<textSize value=\"20px\"/>\r\n\t\t\t<textColor value=\"$preset_fs25_colorMainLight\"/>\r\n\t\t</Profile>\r\n\t\t\r\n\t</GUIProfiles>\r\n\r\n</GUI>"
  },
  {
    "path": "gui/NameInputDialog.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n\t<GuiElement profile=\"newLayer\"/>\r\n\t<Bitmap profile=\"dialogFullscreenBg\" id=\"dialogBg\"/>\r\n\t<GuiElement profile=\"fs25_textInputDialogBg\" id=\"dialogElement\">\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgMiddleSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgTopSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgBottom\"/>\r\n\t\t<GuiElement profile=\"fs25_dialogContentContainer\">\r\n\t\t\t<Text profile=\"fs25_textInputDialogText\" id=\"dialogTextElement\" text=\"$l10n_rl_ui_rename\"/>\r\n\t\t\t<TextInput profile=\"fs25_dialogTextInput\" id=\"textElement\" onEnterPressed=\"onEnterPressed\" onEscPressed=\"onEscPressed\" enterWhenClickOutside=\"false\" imeTitle=\"\" imeDescription=\"\" imePlaceholder=\"\">\r\n\t\t\t\t<ThreePartBitmap profile=\"fs25_textInputBg\"/>\r\n\t\t\t\t<Bitmap profile=\"fs25_dialogTextInputIconBox\">\r\n\t\t\t\t\t<Bitmap profile=\"fs25_dialogTextInputIcon\"/></Bitmap>\r\n\t\t\t</TextInput>\r\n\t\t</GuiElement>\r\n\t\t<BoxLayout profile=\"fs25_dialogButtonBox\" id=\"buttonsPC\">\r\n\t\t\t<Button profile=\"buttonOK\" text=\"$l10n_rl_button_confirm\" onClick=\"onClickOk\" id=\"yesButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n\t\t\t<Button profile=\"buttonBack\" text=\"$l10n_rl_button_cancel\" onClick=\"onClickBack\" id=\"noButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n\t\t\t<Button profile=\"buttonMenuSwitch\" text=\"$l10n_rl_button_random\" onClick=\"onClickRandom\" id=\"randomButton\"/>\r\n\t\t</BoxLayout>\r\n\t</GuiElement>\r\n</GUI>"
  },
  {
    "path": "gui/ProfileDialog.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n\t<GuiElement profile=\"newLayer\"/>\r\n\t<Bitmap profile=\"dialogFullscreenBg\" id=\"dialogBg\"/>\r\n\t<GuiElement profile=\"fs25_textInputDialogBg\" id=\"dialogElement\">\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgMiddleSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgTopSmall\"/>\r\n\t\t<ThreePartBitmap profile=\"fs25_dialogBgBottom\"/>\r\n\t\t<GuiElement profile=\"fs25_dialogContentContainer\">\r\n\r\n\t\t\t<GuiElement id=\"saveContainer\">\r\n\t\t\t\t\r\n\t\t\t\t<Text profile=\"fs25_menuHeaderTitle\" text=\"$l10n_rl_ui_saveProfile\" textSize=\"28px\" position=\"150px 40px\"/>\r\n\t\t\t\t<TextInput profile=\"fs25_dialogTextInput\" id=\"saveProfileInput\" maxCharacters=\"20\" onEnterPressed=\"onEnterPressed\" onEscPressed=\"onEscPressed\" enterWhenClickOutside=\"false\">\r\n\t\t\t\t\t<ThreePartBitmap profile=\"fs25_textInputBg\"/>\r\n\t\t\t\t\t<Bitmap profile=\"fs25_dialogTextInputIconBox\">\r\n\t\t\t\t\t\t<Bitmap profile=\"fs25_dialogTextInputIcon\"/>\r\n\t\t\t\t\t</Bitmap>\r\n\t\t\t\t</TextInput>\r\n\t\t\t\t\r\n\t\t\t</GuiElement>\r\n\r\n\t\t\t<GuiElement id=\"loadContainer\">\r\n\t\t\t\t\r\n\t\t\t\t<Text profile=\"fs25_menuHeaderTitle\" text=\"$l10n_rl_ui_loadProfile\" textSize=\"28px\" position=\"150px 40px\"/>\r\n\t\t\t\t<MultiTextOption profile=\"rl_aiMultiOption\" id=\"loadProfileSelector\" position=\"-24px -60px\"/>\r\n\t\t\t\t\r\n\t\t\t</GuiElement>\r\n\t\t\t\r\n\t\t</GuiElement>\r\n\t\t<BoxLayout profile=\"fs25_dialogButtonBox\" id=\"buttonsPC\">\r\n\t\t\t<Button profile=\"buttonOK\" text=\"$l10n_rl_ui_save\" onClick=\"onClickSave\" id=\"saveButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n\t\t\t<Button profile=\"buttonOK\" text=\"$l10n_rl_ui_load\" onClick=\"onClickLoad\" id=\"loadButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n\t\t\t<Button profile=\"buttonBack\" text=\"$l10n_rl_button_cancel\" onClick=\"onClickBack\" id=\"noButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n\t\t</BoxLayout>\r\n\t</GuiElement>\r\n</GUI>"
  },
  {
    "path": "gui/RealisticLivestockFrame.xml",
    "content": "<GUI name=\"RealisticLivestockFrame\">\r\n\t\r\n\t<GuiElement profile=\"fs25_menuContainer\">\r\n\t\t<GuiElement profile=\"fs25_menuHeaderPanel\">\r\n\t\t\t<Bitmap profile=\"fs25_menuHeaderIconBg\">\r\n\t\t\t\t<Bitmap profile=\"rl_headerIcon\"/>\r\n\t\t\t</Bitmap>\r\n\t\t\t<Text profile=\"fs25_menuHeaderTitle\" id=\"categoryHeaderText\" text=\"$l10n_rl_ui_monitor\"/>\r\n\t\t\t<RoundCorner profile=\"fs25_shopMoneyBoxBg\" id=\"shopMoneyBoxBg\"/>\r\n\t\t\t<BoxLayout profile=\"fs25_shopMoneyBox\" id=\"shopMoneyBox\">\r\n\t\t\t\t<Text profile=\"fs25_shopBalance\" text=\"$l10n_ui_balance:\"/>\r\n\t\t\t\t<Text profile=\"fs25_shopMoney\" id=\"currentBalanceText\"/>\r\n\t\t\t</BoxLayout>\r\n\t\t</GuiElement>\r\n\r\n\t\t<GuiElement profile=\"rl_headerContainer\">\r\n\t\t\t\r\n\t\t\t<Button profile=\"rl_headerButtonLeft\" position=\"5px 0px\" width=\"120px\" text=\"$l10n_infohud_name\" onClick=\"onClickSortButton\" id=\"nameButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"125px 0px\" width=\"120px\" text=\"$l10n_contract_details_farmland\" onClick=\"onClickSortButton\" id=\"farmlandButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"180px 0px\" width=\"120px\" text=\"$l10n_rl_ui_animalType\" onClick=\"onClickSortButton\" id=\"animalTypeButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButtonLeft\" position=\"300px 0px\" width=\"160px\" text=\"$l10n_rl_ui_amountMonitored\" onClick=\"onClickSortButton\" id=\"percentMonitoredButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"420px 0px\" width=\"120px\" text=\"$l10n_rl_ui_fee\" onClick=\"onClickSortButton\" id=\"feeButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"540px 0px\" width=\"120px\" text=\"$l10n_rl_ui_input_food\" onClick=\"onClickSortButton\" id=\"foodButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"660px 0px\" width=\"120px\" text=\"$l10n_rl_ui_input_water\" onClick=\"onClickSortButton\" id=\"waterButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"780px 0px\" width=\"120px\" text=\"$l10n_rl_ui_input_water\" onClick=\"onClickSortButton\" id=\"strawButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"900px 0px\" width=\"120px\" text=\"$l10n_rl_ui_production\" onClick=\"onClickSortButton\" id=\"productionButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"1020px 0px\" width=\"120px\" text=\"$l10n_rl_ui_output_manure\" onClick=\"onClickSortButton\" id=\"manureButton\"/>\r\n\t\t\t<Button profile=\"rl_headerButton\" position=\"1140px 0px\" width=\"160px\" text=\"$l10n_rl_ui_output_liquidManure\" onClick=\"onClickSortButton\" id=\"liquidManureButton\"/>\r\n\t\t\t<Bitmap profile=\"fs25_vehiclesHeaderIconSortAscending\" position=\"10px 0px\" id=\"sortingIcon_false\"/>\r\n\t\t\t<Bitmap profile=\"fs25_vehiclesHeaderIconSortDescending\" position=\"10px 0px\" id=\"sortingIcon_true\"/>\r\n\t\t\t<ThreePartBitmap profile=\"fs25_lineSeparatorBottom\" position=\"0px -2dp\"/>\r\n\t\t\t\r\n\t\t</GuiElement>\r\n\t\t\r\n\t\t<SmoothList profile=\"rl_husbandryList\" id=\"husbandryList\">\r\n\t\t\t<ListItem profile=\"rl_husbandryListItem\">\r\n\t\t\t\t<Text profile=\"rl_husbandryListTextRight\" position=\"5px 0px\" name=\"name\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"125px 0px\" name=\"farmland\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"180px 0px\" name=\"animalType\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"300px 0px\" name=\"percentMonitored\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"420px 0px\" name=\"fee\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"540px 0px\" name=\"food\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"660px 0px\" name=\"water\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"780px 0px\" name=\"straw\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"900px 0px\" name=\"product\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"1020px 0px\" name=\"manure\"/>\r\n\t\t\t\t<Text profile=\"rl_husbandryListText\" position=\"1140px 0px\" name=\"liquidManure\"/>\r\n\t\t\t</ListItem>\r\n\t\t</SmoothList>\r\n\t\t\r\n\t\t<ThreePartBitmap profile=\"rl_sliderBox\">\r\n\t\t\t<Slider profile=\"fs25_listSlider\" dataElementId=\"husbandryList\"/>\r\n\t\t</ThreePartBitmap>\r\n\t\t\r\n\t</GuiElement>\r\n\r\n\t<GUIProfiles>\r\n\r\n\t\t<Profile name=\"rl_headerIcon\" extends=\"baseReference\" with=\"anchorMiddleCenter\">\r\n\t\t\t<size value=\"50px 50px\"/>\r\n\t\t\t<imageSliceId value=\"realistic_livestock.main_icon\"/>\r\n\t\t\t<imageColor value=\"$preset_fs25_colorMainDark\"/>\r\n\t\t</Profile>\r\n\t\t\r\n\t</GUIProfiles>\r\n\t\r\n</GUI>"
  },
  {
    "path": "gui/VisualAnimalsDialog.xml",
    "content": "<GUI onOpen=\"onOpen\" onClose=\"onClose\" onCreate=\"onCreate\">\r\n    <GuiElement profile=\"newLayer\"/>\r\n    <Bitmap profile=\"dialogFullscreenBg\" id=\"dialogBg\"/>\r\n    <GuiElement profile=\"fs25_visualAnimalsBg\" id=\"dialogElement\">\r\n        <ThreePartBitmap profile=\"fs25_dialogBgMiddleSmall\"/>\r\n        <ThreePartBitmap profile=\"fs25_dialogBgTopSmall\"/>\r\n        <ThreePartBitmap profile=\"fs25_dialogBgBottom\"/>\r\n        <GuiElement profile=\"fs25_dialogContentContainer\">\r\n            <Text profile=\"fs25_dialogTitle\" id=\"dialogTitleElement\" text=\"$l10n_rl_dialog_title\" position=\"0px -35px\"/>\r\n            <OptionSlider profile=\"fs25_optionSlider_visualAnimals\" id=\"quantityElement\" position=\"0px 130px\"/>\r\n        </GuiElement>\r\n        <BoxLayout profile=\"fs25_dialogButtonBox\">\r\n            <Button profile=\"buttonNo\" text=\"$l10n_rl_button_cancel\" onClick=\"onNo\" id=\"noButton\"/>\r\n            <Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n            <Button profile=\"buttonMenuSwitch\" text=\"$l10n_rl_button_recommended\" onClick=\"onRecommended\" id=\"recommendedButton\"/>\r\n            <Bitmap profile=\"fs25_dialogButtonBoxSeparator\"/>\r\n            <Button profile=\"buttonYes\" text=\"$l10n_rl_button_apply\" onClick=\"onYes\" id=\"yesButton\"/>\r\n        </BoxLayout>\r\n    </GuiElement>\r\n\r\n    <GUIProfiles>\r\n        <Profile name=\"fs25_visualAnimalsBg\" extends=\"fs25_dialogBg\">\r\n            <size value=\"700px 430px\"/>\r\n        </Profile>\r\n        <Profile name=\"fs25_optionSlider_visualAnimals\" extends=\"fs25_optionSlider\">\r\n            <width value=\"500px\"/>\r\n        </Profile>\r\n    </GUIProfiles>\r\n</GUI>"
  },
  {
    "path": "gui/fileTypeIcons.xml",
    "content": "<texture>\r\n\t<meta>\r\n\t\t<filename>fileTypeIcons.png</filename>\r\n\t\t<size width=\"2048\" height=\"2048\"/>\r\n\t</meta>\r\n\t<slices>\r\n\t\t<slice id=\"folder\" uvs=\"0px 0px 512px 512px\"/>\r\n\t\t<slice id=\"png\" uvs=\"512px 0px 512px 512px\"/>\r\n\t\t<slice id=\"xml\" uvs=\"1024px 0px 512px 512px\"/>\r\n\t\t<slice id=\"jpg\" uvs=\"0px 512px 512px 512px\"/>\r\n\t\t<slice id=\"dds\" uvs=\"512px 512px 512px 512px\"/>\r\n\t</slices>\r\n</texture>"
  },
  {
    "path": "gui/guiProfiles.xml",
    "content": "<GUIProfiles>\r\n\r\n\t<Profile name=\"rl_animalFilterListItemName\" extends=\"fs25_textDefault\" with=\"anchorTopCenter\">\r\n\t\t<textAutoWidth value=\"true\"/>\r\n\t\t<textLayoutMode value=\"scrolling\"/>\r\n\t\t<position value=\"0px -10px\"/>\r\n\t</Profile>\r\n\t\r\n\t<Profile name=\"rl_animalFilterListItemSliderFillingBar\" extends=\"fs25_optionSliderFillingBar\">\r\n\t\t<imageColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t<imageFocusedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t<startImageColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t<startImageFocusedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t<endImageColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t<endImageFocusedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t</Profile>\r\n\t\r\n\t<Profile name=\"rl_animalFilterListItemSlider\" extends=\"fs25_optionSlider\">\r\n\t\t<width value=\"400px\"/>\r\n\t\t<defaultProfileFillingBarThreePart value=\"rl_animalFilterListItemSliderFillingBar\"/>\r\n\t</Profile>\r\n\t\r\n\t<Profile name=\"rl_animalFilterListItemBinaryOption\" extends=\"rl_tripleOption\">\r\n\t\t<position value=\"-12px 0px\"/>\r\n\t\t<focusOnHighlight value=\"true\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_animalFilterDialog\" extends=\"fs25_dialogBg\">\r\n\t\t<size value=\"740px 740px\"/>\r\n\t</Profile>\r\n\t\r\n\t<Profile name=\"rl_animalFilterDialogContainer\" extends=\"emptyPanel\" with=\"anchorStretchingYStretchingX pivotTopLeft\">\r\n\t\t<absoluteSizeOffset value=\"100px 100px\"/>\r\n\t\t<position value=\"4px -4px\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_headerContainer\" extends=\"emptyPanel\" with=\"anchorTopStretchingX\">\r\n\t\t<height value=\"32px\"/>\r\n\t\t<position value=\"0px -100px\"/>\r\n\t\t<absoluteSizeOffset value=\"15px 0px\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_headerButton\" extends=\"baseReference\">\r\n\t\t<height value=\"32px\"/>\r\n\t\t<imageColor value=\"0 0 0 0\"/>\r\n\t\t<textFocusedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t<textHighlightedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t<textSize value=\"18px\"/>\r\n\t\t<textBold value=\"true\"/>\r\n\t\t<textUpperCase value=\"true\"/>\r\n\t\t<textAlignment value=\"right\"/>\r\n\t\t<textColor value=\"$preset_colorWhite_50\"/>\r\n\t\t<textDisabledColor value=\"$preset_colorDisabled\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_headerButtonLeft\" extends=\"rl_headerButton\">\r\n\t\t<textAlignment value=\"left\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_husbandryListText\" extends=\"baseReference\" with=\"anchorStretchingYLeft\">\r\n\t\t<size value=\"155px 32px\"/>\r\n\t\t<textBold value=\"false\"/>\r\n\t\t<textSize value=\"16px\"/>\r\n\t\t<textColor value=\"$preset_fs25_colorMainLight\"/>\r\n\t\t<textSelectedColor value=\"$preset_fs25_colorMainDark\"/>\r\n\t\t<textDisabledColor value=\"$preset_colorDisabled\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_husbandryListTextRight\" extends=\"rl_husbandryListText\">\r\n\t\t<textAlignment value=\"left\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_husbandryList\" extends=\"emptyPanel\" with=\"anchorStretchingYLeft pivotTopLeft\">\r\n\t\t<position value=\"0px -140px\"/>\r\n\t\t<absoluteSizeOffset value=\"15px 160px\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_husbandryListItem\" extends=\"baseReference\" with=\"anchorTopStretchingX alternating\">\r\n\t\t<height value=\"32px\"/>\r\n\t\t<imageColor value=\"$preset_fs25_colorGrey\"/>\r\n\t\t<imageSelectedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t<alternateBackgroundColor value=\"$preset_fs25_colorGreyDark_50\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_sliderBox\" extends=\"fs25_listSliderBox\" with=\"anchorTopStretchingX pivotTopRight\">\r\n\t\t<position value=\"28px -40px\"/>\r\n\t\t<absoluteSizeOffset value=\"0px 80px\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_husbandryListImage\" extends=\"baseReference\" with=\"anchorMiddleLeft\">\r\n\t\t<size value=\"18px 18px\"/>\r\n\t\t<imageSliceId value=\"realistic_livestock.importance_3\"/>\r\n\t</Profile>\r\n\t\r\n\t<Profile name=\"rl_settingsButton\" extends=\"emptyPanel\" with=\"anchorMiddleRight\">\r\n\t\t<size value=\"280px 32px\"/>\r\n\t\t<position value=\"-10px 0px\"/>\r\n\t\t<focusOnHighlight value=\"true\"/>\r\n\t\t<textResizeWidth value=\"200px\"/>\r\n\t\t<textSize value=\"16px\"/>\r\n\t\t<iconColor value=\"$preset_colorTransparent\"/>\r\n\t\t<iconFocusedColor value=\"$preset_colorTransparent\"/>\r\n\t\t<iconTextOffset value=\"0px -1px\"/>\r\n\t\t<iconHighlightedColor value=\"$preset_colorTransparent\"/>\r\n\t\t<textBold value=\"true\"/>\r\n\t\t<textUpperCase value=\"true\"/>\r\n\t\t<textAlignment value=\"center\"/>\r\n\t\t<textColor value=\"$preset_fs25_colorMainLight\"/>\r\n\t\t<textFocusedColor value=\"$preset_fs25_colorMainDark\"/>\r\n\t\t<textDisabledColor value=\"$preset_colorDisabled\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_tripleOption\" extends=\"baseReference\" with=\"anchorBottomCenter\">\r\n\t\t<size value=\"414px 32px\"/>\r\n\t\t<autoAddDefaultElements value=\"true\"/>\r\n\t\t<defaultProfileBgThreePart value=\"fs25_binaryOptionBg\"/>\r\n\t\t<defaultProfileButtonLeft value=\"rl_tripleOptionLeft\"/>\r\n\t\t<defaultProfileButtonMiddle value=\"rl_tripleOptionMiddle\"/>\r\n\t\t<defaultProfileButtonRight value=\"rl_tripleOptionRight\"/>\r\n\t\t<defaultProfileSliderThreePart value=\"rl_tripleOptionSlider\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_tripleOptionLeft\" extends=\"fs25_binaryOptionLeft\">\r\n\t\t<size value=\"33% 100%\"/>\r\n\t</Profile>\r\n\t\r\n\t<Profile name=\"rl_tripleOptionMiddle\" extends=\"rl_tripleOptionLeft\" with=\"anchorStretchingYCenter\">\r\n\t\t<position value=\"0px 0px\"/>\r\n\t</Profile>\r\n\t\r\n\t<Profile name=\"rl_tripleOptionRight\" extends=\"rl_tripleOptionLeft\" with=\"anchorStretchingYRight\">\r\n\t\t<position value=\"-10px 0px\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_tripleOptionSlider\" extends=\"fs25_binaryOptionSlider\">\r\n\t\t<size value=\"33% 100%\"/>\r\n\t</Profile>\r\n\t\r\n\t<Profile name=\"rl_infoPromptButton\" extends=\"baseReference\" with=\"anchorBottomLeft\">\r\n\t\t<size value=\"10px 15px\"/>\r\n\t\t<iconColor value=\"$preset_fs25_colorMainLight\"/>\r\n\t\t<iconHighlightedColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t\t<iconSize value=\"10px 15px\"/>\r\n\t\t<iconSliceId value=\"gui.dialogType_info\"/>\r\n\t\t<imageColor value=\"$preset_colorTransparent\"/>\r\n\t\t<imageFocusedColor value=\"$preset_colorTransparent\"/>\r\n\t\t<imageSelectedColor value=\"$preset_colorTransparent\"/>\r\n\t\t<imageSliceId value=\"gui.colorPreset\"/>\r\n\t</Profile>\r\n\r\n\t<Profile name=\"rl_infoPrompt\" extends=\"baseReference\">\r\n\t\t<size value=\"300px 70px\"/>\r\n\t\t<imageSliceId value=\"gui.map_box_selected\"/>\r\n\t\t<imageColor value=\"$preset_fs25_colorMainHighlight\"/>\r\n\t</Profile>\r\n\t\r\n</GUIProfiles>"
  },
  {
    "path": "gui/helpicons.xml",
    "content": "<texture>\r\n\t<meta>\r\n\t\t<filename>helpicons.png</filename>\r\n\t\t<size width=\"1024\" height=\"1024\"/>\r\n\t</meta>\r\n\t<slices>\r\n\t\t<slice id=\"monitor\" uvs=\"0px 0px 256px 256px\"/>\r\n\t\t<slice id=\"pregnancy\" uvs=\"256px 0px 256px 256px\"/>\r\n\t\t<slice id=\"production\" uvs=\"512px 0px 256px 256px\"/>\r\n\t\t<slice id=\"genetics\" uvs=\"768px 0px 256px 256px\"/>\r\n\t</slices>\r\n</texture>"
  },
  {
    "path": "gui/icons.xml",
    "content": "<texture>\r\n\t<meta>\r\n\t\t<filename>icons.png</filename>\r\n\t\t<size width=\"1024\" height=\"1024\"/>\r\n\t</meta>\r\n\t<slices>\r\n\t\t<slice id=\"main_icon\" uvs=\"0px 0px 256px 256px\"/>\r\n\t\t<slice id=\"importance_3\" uvs=\"512px 0px 256px 256px\"/>\r\n\t\t<slice id=\"importance_2\" uvs=\"768px 0px 256px 256px\"/>\r\n\t\t<slice id=\"importance_1\" uvs=\"0px 256px 256px 256px\"/>\r\n\t\t<slice id=\"page_last\" uvs=\"256px 256px 105px 98px\"/>\r\n\t\t<slice id=\"page_next\" uvs=\"361px 256px 105px 98px\"/>\r\n\t\t<slice id=\"messages\" uvs=\"466px 256px 128px 128px\"/>\r\n\t\t<slice id=\"messages_new\" uvs=\"594px 256px 128px 128px\"/>\r\n\t\t<slice id=\"upload\" uvs=\"0px 512px 256px 256px\"/>\r\n\t\t<slice id=\"download\" uvs=\"256px 512px 256px 256px\"/>\r\n\t</slices>\r\n</texture>"
  },
  {
    "path": "modDesc.xml",
    "content": "<modDesc descVersion=\"103\">\r\n    <author>Arrow</author>\r\n    <version>1.2.1.4</version>\r\n    <title>\r\n        <en>Realistic Livestock</en>\r\n        <de>Realistischer Viehbestand</de>\r\n        <fr>Bétail Réaliste</fr>\r\n    </title>\r\n    <description>\r\n        <en>\r\n    <![CDATA[ This is a complete overhaul to the animal system.\r\n\r\n- Github:\r\nhttps://github.com/Arrow-kb/FS25_RealisticLivestock\r\n\r\nFeatures:\r\n\r\nArtificial Insemination & Dewars\r\n\r\n- Buy dewars filled with varying amounts of inseminant from pedigree males around the world\r\n- New object and handtool\r\n- Manually inseminate females or do it in the menu\r\n- Offspring will be very good, but insemination has a risk of failure\r\n\r\nHerdsman\r\n\r\n- Automatically buy, sell, name, castrate and inseminate animals with a wide range of options and filters\r\n- Pay the herdsman a monthly wage based on his services\r\n\r\nMale Animals\r\n\r\n- Higher value\r\n- Required for reproduction\r\n- No male models (im not a 3d artist)\r\n\r\nVisual Animals\r\n\r\n- The limit of visual animals per husbandry has been increased from 25 in the vanilla game, up to 200 at maximum which can be changed with a slider\r\n\r\nIndividual Animals\r\n\r\n- All animals are now 100% individual and the archaic cluster system has been scrapped, allowing for more variety in gameplay and animals\r\n- Every animal has its own unique identifier based on the UK's cattle identification system\r\n- Every animal has a birthday and a country of origin\r\n- Every animal can be named\r\n- Supported animals have ear tags on their left and right ears, detailing their country of origin, farm ID, animal ID, name and birthday, as well as a partial identifier on their behind\r\n- Supported animals have nose rings\r\n\r\nEnhanced Pregnancy System\r\n\r\n- Animals of different species have varying amounts of potential offspring per each pregnancy (example: cows can have 0-3 calves)\r\n- Offspring is created inside the mother when she is impregnated instead of at birth\r\n- Ability to view the number of expected offspring and their due date\r\n- The reproduction duration is now unique for every animal, not every animal of the same species will take the same length of time to deliver their offspring\r\n\r\nGenetics System\r\n\r\n- New genetics system\r\n- Every animal has several genetic modifiers completely unique to them\r\n- Current genetics are health, fertility, metabolism, productivity and quality\r\n- Genetics impact several different areas of the animal, such as pregnancy and sale value\r\n\r\nWeight System\r\n\r\n- New weight system\r\n- Every animal has a weight unique to them, and each day they will gravitate to/from their ideal weight (based on their metabolism) due to how much they eat and drink\r\n- Weight affects sale value and health, and can unhealthy weight can result in death especially for young animals\r\n\r\nEnhanced UI\r\n\r\n- New family tree visible in the animal screen\r\n- Lots of additional information is shown in the animal screen and the info box about each animal\r\n\r\nEnhanced Production\r\n\r\n- Supported animals will have their production based on various factors\r\n- Cows will only produce milk when lactating, and their yield will rise and fall based on their previous pregnancy\r\n- Sheep will only produce wool in warm months\r\n\r\nRemoval and Aging\r\n\r\n- Animal aging is no longer limited to 5 years\r\n- Every animal type has an expected lifespan, and every animal has a chance to be removed due to old age the older they get, but can stay past their expected lifespan\r\n- Animals can be removed from health, random accidents and bad pregnancies\r\n\r\nEnhanced Animal Dealer\r\n\r\n- The animal dealer has been completely overhauled\r\n- Every supported country in the world now has several unique farms, which each produce up to 3 types of animals\r\n- Each farm will send some of their animals to the animal dealer every day\r\n- Every animal is unique and is no longer a template, and are generated based on the quality of the farm they come from\r\n- Every animal sent to the dealer will eventually disappear and will no longer be able to be bought, but will be replaced with new ones\r\n- Most animals are local to your country, but some will be imported from abroad\r\n- Animals at the dealer have a chance to be pregnant and will all have unique genetic qualities which will impact their price and usefulness\r\n\r\nChangelog:\r\n\r\n1.2.1.4\r\n\r\n- Compatibility for 1.0.0.6 of FontLibrary\r\n- Removed access to Highland Cattle if the DLC is not owned\r\n\r\n1.2.1.3\r\n\r\n- Compatibility for highland cattle\r\n- Fixed error: attempt to index nil with 'reproductionMinAgeMonth'\r\n\r\n1.2.1.2\r\n\r\n- Fixed crops not advancing\r\n\r\n1.2.1.1\r\n\r\n- Diseased animals are now in their own group at the top of the animal menu screen\r\n- Name and id are now both shown in the animal menu screen list\r\n- Fixed horses not being found properly after riding other horses\r\n- Fixed several MP sync issues\r\n\r\n1.2.1.0\r\n\r\n- Font Library integration\r\n\r\n1.2.0.0\r\n\r\n- Multiplayer support\r\n- Added detailed artificial insemination system with new object and handtool\r\n- Added animal diseases with in-herd transmission, affects on output, and removal chance for severe diseases\r\n- Added messages tab\r\n- Added herdsman tab for automatic animal management (buying, selling, castrating, naming, insemination)\r\n- Added ability to mark animals\r\n- Added ability to castrate male animals\r\n- Added straw and manure to chickens and sheep\r\n- Added setting for using custom animal models such as Vanilla Animal Package - view github for instructions\r\n- Added genetics information to buy/sell pages\r\n- Added more variation in genetics for dealer animals\r\n- Added settings options:\r\n--- Enable/disable diseases\r\n--- Change disease chances\r\n- Fixed time, animal age and crops not progressing after buying an animal from the main dealer\r\n- Fixed husbandries cant be found in the main dealer\r\n- Fixed \"Max Dealer Animals\" setting\r\n- Fixed settings being reverted\r\n- Fixed horses not loading properly when not in a pen\r\n- Fixed inconsistent filter behaviour\r\n- Many more fixes ]]>\r\n</en>\r\n<de>\r\n    <![CDATA[ Dies ist eine komplette Überarbeitung des Tiersystems.\r\n\r\n- Github:\r\nhttps://github.com/Arrow-kb/FS25_RealisticLivestock\r\n\r\nMerkmale:\r\n\r\nKünstliche Befruchtung & Dewars\r\n\r\n- Kaufe Dewars, die mit unterschiedlichen Mengen an Sperma von reinrassigen Männchen aus aller Welt gefüllt sind.\r\n- Neues Objekt und Handwerkzeug.\r\n- Befruchte Weibchen manuell oder über das Menü.\r\n- Die Nachkommen werden sehr gut sein, aber die Befruchtung birgt ein Risiko des Scheiterns.\r\n\r\nHirte\r\n\r\n- Kaufen, verkaufen, benennen, kastrieren und besamen Sie Tiere automatisch mit einer Vielzahl von Optionen und Filtern.\r\n- Bezahlen Sie dem Hirten einen monatlichen Lohn für seine Dienste.\r\n\r\nMännliche Tiere\r\n\r\n- Höherer Wert\r\n- Für die Reproduktion erforderlich\r\n- Keine männlichen Modelle (ich bin kein 3d-Künstler)\r\n\r\nVisuelle Tiere\r\n\r\n- Die Anzahl der visuellen Tiere pro Tierhaltung wurde von 25 im Vanilla-Spiel auf maximal 200 erhöht, was mit einem Schieberegler geändert werden kann\r\n\r\nIndividuelle Tiere\r\n\r\n- Alle Tiere sind nun zu 100% individuell und das archaische Clustersystem wurde abgeschafft, was zu mehr Abwechslung im Gameplay und bei den Tieren führt.\r\n- Jedes Tier hat seine eigene eindeutige Kennung, die auf dem britischen Rinderkennzeichnungssystem basiert.\r\n- Jedes Tier hat einen Geburtstag und ein Herkunftsland\r\n- Jedes Tier kann benannt werden\r\n- Unterstützte Tiere haben Ohrmarken an ihrem linken und rechten Ohr, auf denen ihr Herkunftsland, ihre Farm-ID, ihre Tier-ID, ihr Name und ihr Geburtstag angegeben sind, sowie eine teilweise Kennzeichnung auf ihrem Rücken\r\n- Geförderte Tiere haben Nasenringe\r\n\r\nVerbessertes Trächtigkeitssystem\r\n\r\n- Tiere verschiedener Arten haben eine unterschiedliche Anzahl potenzieller Nachkommen pro Trächtigkeit (Beispiel: Kühe können 0-3 Kälber haben)\r\n- Die Nachkommen werden im Muttertier erzeugt, wenn es geschwängert wird, und nicht bei der Geburt\r\n- Möglichkeit, die Anzahl der erwarteten Nachkommen und deren Fälligkeitsdatum anzuzeigen\r\n- Die Reproduktionsdauer ist jetzt für jedes Tier einzigartig, nicht jedes Tier der gleichen Art braucht gleich lange, um seine Nachkommen zur Welt zu bringen.\r\n\r\nGenetisches System\r\n\r\n- Neues Genetiksystem\r\n- Jedes Tier verfügt über mehrere genetische Modifikatoren, die für jedes Tier einzigartig sind\r\n- Die derzeitigen genetischen Faktoren sind Gesundheit, Fruchtbarkeit, Stoffwechsel, Produktivität und Qualität.\r\n- Die Genetik wirkt sich auf verschiedene Bereiche des Tieres aus, z. B. auf die Trächtigkeit und den Verkaufswert\r\n\r\nGewichtssystem\r\n\r\n- Neues Gewichtssystem\r\n- Jedes Tier hat ein individuelles Gewicht, und jeden Tag bewegt es sich auf sein Idealgewicht zu oder davon weg (basierend auf seinem Stoffwechsel), je nachdem, wie viel es isst und trinkt\r\n- Das Gewicht wirkt sich auf den Verkaufswert und die Gesundheit aus, und ungesundes Gewicht kann insbesondere bei Jungtieren zum Tod führen.\r\n\r\nVerbessertes UI\r\n\r\n- Neuer Stammbaum im Tierbildschirm sichtbar\r\n- Viele zusätzliche Informationen werden auf dem Tierbildschirm und in der Infobox zu jedem Tier angezeigt\r\n\r\nVerbesserte Produktion\r\n\r\n- Bei unterstützten Tieren wird die Produktion von verschiedenen Faktoren abhängig gemacht\r\n- Kühe produzieren nur noch Milch, wenn sie laktieren, und ihr Ertrag steigt und fällt je nach vorheriger Trächtigkeit\r\n- Schafe produzieren nur in warmen Monaten Wolle\r\n\r\nBeseitigung und Alterung\r\n\r\n- Die Alterung von Tieren ist nicht mehr auf 5 Jahre begrenzt.\r\n- Jede Tierart hat eine erwartete Lebensspanne, und jedes Tier hat eine Chance, aufgrund von Alter entfernt zu werden, je älter es wird, kann aber auch über seine erwartete Lebensspanne hinaus bleiben\r\n- Tiere können aufgrund von Gesundheit, zufälligen Unfällen und schlechten Schwangerschaften entfernt werden\r\n\r\nVerbesserter Tierhändler\r\n\r\n- Der Tierhändler wurde komplett überarbeitet\r\n- Jedes unterstützte Land in der Welt hat nun mehrere einzigartige Farmen, die jeweils bis zu 3 Tierarten produzieren\r\n- Jede Farm schickt jeden Tag einige ihrer Tiere zum Tierhändler\r\n- Jedes Tier ist einzigartig und keine Vorlage mehr, sondern wird auf der Grundlage der Qualität der Farm, von der es stammt, erzeugt.\r\n- Jedes Tier, das zum Händler geschickt wird, verschwindet irgendwann und kann nicht mehr gekauft werden, sondern wird durch neue Tiere ersetzt.\r\n- Die meisten Tiere stammen aus deinem Land, aber einige werden aus dem Ausland importiert.\r\n- Die Tiere beim Händler haben die Chance, trächtig zu werden, und weisen alle einzigartige genetische Eigenschaften auf, die sich auf ihren Preis und ihren Nutzen auswirken werden.\r\n\r\nÄnderungsprotokoll:\r\n\r\n1.2.0.0\r\n\r\n- Multiplayer-Unterstützung\r\n- Detailliertes System zur künstlichen Befruchtung mit neuem Objekt und Handwerkzeug hinzugefügt\r\n- Tierkrankheiten mit Übertragung innerhalb der Herde, Auswirkungen auf die Produktion und Entfernungschance für schwere Krankheiten hinzugefügt\r\n- Registerkarte „Meldungen” hinzugefügt\r\n- Registerkarte „Hirte” für automatische Tierverwaltung (Kauf, Verkauf, Kastration, Benennung, Befruchtung) hinzugefügt\r\n- Möglichkeit zum Markieren von Tieren hinzugefügt\r\n- Möglichkeit zum Kastrieren männlicher Tiere hinzugefügt\r\n- Stroh und Mist für Hühner und Schafe hinzugefügt\r\n- Einstellung für die Verwendung benutzerdefinierter Tiermodelle wie Vanilla Animal Package hinzugefügt – Anweisungen siehe GitHub\r\n- Genetische Informationen zu Kauf-/Verkaufsseiten hinzugefügt\r\n- Mehr Variation in der Genetik für Tiere von Händlern hinzugefügt\r\n- Einstellungsoptionen hinzugefügt:\r\n--- Krankheiten aktivieren/deaktivieren\r\n--- Krankheitswahrscheinlichkeit ändern\r\n- Zeit, Tieralter und Erntefortschritt werden nach dem Kauf eines Tieres beim Haupthändler nun korrekt angezeigt\r\n- Tiere können nun beim Haupthändler gefunden werden\r\n- Einstellung „Maximale Anzahl Tiere beim Händler” korrigiert\r\n- Zurücksetzen der Einstellungen korrigiert\r\n- Pferde werden nun korrekt geladen, wenn sie sich nicht in einem Pferch befinden\r\n- Inkonsistentes Filterverhalten korrigiert\r\n- Viele weitere Korrekturen]]>\r\n</de>\r\n<fr>\r\n    <![CDATA[ Il s'agit d'une révision complète du système animalier.\r\n\r\n- Github:\r\nhttps://github.com/Arrow-kb/FS25_RealisticLivestock\r\n\r\nCaractéristiques :\r\n\r\nInsémination artificielle et Dewars\r\n\r\n- Achetez des Dewars remplis de différentes quantités de sperme provenant de mâles de race pure du monde entier\r\n- Nouvel objet et nouvel outil manuel\r\n- Inséminer manuellement les femelles ou le faire dans le menu\r\n- La progéniture sera de très bonne qualité, mais l'insémination comporte un risque d'échec\r\n\r\nBerger\r\n\r\n- Achetez, vendez, nommez, castrez et inséminez automatiquement les animaux grâce à un large éventail d'options et de filtres\r\n- Versez au berger un salaire mensuel en fonction de ses services\r\n\r\nAnimaux mâles\r\n\r\n- Valeur supérieure\r\n- Nécessaire à la reproduction\r\n- Pas de modèles masculins (je ne suis pas un artiste 3D)\r\n\r\nAnimaux visuels\r\n\r\n- La limite d'animaux visuels par élevage a été augmentée de 25 dans le jeu vanille, jusqu'à 200 au maximum, ce qui peut être modifié avec un curseur.\r\n\r\nAnimaux individuels\r\n\r\n- Tous les animaux sont désormais 100% individuels et le système archaïque de grappes a été abandonné, ce qui permet une plus grande variété dans le gameplay et les animaux.\r\n- Chaque animal possède son propre identifiant, basé sur le système d'identification du bétail britannique.\r\n- Chaque animal a une date de naissance et un pays d'origine.\r\n- Chaque animal peut être nommé.\r\n- Les animaux pris en charge ont des étiquettes à l'oreille gauche et à l'oreille droite, qui indiquent leur pays d'origine, l'identifiant de la ferme, l'identifiant de l'animal, leur nom et leur date d'anniversaire, ainsi qu'un identifiant partiel sur leur derrière.\r\n- Les animaux pris en charge ont des anneaux de nez.\r\n\r\nSystème de gestation amélioré\r\n\r\n- Les animaux de différentes espèces ont des quantités variables de descendants potentiels pour chaque grossesse (exemple : les vaches peuvent avoir de 0 à 3 veaux).\r\n- La progéniture est créée à l'intérieur de la mère lorsqu'elle est fécondée et non à la naissance.\r\n- Possibilité d'afficher le nombre de descendants attendus et leur date d'échéance\r\n- La durée de la reproduction est désormais unique pour chaque animal, tous les animaux de la même espèce ne prendront pas le même temps pour mettre au monde leur progéniture.\r\n\r\nSystème génétique\r\n\r\n- Nouveau système génétique\r\n- Chaque animal possède plusieurs modificateurs génétiques qui lui sont propres.\r\n- La génétique actuelle concerne la santé, la fertilité, le métabolisme, la productivité et la qualité.\r\n- La génétique a un impact sur différents aspects de l'animal, tels que la gestation et la valeur de vente.\r\n\r\nSystème de poids\r\n\r\n- Nouveau système de poids\r\n- Chaque animal a un poids qui lui est propre et, chaque jour, il se rapproche ou s'éloigne de son poids idéal (en fonction de son métabolisme) en raison de la quantité de nourriture et de boisson qu'il consomme.\r\n- Le poids affecte la valeur de vente et la santé, et un poids insuffisant peut entraîner la mort, en particulier pour les jeunes animaux.\r\n\r\nAmélioration de l'interface utilisateur\r\n\r\n- Nouvel arbre généalogique visible sur l'écran de l'animal\r\n- De nombreuses informations supplémentaires sont affichées sur l'écran des animaux et dans la boîte d'information sur chaque animal.\r\n\r\nProduction améliorée\r\n\r\n- La production des animaux pris en charge est basée sur différents facteurs\r\n- Les vaches ne produiront du lait que lorsqu'elles sont en lactation, et leur production augmentera et diminuera en fonction de leur grossesse précédente.\r\n- Les moutons ne produiront de la laine que pendant les mois chauds.\r\n\r\nRetrait et vieillissement\r\n\r\n- Le vieillissement des animaux n'est plus limité à 5 ans\r\n- Chaque type d'animal a une durée de vie prévue, et chaque animal a une chance d'être retiré pour cause de vieillesse au fur et à mesure qu'il vieillit, mais il peut rester au-delà de sa durée de vie prévue.\r\n- Les animaux peuvent être retirés pour des raisons de santé, d'accidents aléatoires et de mauvaises grossesses.\r\n\r\nMarchand d'animaux amélioré\r\n\r\n- Le marchand d'animaux a été entièrement revu.\r\n- Chaque pays soutenu dans le monde a maintenant plusieurs fermes uniques, qui produisent chacune jusqu'à 3 types d'animaux.\r\n- Chaque ferme enverra chaque jour certains de ses animaux au marchand d'animaux.\r\n- Chaque animal est unique et n'est plus un modèle. Ils sont générés en fonction de la qualité de la ferme d'où ils proviennent.\r\n- Chaque animal envoyé au marchand d'animaux finira par disparaître et ne pourra plus être acheté, mais sera remplacé par de nouveaux animaux.\r\n- La plupart des animaux sont originaires de votre pays, mais certains sont importés de l'étranger.\r\n- Les animaux qui se trouvent chez le négociant ont une chance d'être gestants et ont tous des qualités génétiques uniques qui ont une incidence sur leur prix et leur utilité.\r\n\r\nJournal des modifications:\r\n\r\n1.2.0.0\r\n\r\n- Prise en charge multijoueur\r\n- Ajout d'un système d'insémination artificielle détaillé avec un nouvel objet et un nouvel outil manuel\r\n- Ajout de maladies animales transmissibles au sein du troupeau, ayant un impact sur la production et pouvant entraîner l'élimination des animaux atteints de maladies graves\r\n- Ajout d'un onglet « Messages »\r\n- Ajout d'un onglet « Berger » pour la gestion automatique des animaux (achat, vente, castration, attribution de noms, insémination)\r\n- Ajout de la possibilité de marquer les animaux\r\n- Ajout de la possibilité de castrer les animaux mâles\r\n- Ajout de la paille et du fumier pour les poulets et les moutons\r\n- Ajout d'un paramètre pour utiliser des modèles d'animaux personnalisés tels que Vanilla Animal Package - voir github pour les instructions\r\n- Ajout d'informations génétiques aux pages d'achat/vente\r\n- Ajout de plus de variations génétiques pour les animaux des marchands\r\n- Ajout d'options de paramétrage :\r\n--- Activer/désactiver les maladies\r\n--- Modifier les chances de maladie\r\n- Correction du temps, de l'âge des animaux et des cultures qui ne progressaient pas après l'achat d'un animal chez le revendeur principal\r\n- Correction de l'impossibilité de trouver des élevages chez le revendeur principal\r\n- Correction du paramètre « Max Dealer Animals »\r\n- Correction de la réinitialisation des paramètres\r\n- Correction du chargement incorrect des chevaux lorsqu'ils ne se trouvaient pas dans un enclos\r\n- Correction du comportement incohérent du filtre\r\n- Nombreuses autres corrections\r\n\r\n]]>\r\n</fr>\r\n    </description>\r\n    <iconFilename>icon_RealisticLivestock.dds</iconFilename>\r\n    <multiplayer supported=\"true\"/>\r\n\t<dependencies>\r\n\t\t<dependency version=\"1.0.0.6\">FS25_FontLibrary</dependency>\r\n\t</dependencies>\r\n    <extraSourceFiles>\r\n\t\t<sourceFile filename=\"src/gui/MPLoadingScreen.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/cluster/RealisticLivestock_AnimalCluster.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/cluster/RealisticLivestock_AnimalClusterHusbandry.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/cluster/RealisticLivestock_AnimalClusterSystem.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/cluster/VisualAnimal.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/placeables/PlaceableHusbandry.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/placeables/PlaceableHusbandryLiquidManure.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/placeables/PlaceableHusbandryStraw.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/placeables/PlaceableHusbandryWater.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/placeables/RealisticLivestock_PlaceableHusbandryAnimals.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/placeables/RealisticLivestock_PlaceableHusbandryMilk.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/placeables/RealisticLivestock_PlaceableHusbandryFood.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/placeables/RealisticLivestock_PlaceableHusbandryPallets.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/AnimalSystemStateEvent.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/RealisticLivestock_HusbandrySystem.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/RealisticLivestock_AnimalNameSystem.lua\"/>\r\n        <sourceFile filename=\"src/animals/husbandry/RealisticLivestock_AnimalSystem.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/controllers/AnimalScreenBase.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/controllers/AnimalScreenDealer.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/controllers/AnimalScreenDealerFarm.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/controllers/AnimalScreenDealerTrailer.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/controllers/AnimalScreenTrailer.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/controllers/AnimalScreenTrailerFarm.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/events/AIAnimalBuyEvent.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/events/AIAnimalInseminationEvent.lua\"/>\r\n\t\t<sourceFile filename=\"src/animals/shop/events/AIAnimalSellEvent.lua\"/>\r\n\t\t<sourceFile filename=\"src/animals/shop/events/AIBulkMessageEvent.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/events/AnimalBuyEvent.lua\"/>\r\n\t\t<sourceFile filename=\"src/animals/shop/events/AnimalInseminationEvent.lua\"/>\r\n\t\t<sourceFile filename=\"src/animals/shop/events/AnimalInseminationResultEvent.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/events/AnimalMoveEvent.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/events/AnimalSellEvent.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/events/SemenBuyEvent.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/AnimalItemNew.lua\"/>\r\n        <sourceFile filename=\"src/animals/shop/RealisticLivestock_AnimalItemStock.lua\"/>\r\n        <sourceFile filename=\"src/events/DewarManagerStateEvent.lua\"/>\r\n        <sourceFile filename=\"src/events/HusbandryMessageStateEvent.lua\"/>\r\n        <sourceFile filename=\"src/events/ReturnStrawEvent.lua\"/>\r\n        <sourceFile filename=\"src/farms/FarmManager.lua\"/>\r\n        <sourceFile filename=\"src/farms/RealisticLivestock_FarmStats.lua\"/>\r\n        <sourceFile filename=\"src/fillTypes/RealisticLivestock_FillTypeManager.lua\"/>\r\n\t\t<sourceFile filename=\"src/gui/elements/DoubleOptionSliderElement.lua\"/>\r\n        <sourceFile filename=\"src/gui/elements/RenderElement.lua\"/>\r\n        <sourceFile filename=\"src/gui/elements/TripleOptionElement.lua\"/>\r\n        <sourceFile filename=\"src/gui/RealisticLivestock_AnimalScreen.lua\"/>\r\n        <sourceFile filename=\"src/gui/VisualAnimalsDialog.lua\"/>\r\n        <sourceFile filename=\"src/gui/NameInputDialog.lua\"/>\r\n        <sourceFile filename=\"src/gui/RealisticLivestockFrame.lua\"/>\r\n        <sourceFile filename=\"src/gui/AnimalAIDialog.lua\"/>\r\n        <sourceFile filename=\"src/gui/AnimalFilterDialog.lua\"/>\r\n        <sourceFile filename=\"src/gui/AnimalInfoDialog.lua\"/>\r\n        <sourceFile filename=\"src/gui/DiseaseDialog.lua\"/>\r\n        <sourceFile filename=\"src/gui/EarTagColourPickerDialog.lua\"/>\r\n\t\t<sourceFile filename=\"src/gui/FileExplorerDialog.lua\"/>\r\n\t\t<sourceFile filename=\"src/gui/InGameMenuSettingsFrame.lua\"/>\r\n\t\t<sourceFile filename=\"src/gui/ProfileDialog.lua\"/>\r\n        <sourceFile filename=\"src/gui/RL_InfoDisplayKeyValueBox.lua\"/>\r\n        <sourceFile filename=\"src/gui/RealisticLivestock_InGameMenuAnimalsFrame.lua\"/>\r\n        <sourceFile filename=\"src/handTools/specializations/HandToolHorseBrush.lua\"/>\r\n        <sourceFile filename=\"src/handTools/HandTool.lua\"/>\r\n        <sourceFile filename=\"src/handTools/HandToolSystem.lua\"/>\r\n        <sourceFile filename=\"src/handTools/RLHandTools.lua\"/>\r\n        <sourceFile filename=\"src/objects/Dewar.lua\"/>\r\n        <sourceFile filename=\"src/placeables/RealisticLivestock_PlaceableSystem.lua\"/>\r\n        <sourceFile filename=\"src/player/RealisticLivestock_PlayerHUDUpdater.lua\"/>\r\n        <sourceFile filename=\"src/player/RealisticLivestock_PlayerInputComponent.lua\"/>\r\n        <sourceFile filename=\"src/vehicles/specializations/RealisticLivestock_LivestockTrailer.lua\"/>\r\n        <sourceFile filename=\"src/vehicles/specializations/Rideable.lua\"/>\r\n        <sourceFile filename=\"src/vehicles/RealisticLivestock_VehicleSystem.lua\"/>\r\n        <sourceFile filename=\"src/AIAnimalManager.lua\"/>\r\n        <sourceFile filename=\"src/AIStrawUpdater.lua\"/>\r\n        <sourceFile filename=\"src/AnimalBirthEvent.lua\"/>\r\n        <sourceFile filename=\"src/AnimalDeathEvent.lua\"/>\r\n        <sourceFile filename=\"src/AnimalMonitorEvent.lua\"/>\r\n        <sourceFile filename=\"src/AnimalNameChangeEvent.lua\"/>\r\n        <sourceFile filename=\"src/AnimalPregnancyEvent.lua\"/>\r\n        <sourceFile filename=\"src/AnimalUpdateEvent.lua\"/>\r\n        <sourceFile filename=\"src/DewarManager.lua\"/>\r\n        <sourceFile filename=\"src/Disease.lua\"/>\r\n        <sourceFile filename=\"src/DiseaseManager.lua\"/>\r\n        <sourceFile filename=\"src/FSCareerMissionInfo.lua\"/>\r\n        <sourceFile filename=\"src/I18N.lua\"/>\r\n        <sourceFile filename=\"src/RealisticLivestock.lua\"/>\r\n        <sourceFile filename=\"src/RealisticLivestock_Animal.lua\"/>\r\n\t\t<sourceFile filename=\"src/RealisticLivestock_FSBaseMission.lua\"/>\r\n\t\t<sourceFile filename=\"src/RLConsoleCommandManager.lua\"/>\r\n        <sourceFile filename=\"src/RLMessage.lua\"/>\r\n        <sourceFile filename=\"src/RLSettings.lua\"/>\r\n        <sourceFile filename=\"src/RL_BroadcastSettingsEvent.lua\"/>\r\n    </extraSourceFiles>\r\n    <l10n filenamePrefix=\"translations/translation\"/>\r\n    <inputBinding>\r\n        <actionBinding action=\"VisualAnimalsDialog\">\r\n            <binding device=\"KB_MOUSE_DEFAULT\" input=\"KEY_lshift KEY_t\"/>\r\n        </actionBinding>\r\n    </inputBinding>\r\n    <actions>\r\n        <action name=\"VisualAnimalsDialog\"/>\r\n    </actions>\r\n\t<helpLines>\r\n\r\n\t\t<category title=\"$l10n_rl_settings\">\r\n\r\n\t\t\t<page title=\"$l10n_rl_help_monitors_title\" iconSliceId=\"rlHelpIcons.monitor\">\r\n\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_monitors_1\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_monitors_2\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_monitors_3\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t\r\n\t\t\t</page>\r\n\r\n\t\t\t<page title=\"$l10n_rl_help_pregnancy_title\" iconSliceId=\"rlHelpIcons.pregnancy\">\r\n\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_pregnancy_1\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_pregnancy_2\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_pregnancy_3\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_pregnancy_4\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_pregnancy_5\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t\r\n\t\t\t</page>\r\n\r\n\t\t\t<page title=\"$l10n_rl_help_production_title\" iconSliceId=\"rlHelpIcons.production\">\r\n\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_production_1\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_production_2\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_production_3\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t\r\n\t\t\t</page>\r\n\r\n\t\t\t<page title=\"$l10n_rl_help_weight_title\" iconSliceId=\"gui.storeAttribute_maxLoadCapacity\">\r\n\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_weight_1\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_weight_2\"/>\r\n\t\t\t\t</paragraph>\r\n\r\n\t\t\t</page>\r\n\r\n\t\t\t<page title=\"$l10n_rl_help_genetics_title\" iconSliceId=\"rlHelpIcons.genetics\">\r\n\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_genetics_1\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_genetics_2\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_genetics_3\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_genetics_4\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_genetics_5\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t<paragraph>\r\n\t\t\t\t\t<text text=\"$l10n_rl_help_genetics_6\"/>\r\n\t\t\t\t</paragraph>\r\n\t\t\t\t\r\n\t\t\t</page>\r\n\t\t\t\r\n\t\t</category>\r\n\t\t\r\n\t</helpLines>\r\n</modDesc>"
  },
  {
    "path": "objects/dewar/dewar.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"dewar.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.8\"/>\n  </Asset>\n\n  <Files>\n    <File fileId=\"2\" filename=\"dewar.dds\"/>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"default\" materialId=\"5\" diffuseColor=\"0.501961 0.501961 0.501961 1\">\n    </Material>\n    <Material name=\"Material.001\" materialId=\"6\" specularColor=\"1 1 0\">\n      <Texture fileId=\"2\"/>\n    </Material>\n    <Material name=\"Material.003\" materialId=\"37\" diffuseColor=\"0.8 0.772549 0.0823529 1\" specularColor=\"0.501961 1 0\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"dewar.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <Shape name=\"Cylinder.001\" shapeId=\"1\" dynamic=\"true\" collisionFilterGroup=\"0xffffffff\" collisionFilterMask=\"0xffffffff\" nodeId=\"17\" castsShadows=\"false\" receiveShadows=\"false\" nonRenderable=\"true\" materialIds=\"5\">\n      <Shape name=\"Cylinder\" shapeId=\"2\" nodeId=\"18\" castsShadows=\"true\" receiveShadows=\"true\" doubleSided=\"true\" materialIds=\"6\">\n        <Shape name=\"stickyNote_animal\" translation=\"-0.143766 0.327067 0.0232108\" shapeId=\"3\" nodeId=\"19\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"37\">\n          <Shape name=\"tape.002\" translation=\"0.143766 -0.327067 -0.0232108\" shapeId=\"4\" nodeId=\"20\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n          <Shape name=\"tape.003\" translation=\"0.143766 -0.327067 -0.0232108\" shapeId=\"5\" nodeId=\"21\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        </Shape>\n        <Shape name=\"stickyNote_straws\" translation=\"0.000169099 0.270904 0.146153\" shapeId=\"6\" nodeId=\"22\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"37\">\n          <Shape name=\"tape\" translation=\"-0.000169099 -0.270904 -0.146153\" shapeId=\"7\" nodeId=\"23\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n          <Shape name=\"tape.001\" translation=\"-0.000169099 -0.270904 -0.146153\" shapeId=\"8\" nodeId=\"24\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n        </Shape>\n      </Shape>\n    </Shape>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "objects/straw/straw.i3d",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n<i3D name=\"straw.i3d\" version=\"1.6\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://i3d.giants.ch/schema/i3d-1.6.xsd\">\n  <Asset>\n    <Export program=\"GIANTS Editor 64bit\" version=\"10.0.7\"/>\n  </Asset>\n\n  <Files>\n  </Files>\n\n\n  <Materials>\n    <Material name=\"Material.001\" materialId=\"5\" diffuseColor=\"0.8 0.752941 0 1\" specularColor=\"0.501961 1 0\">\n    </Material>\n    <Material name=\"Material.002\" materialId=\"6\" diffuseColor=\"0.172549 0.172549 0.172549 1\" specularColor=\"0.501961 1 0.298039\">\n    </Material>\n    <Material name=\"Material.003\" materialId=\"7\" diffuseColor=\"0.470588 0.470588 0.470588 1\" specularColor=\"1 1 0\">\n    </Material>\n  </Materials>\n\n\n  <Shapes externalShapesFile=\"straw.i3d.shapes\">\n  </Shapes>\n\n  <Scene>\n    <TransformGroup name=\"aiStraw\" scale=\"1 1 0.6\" clipDistance=\"300\" nodeId=\"15\">\n      <TransformGroup name=\"graphics\" nodeId=\"16\">\n        <Shape name=\"straw\" shapeId=\"1\" nodeId=\"17\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"7\">\n          <Shape name=\"Cylinder\" shapeId=\"2\" nodeId=\"18\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"7\"/>\n          <Shape name=\"ring\" shapeId=\"3\" nodeId=\"19\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n          <Shape name=\"ring.001\" shapeId=\"4\" nodeId=\"20\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"5\"/>\n          <Shape name=\"ring.002\" shapeId=\"5\" nodeId=\"21\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n          <Shape name=\"ring.003\" shapeId=\"6\" nodeId=\"22\" castsShadows=\"true\" receiveShadows=\"true\" materialIds=\"6\"/>\n        </Shape>\n      </TransformGroup>\n      <TransformGroup name=\"handNode\" translation=\"0.011735 0.0179554 -0.396116\" rotation=\"158.306 87.053 -41.644\" nodeId=\"23\"/>\n      <TransformGroup name=\"firstPersonNode\" translation=\"0.214 0.386744 -0.325212\" rotation=\"64.8326 0 0\" nodeId=\"24\"/>\n    </TransformGroup>\n  </Scene>\n\n</i3D>\n"
  },
  {
    "path": "objects/straw/straw.xml",
    "content": "<handTool xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" type=\"aiStraw\">\r\n\t<base canBeDropped=\"false\">\r\n\t\t<filename>objects/straw/straw.i3d</filename>\r\n\t\t<typeDesc>AI Straw</typeDesc>\r\n\t\t<graphics node=\"graphics\"/>\r\n\t\t<handNode node=\"handNode\"/>\r\n\t\t<firstPersonNode node=\"firstPersonNode\"/>\r\n\t</base>\r\n\t<storable>\r\n\t\t<holderType type=\"AISTRAW\" node=\"0>\"/>\r\n\t</storable>\r\n\t<i3dMappings>\r\n\t\t<i3dMapping id=\"graphics\" node=\"0>0\"/>\r\n\t\t<i3dMapping id=\"aiStraw\" node=\"0>0|0\"/>\r\n\t\t<i3dMapping id=\"handNode\" node=\"0>1\"/>\r\n\t\t<i3dMapping id=\"firstPersonNode\" node=\"0>2\"/>\r\n\t</i3dMappings>\r\n</handTool>"
  },
  {
    "path": "src/AIAnimalManager.lua",
    "content": "AIAnimalManager = {}\r\n\r\nlocal AIAnimalManager_mt = Class(AIAnimalManager)\r\n\r\n\r\nfunction AIAnimalManager.new(husbandry, isServer)\r\n\r\n\tlocal self = setmetatable({}, AIAnimalManager_mt)\r\n\r\n\tself.husbandry = husbandry\r\n\tself.isServer = isServer\r\n\tself.wage = 0\r\n\tself.isProfile = false\r\n\r\n\tself.ANIMAL_TYPE_TO_WAGE = {\r\n\t\t[AnimalType.COW] = 20,\r\n\t\t[AnimalType.SHEEP] = 12.5,\r\n\t\t[AnimalType.PIG] = 10,\r\n\t\t[AnimalType.HORSE] = 25,\r\n\t\t[AnimalType.CHICKEN] = 2\r\n\t}\r\n\r\n\tself.settings = {\r\n\t\t[\"buy\"] = {\r\n\t\t\t[\"enabled\"] = false,\r\n\t\t\t[\"budget\"] = {\r\n\t\t\t\t[\"type\"] = \"fixed\",\r\n\t\t\t\t[\"fixed\"] = 5000,\r\n\t\t\t\t[\"percentage\"] = 1\r\n\t\t\t},\r\n\t\t\t[\"maxAnimals\"] = 5,\r\n\t\t\t[\"breed\"] = \"any\",\r\n\t\t\t[\"diseases\"] = false,\r\n\t\t\t[\"gender\"] = \"any\",\r\n\t\t\t[\"age\"] = {\r\n\t\t\t\t[\"min\"] = 0,\r\n\t\t\t\t[\"max\"] = 999\r\n\t\t\t},\r\n\t\t\t[\"quality\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"health\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"fertility\"] = {\r\n\t\t\t\t[\"min\"] = 0,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"productivity\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"metabolism\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t}\r\n\t\t},\r\n\t\t[\"sell\"] = {\r\n\t\t\t[\"enabled\"] = false,\r\n\t\t\t[\"maxAnimals\"] = 5,\r\n\t\t\t[\"mark\"] = false,\r\n\t\t\t[\"diseases\"] = false,\r\n\t\t\t[\"gender\"] = \"any\",\r\n\t\t\t[\"age\"] = {\r\n\t\t\t\t[\"min\"] = 0,\r\n\t\t\t\t[\"max\"] = 999\r\n\t\t\t},\r\n\t\t\t[\"quality\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"health\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"fertility\"] = {\r\n\t\t\t\t[\"min\"] = 0,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"productivity\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"metabolism\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t}\r\n\t\t},\r\n\t\t[\"castrate\"] = {\r\n\t\t\t[\"enabled\"] = false,\r\n\t\t\t[\"mark\"] = false,\r\n\t\t\t[\"diseases\"] = false,\r\n\t\t\t[\"age\"] = {\r\n\t\t\t\t[\"min\"] = 0,\r\n\t\t\t\t[\"max\"] = 0\r\n\t\t\t},\r\n\t\t\t[\"quality\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"health\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"fertility\"] = {\r\n\t\t\t\t[\"min\"] = 0,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"productivity\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"metabolism\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t}\r\n\t\t},\r\n\t\t[\"naming\"] = {\r\n\t\t\t[\"enabled\"] = false,\r\n\t\t\t[\"convention\"] = \"random\",\r\n\t\t\t[\"previous\"] = nil\r\n\t\t},\r\n\t\t[\"ai\"] = {\r\n\t\t\t[\"enabled\"] = false,\r\n\t\t\t[\"maxAnimals\"] = 5,\r\n\t\t\t[\"mark\"] = false,\r\n\t\t\t[\"diseases\"] = false,\r\n\t\t\t[\"semen\"] = \"any\",\r\n\t\t\t[\"age\"] = {\r\n\t\t\t\t[\"min\"] = 0,\r\n\t\t\t\t[\"max\"] = 999\r\n\t\t\t},\r\n\t\t\t[\"quality\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"health\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"fertility\"] = {\r\n\t\t\t\t[\"min\"] = 0,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"productivity\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t},\r\n\t\t\t[\"metabolism\"] = {\r\n\t\t\t\t[\"min\"] = 25,\r\n\t\t\t\t[\"max\"] = 175\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalManager:saveToXMLFile(xmlFile, baseKey)\r\n\r\n\tlocal key = self.isProfile and baseKey or (baseKey .. \".AIAnimalManager\")\r\n\tlocal settings = self.settings\r\n\r\n\r\n\tif not self.isProfile then xmlFile:setFloat(key .. \"#wage\", self.wage) end\r\n\r\n\r\n\t-- BUY SETTINGS\r\n\r\n\r\n\txmlFile:setBool(key .. \".buy#enabled\", settings.buy.enabled)\r\n\txmlFile:setString(key .. \".buy.budget#type\", settings.buy.budget.type)\r\n\txmlFile:setInt(key .. \".buy.budget#fixed\", settings.buy.budget.fixed)\r\n\txmlFile:setFloat(key .. \".buy.budget#percentage\", settings.buy.budget.percentage)\r\n\txmlFile:setInt(key .. \".buy#maxAnimals\", settings.buy.maxAnimals)\r\n\txmlFile:setString(key .. \".buy#breed\", settings.buy.breed)\r\n\txmlFile:setBool(key .. \".buy#diseases\", settings.buy.diseases)\r\n\txmlFile:setString(key .. \".buy#gender\", settings.buy.gender)\r\n\txmlFile:setInt(key .. \".buy.age#min\", settings.buy.age.min)\r\n\txmlFile:setInt(key .. \".buy.age#max\", settings.buy.age.max)\r\n\txmlFile:setInt(key .. \".buy.quality#min\", settings.buy.quality.min)\r\n\txmlFile:setInt(key .. \".buy.quality#max\", settings.buy.quality.max)\r\n\txmlFile:setInt(key .. \".buy.health#min\", settings.buy.health.min)\r\n\txmlFile:setInt(key .. \".buy.health#max\", settings.buy.health.max)\r\n\txmlFile:setInt(key .. \".buy.fertility#min\", settings.buy.fertility.min)\r\n\txmlFile:setInt(key .. \".buy.fertility#max\", settings.buy.fertility.max)\r\n\txmlFile:setInt(key .. \".buy.productivity#min\", settings.buy.productivity.min)\r\n\txmlFile:setInt(key .. \".buy.productivity#max\", settings.buy.productivity.max)\r\n\txmlFile:setInt(key .. \".buy.metabolism#min\", settings.buy.metabolism.min)\r\n\txmlFile:setInt(key .. \".buy.metabolism#max\", settings.buy.metabolism.max)\r\n\r\n\r\n\t-- SELL SETTINGS\r\n\r\n\r\n\txmlFile:setBool(key .. \".sell#enabled\", settings.sell.enabled)\r\n\txmlFile:setInt(key .. \".sell#maxAnimals\", settings.sell.maxAnimals)\r\n\txmlFile:setBool(key .. \".sell#mark\", settings.sell.mark)\r\n\txmlFile:setBool(key .. \".sell#diseases\", settings.sell.diseases)\r\n\txmlFile:setString(key .. \".sell#gender\", settings.sell.gender)\r\n\txmlFile:setInt(key .. \".sell.age#min\", settings.sell.age.min)\r\n\txmlFile:setInt(key .. \".sell.age#max\", settings.sell.age.max)\r\n\txmlFile:setInt(key .. \".sell.quality#min\", settings.sell.quality.min)\r\n\txmlFile:setInt(key .. \".sell.quality#max\", settings.sell.quality.max)\r\n\txmlFile:setInt(key .. \".sell.health#min\", settings.sell.health.min)\r\n\txmlFile:setInt(key .. \".sell.health#max\", settings.sell.health.max)\r\n\txmlFile:setInt(key .. \".sell.fertility#min\", settings.sell.fertility.min)\r\n\txmlFile:setInt(key .. \".sell.fertility#max\", settings.sell.fertility.max)\r\n\txmlFile:setInt(key .. \".sell.productivity#min\", settings.sell.productivity.min)\r\n\txmlFile:setInt(key .. \".sell.productivity#max\", settings.sell.productivity.max)\r\n\txmlFile:setInt(key .. \".sell.metabolism#min\", settings.sell.metabolism.min)\r\n\txmlFile:setInt(key .. \".sell.metabolism#max\", settings.sell.metabolism.max)\r\n\r\n\r\n\t-- CASTRATE SETTINGS\r\n\r\n\r\n\txmlFile:setBool(key .. \".castrate#enabled\", settings.castrate.enabled)\r\n\txmlFile:setBool(key .. \".castrate#mark\", settings.castrate.mark)\r\n\txmlFile:setBool(key .. \".castrate#diseases\", settings.castrate.diseases)\r\n\txmlFile:setInt(key .. \".castrate.age#min\", settings.castrate.age.min)\r\n\txmlFile:setInt(key .. \".castrate.age#max\", settings.castrate.age.max)\r\n\txmlFile:setInt(key .. \".castrate.quality#min\", settings.castrate.quality.min)\r\n\txmlFile:setInt(key .. \".castrate.quality#max\", settings.castrate.quality.max)\r\n\txmlFile:setInt(key .. \".castrate.health#min\", settings.castrate.health.min)\r\n\txmlFile:setInt(key .. \".castrate.health#max\", settings.castrate.health.max)\r\n\txmlFile:setInt(key .. \".castrate.fertility#min\", settings.castrate.fertility.min)\r\n\txmlFile:setInt(key .. \".castrate.fertility#max\", settings.castrate.fertility.max)\r\n\txmlFile:setInt(key .. \".castrate.productivity#min\", settings.castrate.productivity.min)\r\n\txmlFile:setInt(key .. \".castrate.productivity#max\", settings.castrate.productivity.max)\r\n\txmlFile:setInt(key .. \".castrate.metabolism#min\", settings.castrate.metabolism.min)\r\n\txmlFile:setInt(key .. \".castrate.metabolism#max\", settings.castrate.metabolism.max)\r\n\r\n\r\n\t-- NAMING SETTINGS\r\n\r\n\r\n\txmlFile:setBool(key .. \".naming#enabled\", settings.naming.enabled)\r\n\txmlFile:setString(key .. \".naming#convention\", settings.naming.convention)\r\n\tif not self.isProfile and settings.naming.previous ~= nil and settings.naming.convention == \"alphabetical\" then xmlFile:setString(key .. \".naming#previous\", settings.naming.previous) end\r\n\r\n\r\n\t-- AI SETTINGS\r\n\r\n\r\n\txmlFile:setBool(key .. \".ai#enabled\", settings.ai.enabled)\r\n\txmlFile:setInt(key .. \".ai#maxAnimals\", settings.ai.maxAnimals)\r\n\txmlFile:setBool(key .. \".ai#mark\", settings.ai.mark)\r\n\txmlFile:setBool(key .. \".ai#diseases\", settings.ai.diseases)\r\n\txmlFile:setString(key .. \".ai#semen\", settings.ai.semen)\r\n\txmlFile:setInt(key .. \".ai.age#min\", settings.ai.age.min)\r\n\txmlFile:setInt(key .. \".ai.age#max\", settings.ai.age.max)\r\n\txmlFile:setInt(key .. \".ai.quality#min\", settings.ai.quality.min)\r\n\txmlFile:setInt(key .. \".ai.quality#max\", settings.ai.quality.max)\r\n\txmlFile:setInt(key .. \".ai.health#min\", settings.ai.health.min)\r\n\txmlFile:setInt(key .. \".ai.health#max\", settings.ai.health.max)\r\n\txmlFile:setInt(key .. \".ai.fertility#min\", settings.ai.fertility.min)\r\n\txmlFile:setInt(key .. \".ai.fertility#max\", settings.ai.fertility.max)\r\n\txmlFile:setInt(key .. \".ai.productivity#min\", settings.ai.productivity.min)\r\n\txmlFile:setInt(key .. \".ai.productivity#max\", settings.ai.productivity.max)\r\n\txmlFile:setInt(key .. \".ai.metabolism#min\", settings.ai.metabolism.min)\r\n\txmlFile:setInt(key .. \".ai.metabolism#max\", settings.ai.metabolism.max)\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalManager:loadFromXMLFile(xmlFile, baseKey)\r\n\r\n\tlocal key = self.isProfile and basekey or (baseKey .. \".AIAnimalManager\")\r\n\tlocal settings = self.settings\r\n\r\n\r\n\tself.wage = xmlFile:getFloat(key .. \"#wage\", 0)\r\n\r\n\r\n\t-- BUY SETTINGS\r\n\r\n\r\n\tsettings.buy.enabled = xmlFile:getBool(key .. \".buy#enabled\", settings.buy.enabled)\r\n\tsettings.buy.budget.type = xmlFile:getString(key .. \".buy.budget#type\", settings.buy.budget.type)\r\n\tsettings.buy.budget.fixed = xmlFile:getInt(key .. \".buy.budget#fixed\", settings.buy.budget.fixed)\r\n\tsettings.buy.budget.percentage = xmlFile:getFloat(key .. \".buy.budget#percentage\", settings.buy.budget.percentage)\r\n\tsettings.buy.maxAnimals = xmlFile:getInt(key .. \".buy#maxAnimals\", settings.buy.maxAnimals)\r\n\tsettings.buy.breed = xmlFile:getString(key .. \".buy#breed\", settings.buy.breed)\r\n\tsettings.buy.diseases = xmlFile:getBool(key .. \".buy#diseases\", settings.buy.diseases)\r\n\tsettings.buy.gender = xmlFile:getString(key .. \".buy#gender\", settings.buy.gender)\r\n\tsettings.buy.age.min = xmlFile:getInt(key .. \".buy.age#min\", settings.buy.age.min)\r\n\tsettings.buy.age.max = xmlFile:getInt(key .. \".buy.age#max\", settings.buy.age.max)\r\n\tsettings.buy.quality.min = xmlFile:getInt(key .. \".buy.quality#min\", settings.buy.quality.min)\r\n\tsettings.buy.quality.max = xmlFile:getInt(key .. \".buy.quality#max\", settings.buy.quality.max)\r\n\tsettings.buy.health.min = xmlFile:getInt(key .. \".buy.health#min\", settings.buy.health.min)\r\n\tsettings.buy.health.max = xmlFile:getInt(key .. \".buy.health#max\", settings.buy.health.max)\r\n\tsettings.buy.fertility.min = xmlFile:getInt(key .. \".buy.fertility#min\", settings.buy.fertility.min)\r\n\tsettings.buy.fertility.max = xmlFile:getInt(key .. \".buy.fertility#max\", settings.buy.fertility.max)\r\n\tsettings.buy.productivity.min = xmlFile:getInt(key .. \".buy.productivity#min\", settings.buy.productivity.min)\r\n\tsettings.buy.productivity.max = xmlFile:getInt(key .. \".buy.productivity#max\", settings.buy.productivity.max)\r\n\tsettings.buy.metabolism.min = xmlFile:getInt(key .. \".buy.metabolism#min\", settings.buy.metabolism.min)\r\n\tsettings.buy.metabolism.max = xmlFile:getInt(key .. \".buy.metabolism#max\", settings.buy.metabolism.max)\r\n\r\n\r\n\t-- SELL SETTINGS\r\n\r\n\r\n\tsettings.sell.enabled = xmlFile:getBool(key .. \".sell#enabled\", settings.sell.enabled)\r\n\tsettings.sell.maxAnimals = xmlFile:getInt(key .. \".sell#maxAnimals\", settings.sell.maxAnimals)\r\n\tsettings.sell.mark = xmlFile:getBool(key .. \".sell#mark\", settings.sell.mark)\r\n\tsettings.sell.diseases = xmlFile:getBool(key .. \".sell#diseases\", settings.sell.diseases)\r\n\tsettings.sell.gender = xmlFile:getString(key .. \".sell#gender\", settings.sell.gender)\r\n\tsettings.sell.age.min = xmlFile:getInt(key .. \".sell.age#min\", settings.sell.age.min)\r\n\tsettings.sell.age.max = xmlFile:getInt(key .. \".sell.age#max\", settings.sell.age.max)\r\n\tsettings.sell.quality.min = xmlFile:getInt(key .. \".sell.quality#min\", settings.sell.quality.min)\r\n\tsettings.sell.quality.max = xmlFile:getInt(key .. \".sell.quality#max\", settings.sell.quality.max)\r\n\tsettings.sell.health.min = xmlFile:getInt(key .. \".sell.health#min\", settings.sell.health.min)\r\n\tsettings.sell.health.max = xmlFile:getInt(key .. \".sell.health#max\", settings.sell.health.max)\r\n\tsettings.sell.fertility.min = xmlFile:getInt(key .. \".sell.fertility#min\", settings.sell.fertility.min)\r\n\tsettings.sell.fertility.max = xmlFile:getInt(key .. \".sell.fertility#max\", settings.sell.fertility.max)\r\n\tsettings.sell.productivity.min = xmlFile:getInt(key .. \".sell.productivity#min\", settings.sell.productivity.min)\r\n\tsettings.sell.productivity.max = xmlFile:getInt(key .. \".sell.productivity#max\", settings.sell.productivity.max)\r\n\tsettings.sell.metabolism.min = xmlFile:getInt(key .. \".sell.metabolism#min\", settings.sell.metabolism.min)\r\n\tsettings.sell.metabolism.max = xmlFile:getInt(key .. \".sell.metabolism#max\", settings.sell.metabolism.max)\r\n\r\n\r\n\t-- CASTRATE SETTINGS\r\n\r\n\r\n\tsettings.castrate.enabled = xmlFile:getBool(key .. \".castrate#enabled\", settings.castrate.enabled)\r\n\tsettings.castrate.mark = xmlFile:getBool(key .. \".castrate#mark\", settings.castrate.mark)\r\n\tsettings.castrate.diseases = xmlFile:getBool(key .. \".castrate#diseases\", settings.castrate.diseases)\r\n\tsettings.castrate.age.min = xmlFile:getInt(key .. \".castrate.age#min\", settings.castrate.age.min)\r\n\tsettings.castrate.age.max = xmlFile:getInt(key .. \".castrate.age#max\", settings.castrate.age.max)\r\n\tsettings.castrate.quality.min = xmlFile:getInt(key .. \".castrate.quality#min\", settings.castrate.quality.min)\r\n\tsettings.castrate.quality.max = xmlFile:getInt(key .. \".castrate.quality#max\", settings.castrate.quality.max)\r\n\tsettings.castrate.health.min = xmlFile:getInt(key .. \".castrate.health#min\", settings.castrate.health.min)\r\n\tsettings.castrate.health.max = xmlFile:getInt(key .. \".castrate.health#max\", settings.castrate.health.max)\r\n\tsettings.castrate.fertility.min = xmlFile:getInt(key .. \".castrate.fertility#min\", settings.castrate.fertility.min)\r\n\tsettings.castrate.fertility.max = xmlFile:getInt(key .. \".castrate.fertility#max\", settings.castrate.fertility.max)\r\n\tsettings.castrate.productivity.min = xmlFile:getInt(key .. \".castrate.productivity#min\", settings.castrate.productivity.min)\r\n\tsettings.castrate.productivity.max = xmlFile:getInt(key .. \".castrate.productivity#max\", settings.castrate.productivity.max)\r\n\tsettings.castrate.metabolism.min = xmlFile:getInt(key .. \".castrate.metabolism#min\", settings.castrate.metabolism.min)\r\n\tsettings.castrate.metabolism.max = xmlFile:getInt(key .. \".castrate.metabolism#max\", settings.castrate.metabolism.max)\r\n\r\n\r\n\t-- NAMING SETTINGS\r\n\r\n\r\n\tsettings.naming.enabled = xmlFile:getBool(key .. \".naming#enabled\", settings.naming.enabled)\r\n\tsettings.naming.convention = xmlFile:getString(key .. \".naming#convention\", settings.naming.convention)\r\n\tsettings.naming.previous = xmlFile:getString(key .. \".naming#previous\", settings.naming.previous)\r\n\r\n\r\n\t-- AI SETTINGS\r\n\r\n\r\n\tsettings.ai.enabled = xmlFile:getBool(key .. \".ai#enabled\", settings.ai.enabled)\r\n\tsettings.ai.maxAnimals = xmlFile:getInt(key .. \".ai#maxAnimals\", settings.ai.maxAnimals)\r\n\tsettings.ai.mark = xmlFile:getBool(key .. \".ai#mark\", settings.ai.mark)\r\n\tsettings.ai.diseases = xmlFile:getBool(key .. \".ai#diseases\", settings.ai.diseases)\r\n\tsettings.ai.semen = xmlFile:getString(key .. \".ai#semen\", settings.ai.semen)\r\n\tsettings.ai.age.min = xmlFile:getInt(key .. \".ai.age#min\", settings.ai.age.min)\r\n\tsettings.ai.age.max = xmlFile:getInt(key .. \".ai.age#max\", settings.ai.age.max)\r\n\tsettings.ai.quality.min = xmlFile:getInt(key .. \".ai.quality#min\", settings.ai.quality.min)\r\n\tsettings.ai.quality.max = xmlFile:getInt(key .. \".ai.quality#max\", settings.ai.quality.max)\r\n\tsettings.ai.health.min = xmlFile:getInt(key .. \".ai.health#min\", settings.ai.health.min)\r\n\tsettings.ai.health.max = xmlFile:getInt(key .. \".ai.health#max\", settings.ai.health.max)\r\n\tsettings.ai.fertility.min = xmlFile:getInt(key .. \".ai.fertility#min\", settings.ai.fertility.min)\r\n\tsettings.ai.fertility.max = xmlFile:getInt(key .. \".ai.fertility#max\", settings.ai.fertility.max)\r\n\tsettings.ai.productivity.min = xmlFile:getInt(key .. \".ai.productivity#min\", settings.ai.productivity.min)\r\n\tsettings.ai.productivity.max = xmlFile:getInt(key .. \".ai.productivity#max\", settings.ai.productivity.max)\r\n\tsettings.ai.metabolism.min = xmlFile:getInt(key .. \".ai.metabolism#min\", settings.ai.metabolism.min)\r\n\tsettings.ai.metabolism.max = xmlFile:getInt(key .. \".ai.metabolism#max\", settings.ai.metabolism.max)\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalManager:getSettings(type)\r\n\r\n\treturn type == nil and self.settings or self.settings[type]\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalManager:setSettings(settings, type)\r\n\r\n\tif type == nil then \r\n\t\tself.settings = settings\r\n\telse\r\n\t\tself.settings[type] = settings\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalManager:onDayChanged()\r\n\r\n\tif not self.isServer then return end\r\n\r\n\tlocal buy, sell, castrate, naming, ai = self.settings.buy, self.settings.sell, self.settings.castrate, self.settings.naming, self.settings.ai\r\n\r\n\tself.wage = 0\r\n\r\n\tif not buy.enabled and not sell.enabled and not castrate.enabled and not naming.enabled and not ai.enabled then return end\r\n\r\n\tlocal farmId = self.husbandry:getOwnerFarmId()\r\n\tlocal farm = g_farmManager:getFarmById(farmId)\r\n\tlocal animalSystem = g_currentMission.animalSystem\r\n\tlocal animalTypeIndex = self.husbandry:getAnimalTypeIndex()\r\n\tlocal animalTypeToWage = self.ANIMAL_TYPE_TO_WAGE[animalTypeIndex] or 5\r\n\tlocal messages = {}\r\n\r\n\r\n\t-- ####################### SELL #######################\r\n\r\n\r\n\tif sell.enabled and sell.maxAnimals > 0 then\r\n\r\n\t\tlocal soldAnimals = 0\r\n\t\tlocal animals = self.husbandry:getClusters()\r\n\t\tlocal shortlist = {}\r\n\r\n\t\tlocal qualityMin, qualityMax = sell.quality.min / 100, sell.quality.max / 100\r\n\t\tlocal fertilityMin, fertilityMax = sell.fertility.min / 100, sell.fertility.max / 100\r\n\t\tlocal healthMin, healthMax = sell.health.min / 100, sell.health.max / 100\r\n\t\tlocal metabolismMin, metabolismMax = sell.metabolism.min / 100, sell.metabolism.max / 100\r\n\t\tlocal productivityMin, productivityMax = sell.productivity.min / 100, sell.productivity.max / 100\r\n\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tif animal:getMarked(\"AI_MANAGER_SELL\") then animal:setMarked(\"AI_MANAGER_SELL\", false) end\r\n\r\n\t\t\tif sell.gender ~= \"any\" and animal.gender ~= sell.gender then continue end\r\n\r\n\t\t\tif animal.age < sell.age.min or animal.age > sell.age.max then continue end\r\n\r\n\t\t\tif sell.diseases and (animal.diseases == nil or #animal.diseases == 0) then continue end\r\n\r\n\t\t\tif animal.genetics.metabolism < metabolismMin or animal.genetics.metabolism > metabolismMax then continue end\r\n\t\t\tif animal.genetics.quality < qualityMin or animal.genetics.quality > qualityMax then continue end\r\n\t\t\tif animal.genetics.fertility < fertilityMin or animal.genetics.fertility > fertilityMax then continue end\r\n\t\t\tif animal.genetics.health < healthMin or animal.genetics.health > healthMax then continue end\r\n\t\t\tif animal.genetics.productivity ~= nil and (animal.genetics.productivity < productivityMin or animal.genetics.productivity > productivityMax) then continue end\r\n\r\n\t\t\tlocal price = animal:getSellPrice() + animalSystem:getAnimalTransportFee(animal.subTypeIndex, animal.age)\r\n\r\n\t\t\ttable.insert(shortlist, { [\"animal\"] = animal, [\"price\"] = price })\r\n\r\n\t\tend\r\n\r\n\t\tlocal soldAnimals, amountGained = {}, 0\r\n\r\n\t\ttable.sort(shortlist, function(a, b) return a.price > b.price end)\r\n\r\n\t\tlocal mark = sell.mark\r\n\r\n\t\tfor _, item in ipairs(shortlist) do\r\n\r\n\t\t\tif #soldAnimals >= sell.maxAnimals then break end\r\n\r\n\t\t\tamountGained = amountGained + item.price\r\n\r\n\t\t\ttable.insert(soldAnimals, item.animal)\r\n\r\n\t\t\tif mark then item.animal:setMarked(\"AI_MANAGER_SELL\", true) end\r\n\r\n\t\tend\r\n\r\n\t\tlocal mark = sell.mark\r\n\r\n\t\tself.wage = self.wage + animalTypeToWage * #soldAnimals * (mark and 0.35 or 1) + animalTypeToWage * math.min(#shortlist, #soldAnimals * 5) * 0.15 * (mark and 0.35 or 1)\r\n\r\n\t\tif #soldAnimals > 0 and not mark then\r\n\r\n\t\t\tlocal errorCode = AIAnimalSellEvent.validate(self.husbandry, #soldAnimals, amountGained, farmId)\r\n\r\n\t\t\tif errorCode == nil then\r\n\t\t\t\t\r\n\t\t\t\tg_server:broadcastEvent(AIAnimalSellEvent.new(self.husbandry, soldAnimals, amountGained), true)\r\n\r\n\t\t\t\tif #soldAnimals == 1 then\r\n\t\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_SOLD_SINGLE\", nil, { g_i18n:formatMoney(amountGained, 2, true, true) })\r\n\t\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_SOLD_SINGLE\", [\"args\"] = { g_i18n:formatMoney(amountGained, 2, true, true) } })\r\n\t\t\t\telse\r\n\t\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_SOLD_MULTIPLE\", nil, { #soldAnimals, g_i18n:formatMoney(amountGained, 2, true, true) })\r\n\t\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_SOLD_MULTIPLE\", [\"args\"] = { #soldAnimals, g_i18n:formatMoney(amountGained, 2, true, true) } })\r\n\t\t\t\tend\r\n\r\n\t\t\tend\r\n\r\n\t\telseif #soldAnimals > 0 then\r\n\r\n\t\t\tif #soldAnimals == 1 then\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_MARK_SELL_SINGLE\")\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_MARK_SELL_SINGLE\" })\r\n\t\t\telse\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_MARK_SELL_MULTIPLE\", nil, { #soldAnimals })\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_MARK_SELL_MULTIPLE\", [\"args\"] = { #soldAnimals }})\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\r\n\t-- ####################### BUY #######################\r\n\r\n\r\n\tif buy.enabled and buy.maxAnimals > 0 then\r\n\r\n\t\tlocal budget = buy.budget.fixed\r\n\r\n\t\tif buy.budget.type == \"percentage\" then budget = math.floor(farm:getBalance() * (buy.budget.percentage / 100)) end\r\n\r\n\t\tbudget = math.clamp(budget, 0, farm:getBalance())\r\n\r\n\t\tif budget > 0 then\r\n\r\n\t\t\tlocal animals = animalSystem:getSaleAnimalsByTypeIndex(animalTypeIndex)\r\n\t\t\tlocal shortlist = {}\r\n\r\n\t\t\tlocal qualityMin, qualityMax = buy.quality.min / 100, buy.quality.max / 100\r\n\t\t\tlocal fertilityMin, fertilityMax = buy.fertility.min / 100, buy.fertility.max / 100\r\n\t\t\tlocal healthMin, healthMax = buy.health.min / 100, buy.health.max / 100\r\n\t\t\tlocal metabolismMin, metabolismMax = buy.metabolism.min / 100, buy.metabolism.max / 100\r\n\t\t\tlocal productivityMin, productivityMax = buy.productivity.min / 100, buy.productivity.max / 100\r\n\r\n\t\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\t\tif animal.reserved then continue end\r\n\r\n\t\t\t\tif buy.gender ~= \"any\" and animal.gender ~= buy.gender then continue end\r\n\r\n\t\t\t\tif buy.breed ~= \"any\" and animal.breed ~= buy.breed then continue end\r\n\r\n\t\t\t\tif animal.age < buy.age.min or animal.age > buy.age.max then continue end\r\n\r\n\t\t\t\tif not buy.diseases and #animal.diseases > 0 then continue end\r\n\r\n\t\t\t\tif animal.genetics.metabolism < metabolismMin or animal.genetics.metabolism > metabolismMax then continue end\r\n\t\t\t\tif animal.genetics.quality < qualityMin or animal.genetics.quality > qualityMax then continue end\r\n\t\t\t\tif animal.genetics.fertility < fertilityMin or animal.genetics.fertility > fertilityMax then continue end\r\n\t\t\t\tif animal.genetics.health < healthMin or animal.genetics.health > healthMax then continue end\r\n\t\t\t\tif animal.genetics.productivity ~= nil and (animal.genetics.productivity < productivityMin or animal.genetics.productivity > productivityMax) then continue end\r\n\r\n\t\t\t\tlocal price = animal:getSellPrice() * 1.075 + animalSystem:getAnimalTransportFee(animal.subTypeIndex, animal.age)\r\n\r\n\t\t\t\tif price > budget then continue end\r\n\r\n\t\t\t\ttable.insert(shortlist, { [\"animal\"] = animal, [\"price\"] = price })\r\n\r\n\t\t\tend\r\n\r\n\t\t\tlocal boughtAnimals, amountSpent = {}, 0\r\n\r\n\t\t\ttable.sort(shortlist, function(a, b) return a.price < b.price end)\r\n\r\n\t\t\tfor _, item in ipairs(shortlist) do\r\n\r\n\t\t\t\tif item.price > budget or #boughtAnimals >= buy.maxAnimals then break end\r\n\r\n\t\t\t\tamountSpent = amountSpent + item.price\r\n\t\t\t\tbudget = budget - item.price\r\n\t\t\t\titem.animal.reserved = true\r\n\r\n\t\t\t\ttable.insert(boughtAnimals, item.animal)\r\n\r\n\t\t\tend\r\n\r\n\t\t\tif #boughtAnimals > 0 then\r\n\r\n\t\t\t\tlocal errorCode = AIAnimalBuyEvent.validate(self.husbandry, #boughtAnimals, amountSpent, farmId)\r\n\r\n\t\t\t\tif errorCode == nil then\r\n\t\t\t\t\r\n\t\t\t\t\tg_server:broadcastEvent(AIAnimalBuyEvent.new(self.husbandry, boughtAnimals, amountSpent), true)\r\n\r\n\t\t\t\t\tif #boughtAnimals == 1 then\r\n\t\t\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_BOUGHT_SINGLE\", nil, { g_i18n:formatMoney(amountSpent, 2, true, true) })\r\n\t\t\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_BOUGHT_SINGLE\", [\"args\"] = { g_i18n:formatMoney(amountSpent, 2, true, true) } })\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_BOUGHT_MULTIPLE\", nil, { #boughtAnimals, g_i18n:formatMoney(amountSpent, 2, true, true) })\r\n\t\t\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_BOUGHT_MULTIPLE\", [\"args\"] = { #boughtAnimals, g_i18n:formatMoney(amountSpent, 2, true, true) } })\r\n\t\t\t\t\tend\r\n\r\n\t\t\t\tend\r\n\r\n\t\t\tend\r\n\r\n\t\t\tself.wage = self.wage + animalTypeToWage * #boughtAnimals + animalTypeToWage * math.min(#shortlist, #boughtAnimals * 5) * 0.15\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\r\n\t-- ####################### CASTRATE #######################\r\n\r\n\r\n\tif castrate.enabled and animalTypeIndex ~= AnimalType.CHICKEN then\r\n\r\n\t\tlocal animals = self.husbandry:getClusters()\r\n\t\tlocal numCastrated = 0\r\n\r\n\t\tlocal qualityMin, qualityMax = castrate.quality.min / 100, castrate.quality.max / 100\r\n\t\tlocal fertilityMin, fertilityMax = castrate.fertility.min / 100, castrate.fertility.max / 100\r\n\t\tlocal healthMin, healthMax = castrate.health.min / 100, castrate.health.max / 100\r\n\t\tlocal metabolismMin, metabolismMax = castrate.metabolism.min / 100, castrate.metabolism.max / 100\r\n\t\tlocal productivityMin, productivityMax = castrate.productivity.min / 100, castrate.productivity.max / 100\r\n\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tif animal:getMarked(\"AI_MANAGER_CASTRATE\") then animal:setMarked(\"AI_MANAGER_CASTRATE\", false) end\r\n\r\n\t\t\tif animal.gender == \"female\" or animal.isCastrated or animal.genetics.fertility == 0 then continue end\r\n\r\n\t\t\tif animal.age < castrate.age.min or animal.age > castrate.age.max then continue end\r\n\r\n\t\t\tif castrate.diseases and (animal.diseases == nil or #animal.diseases == 0) then continue end\r\n\r\n\t\t\tif animal.genetics.metabolism < metabolismMin or animal.genetics.metabolism > metabolismMax then continue end\r\n\t\t\tif animal.genetics.quality < qualityMin or animal.genetics.quality > qualityMax then continue end\r\n\t\t\tif animal.genetics.fertility < fertilityMin or animal.genetics.fertility > fertilityMax then continue end\r\n\t\t\tif animal.genetics.health < healthMin or animal.genetics.health > healthMax then continue end\r\n\t\t\tif animal.genetics.productivity ~= nil and (animal.genetics.productivity < productivityMin or animal.genetics.productivity > productivityMax) then continue end\r\n\r\n\t\t\tif not castrate.mark then\r\n\r\n\t\t\t\tanimal.isCastrated = true\r\n\t\t\t\tanimal.genetics.fertility = 0\r\n\r\n\t\t\telse\r\n\r\n\t\t\t\tanimal:setMarked(\"AI_MANAGER_CASTRATE\", true)\r\n\r\n\t\t\tend\r\n\r\n\t\t\tself.wage = self.wage + animalTypeToWage * 0.5 * (castrate.mark and 0.35 or 1)\r\n\t\t\tnumCastrated = numCastrated + 1\r\n\r\n\t\tend\r\n\r\n\t\tif castrate.mark then\r\n\t\t\tif numCastrated == 1 then\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_MARK_CASTRATE_SINGLE\")\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_MARK_CASTRATE_SINGLE\" })\r\n\t\t\telseif numCastrated > 0 then\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_MARK_CASTRATE_MULTIPLE\", nil, { numCastrated })\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_MARK_CASTRATE_MULTIPLE\", [\"args\"] = { numCastrated } })\r\n\t\t\tend\r\n\t\telse\r\n\t\t\tif numCastrated == 1 then\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_MARK_CASTRATE_SINGLE\")\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_MARK_CASTRATE_SINGLE\" })\r\n\t\t\telseif numCastrated > 0 then\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_MARK_CASTRATE_MULTIPLE\", nil, { numCastrated })\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_MARK_CASTRATE_MULTIPLE\", [\"args\"] = { numCastrated } })\r\n\t\t\tend\r\n\t\tend\r\n\r\n\tend\r\n\r\n\r\n\t-- ####################### NAMING #######################\r\n\r\n\r\n\tif naming.enabled then\r\n\r\n\t\tlocal animals = self.husbandry:getClusters()\r\n\t\tlocal animalNameSystem = g_currentMission.animalNameSystem\r\n\t\tlocal femaleNames = animalNameSystem:getNamesAlphabetical(\"female\")\r\n\t\tlocal maleNames = animalNameSystem:getNamesAlphabetical(\"male\")\r\n\t\tlocal numNamed = 0\r\n\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tif animal.name ~= nil and animal.name ~= \"\" then continue end\r\n\r\n\t\t\tif naming.convention == \"random\" then\r\n\r\n\t\t\t\tanimal.name = animalNameSystem:getRandomName(animal.gender)\r\n\t\t\t\tself.wage = self.wage + animalTypeToWage * 0.15\r\n\t\t\t\tnumNamed = numNamed + 1\r\n\r\n\t\t\telse\r\n\r\n\t\t\t\tlocal names = animal.gender == \"female\" and femaleNames or maleNames\r\n\r\n\t\t\t\tfor i, name in ipairs(names) do\r\n\r\n\t\t\t\t\tif naming.previous == nil or (name ~= naming.previous and name >= naming.previous) or i == #names then\r\n\r\n\t\t\t\t\t\tif i == #names and naming.previous == name then\r\n\t\t\t\t\t\t\tanimal.name = names[1] .. \"\"\r\n\t\t\t\t\t\t\tnaming.previous = names[1] .. \"\"\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tanimal.name = name .. \"\"\r\n\t\t\t\t\t\t\tnaming.previous = name .. \"\"\r\n\t\t\t\t\t\tend\r\n\r\n\t\t\t\t\t\tself.wage = self.wage + animalTypeToWage * 0.15\r\n\t\t\t\t\t\tnumNamed = numNamed + 1\r\n\t\t\t\t\t\tbreak\r\n\r\n\t\t\t\t\tend\r\n\r\n\t\t\t\tend\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif numNamed == 1 then\r\n\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_NAMED_SINGLE\")\r\n\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_NAMED_SINGLE\" })\r\n\t\telseif numNamed > 0 then\r\n\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_NAMED_MULTIPLE\", nil, { numNamed })\r\n\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_NAMED_MULTIPLE\", [\"args\"] = { numNamed } })\r\n\t\tend\r\n\r\n\tend\r\n\r\n\r\n\t-- ####################### AI #######################\r\n\r\n\r\n\tif ai.enabled and ai.maxAnimals > 0 then\r\n\r\n\t\tlocal farmDewars = g_dewarManager:getDewarsByFarm(farmId)\r\n\t\tlocal dewars\r\n\r\n\t\tif ai.semen ~= \"any\" and farmDewars ~= nil then\r\n\r\n\t\t\tfor _, dewar in pairs(farmDewars[animalTypeIndex] or {}) do\r\n\r\n\t\t\t\tif dewar:getUniqueId() == ai.semen then\r\n\t\t\t\t\tdewars = { dewar }\r\n\t\t\t\t\tbreak\r\n\t\t\t\tend\r\n\r\n\t\t\tend\r\n\r\n\t\telseif farmDewars ~= nil then\r\n\r\n\t\t\tdewars = farmDewars[animalTypeIndex]\r\n\r\n\t\tend\r\n\r\n\t\tlocal inseminatedAnimals = 0\r\n\t\tlocal animals = self.husbandry:getClusters()\r\n\t\tlocal shortlist = {}\r\n\t\tlocal dewarToStrawDelta = {}\r\n\r\n\t\tlocal qualityMin, qualityMax = ai.quality.min / 100, ai.quality.max / 100\r\n\t\tlocal fertilityMin, fertilityMax = ai.fertility.min / 100, ai.fertility.max / 100\r\n\t\tlocal healthMin, healthMax = ai.health.min / 100, ai.health.max / 100\r\n\t\tlocal metabolismMin, metabolismMax = ai.metabolism.min / 100, sell.metabolism.max / 100\r\n\t\tlocal productivityMin, productivityMax = ai.productivity.min / 100, ai.productivity.max / 100\r\n\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tif animal:getMarked(\"AI_MANAGER_INSEMINATE\") then animal:setMarked(\"AI_MANAGER_INSEMINATE\", false) end\r\n\r\n\t\t\tif dewars == nil or #dewars == 0 then continue end\r\n\r\n\t\t\tif animal.age < ai.age.min or animal.age > ai.age.max then continue end\r\n\r\n\t\t\tif ai.diseases and (animal.diseases == nil or #animal.diseases == 0) then continue end\r\n\r\n\t\t\tif animal.genetics.metabolism < metabolismMin or animal.genetics.metabolism > metabolismMax then continue end\r\n\t\t\tif animal.genetics.quality < qualityMin or animal.genetics.quality > qualityMax then continue end\r\n\t\t\tif animal.genetics.fertility < fertilityMin or animal.genetics.fertility > fertilityMax then continue end\r\n\t\t\tif animal.genetics.health < healthMin or animal.genetics.health > healthMax then continue end\r\n\t\t\tif animal.genetics.productivity ~= nil and (animal.genetics.productivity < productivityMin or animal.genetics.productivity > productivityMax) then continue end\r\n\t\t\t\r\n\r\n\t\t\tlocal canBeInseminated = false\r\n\t\t\tlocal usedDewar\r\n\r\n\t\t\tfor _, dewar in pairs(dewars) do\r\n\r\n\t\t\t\tif dewar.animal == nil or dewar.straws <= 0 then continue end\r\n\r\n\t\t\t\tif dewarToStrawDelta[dewar] ~= nil and dewar.straws - dewarToStrawDelta[dewar] <= 0 then continue end\r\n\r\n\t\t\t\tcanBeInseminated = animal:getCanBeInseminatedByAnimal(dewar.animal)\r\n\r\n\t\t\t\tif canBeInseminated then\r\n\t\t\t\t\tusedDewar = dewar\r\n\t\t\t\t\tif dewarToStrawDelta[dewar] == nil then dewarToStrawDelta[dewar] = 0 end\r\n\t\t\t\t\tdewarToStrawDelta[dewar] = dewarToStrawDelta[dewar] + 1\r\n\t\t\t\t\tbreak\r\n\t\t\t\tend\r\n\r\n\t\t\tend\r\n\r\n\t\t\tif not canBeInseminated then continue end\r\n\r\n\t\t\tlocal genetics = animal.genetics.metabolism + animal.genetics.quality + animal.genetics.fertility + animal.genetics.health + (animal.genetics.productivity or 0)\r\n\r\n\t\t\ttable.insert(shortlist, { [\"animal\"] = animal, [\"genetics\"] = genetics, [\"dewar\"] = usedDewar })\r\n\r\n\t\tend\r\n\r\n\t\tlocal inseminatedAnimals = {}\r\n\r\n\t\ttable.sort(shortlist, function(a, b) return a.genetics > b.genetics end)\r\n\r\n\t\tlocal mark = ai.mark\r\n\r\n\t\tfor _, item in ipairs(shortlist) do\r\n\r\n\t\t\tif #inseminatedAnimals >= ai.maxAnimals then break end\r\n\r\n\t\t\ttable.insert(inseminatedAnimals, { [\"animal\"] = item.animal, [\"dewar\"] = item.dewar:getUniqueId() })\r\n\r\n\t\t\tif mark then item.animal:setMarked(\"AI_MANAGER_INSEMINATE\", true) end\r\n\r\n\t\tend\r\n\r\n\t\tlocal mark = ai.mark\r\n\r\n\t\tself.wage = self.wage + animalTypeToWage * #inseminatedAnimals * (mark and 0.45 or 1.2) + animalTypeToWage * math.min(#shortlist, #inseminatedAnimals * 5) * 0.2 * (mark and 0.35 or 1)\r\n\r\n\t\tif #inseminatedAnimals > 0 and not mark then\r\n\t\t\t\t\r\n\t\t\tg_server:broadcastEvent(AIAnimalInseminationEvent.new(self.husbandry, inseminatedAnimals), true)\r\n\r\n\t\t\tif #inseminatedAnimals == 1 then\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_INSEMINATED_SINGLE\")\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_INSEMINATED_SINGLE\" })\r\n\t\t\telse\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_INSEMINATED_MULTIPLE\", nil, { #inseminatedAnimals })\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_INSEMINATED_MULTIPLE\", [\"args\"] = { #inseminatedAnimals } })\r\n\t\t\tend\r\n\r\n\t\telseif #inseminatedAnimals > 0 then\r\n\r\n\t\t\tif #inseminatedAnimals == 1 then\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_MARK_INSEMINATED_SINGLE\")\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_MARK_INSEMINATED_SINGLE\" })\r\n\t\t\telse\r\n\t\t\t\tself.husbandry:addRLMessage(\"AI_MANAGER_MARK_INSEMINATED_MULTIPLE\", nil, { #inseminatedAnimals })\r\n\t\t\t\ttable.insert(messages, { [\"id\"] = \"AI_MANAGER_MARK_INSEMINATED_MULTIPLE\", [\"args\"] = { #inseminatedAnimals } })\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\r\n\tif #messages > 0 and g_server.netIsRunning then g_server:broadcastEvent(AIBulkMessageEvent.new(self.husbandry, messages)) end\r\n\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalManager:createProfile()\r\n\r\n\tlocal profile = AIAnimalManager.new(self.isServer)\r\n\r\n\tprofile.settings = table.clone(self.settings, 10)\r\n\tprofile.isProfile = true\r\n\r\n\treturn profile\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalManager:copyProfile(profile)\r\n\r\n\tself.settings = table.clone(profile.settings, 10)\r\n\r\nend\r\n\r\n\r\n\r\nfunction InGameMenuStatisticsFrame:updateViewHandTools()\r\n\r\n\tlocal sortByColumnHandTools = self.sortByColumnHandTools\r\n\tlocal sortOrderHandTools = self.sortOrderHandTools\r\n\r\n\tfor v156, v157 in pairs(self.sortIconsHandTools) do\r\n\r\n\t\tlocal v158 = v156 == sortByColumnHandTools\r\n\t\tlocal v159 = v157[InGameMenuStatisticsFrame.SORT_ORDER_DESC]\r\n\t\tlocal v160\r\n\r\n\t\tif v158 then\r\n\t\t\tv160 = sortOrderHandTools == InGameMenuStatisticsFrame.SORT_ORDER_DESC\r\n\t\telse\r\n\t\t\tv160 = v158\r\n\t\tend\r\n\r\n\t\tv159:setVisible(v160)\r\n\r\n\t\tlocal v161 = v157[InGameMenuStatisticsFrame.SORT_ORDER_ASC]\r\n\r\n\t\tif v158 then v158 = sortOrderHandTools == InGameMenuStatisticsFrame.SORT_ORDER_ASC end\r\n\r\n\t\tv161:setVisible(v158)\r\n\r\n\tend\r\n\r\n\ttable.sort(self.handTools, function(a, b)\r\n\r\n\t\tlocal aValue = a.columns[sortByColumnHandTools].value\r\n\t\tlocal bValue = b.columns[sortByColumnHandTools].value\r\n\r\n\t\tprint(\"a\")\r\n\r\n\t\tDebugUtil.printTableRecursively(a.columns[sortByColumnHandTools], \" - \", 0, 1)\r\n\r\n\t\tprint(\"b\")\r\n\r\n\t\tDebugUtil.printTableRecursively(b.columns[sortByColumnHandTools], \" - \", 0, 1)\r\n\r\n\t\tprint(\"------------\")\r\n\r\n\t\tif aValue == bValue then\r\n\r\n\t\t\taValue = a.columns[InGameMenuStatisticsFrame.COLUMN_NAME].value\r\n\t\t\tbValue = b.columns[InGameMenuStatisticsFrame.COLUMN_NAME].value\r\n\r\n\t\t\tif aValue == bValue then\r\n\r\n\t\t\t\taValue = a.columns[InGameMenuStatisticsFrame.COLUMN_HOLDER].value\r\n\t\t\t\tbValue = b.columns[InGameMenuStatisticsFrame.COLUMN_HOLDER].value\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif sortOrderHandTools == InGameMenuStatisticsFrame.SORT_ORDER_DESC then return bValue < aValue end\r\n\r\n\t\treturn aValue < bValue\r\n\r\n\tend)\r\n\r\n\tself.handToolsList:reloadData()\r\n\r\nend"
  },
  {
    "path": "src/AIStrawUpdater.lua",
    "content": "AIStrawUpdater = {}\r\n\r\nlocal AIStrawUpdater_mt = Class(AIStrawUpdater)\r\n\r\nfunction AIStrawUpdater.new()\r\n\r\n\tlocal self = setmetatable({}, AIStrawUpdater_mt)\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction AIStrawUpdater:update(dT)\r\n\r\n\tif self.straw == nil then return end\r\n\r\n\tself.straw:updateStraw(dT)\r\n\r\nend\r\n\r\n\r\nfunction AIStrawUpdater:setStraw(straw)\r\n\r\n\tself.straw = straw\r\n\r\nend\r\n\r\ng_aiStrawUpdater = AIStrawUpdater.new()"
  },
  {
    "path": "src/AnimalBirthEvent.lua",
    "content": "AnimalBirthEvent = {}\r\n\r\nlocal AnimalBirthEvent_mt = Class(AnimalBirthEvent, Event)\r\nInitEventClass(AnimalBirthEvent, \"AnimalBirthEvent\")\r\n\r\n\r\nfunction AnimalBirthEvent.emptyNew()\r\n    local self = Event.new(AnimalBirthEvent_mt)\r\n    return self\r\nend\r\n\r\n\r\nfunction AnimalBirthEvent.new(object, animal, children, parentDied)\r\n\r\n    local self = AnimalBirthEvent.emptyNew()\r\n\r\n    self.object = object\r\n    self.animal = animal\r\n    self.children = children or {}\r\n    self.parentDied = parentDied or false\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalBirthEvent:readStream(streamId, connection)\r\n\r\n    local hasObject = streamReadBool(streamId)\r\n\r\n    self.object = hasObject and NetworkUtil.readNodeObject(streamId) or nil\r\n    self.animal = Animal.readStreamIdentifiers(streamId, connection)\r\n\r\n    local numChildren = streamReadUInt8(streamId)\r\n    self.children = {}\r\n\r\n    for i = 1, numChildren do\r\n        local child = Animal.new()\r\n        child:readStream(streamId, connection)\r\n        table.insert(self.children, child)\r\n    end\r\n\r\n    self.parentDied = streamReadBool(streamId)\r\n\r\n    self:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalBirthEvent:writeStream(streamId, connection)\r\n\r\n    streamWriteBool(streamId, self.object ~= nil)\r\n\r\n    if self.object ~= nil then NetworkUtil.writeNodeObject(streamId, self.object) end\r\n    \r\n    self.animal:writeStreamIdentifiers(streamId, connection)\r\n\r\n    streamWriteUInt8(streamId, #self.children)\r\n\r\n    for _, child in pairs(self.children) do child:writeStream(streamId, connection) end\r\n\r\n    streamWriteBool(streamId, self.parentDied)\r\n\r\nend\r\n\r\n\r\nfunction AnimalBirthEvent:run(connection)\r\n\r\n    local identifiers = self.animal\r\n\r\n    if self.object == nil then\r\n\r\n        local animals = g_currentMission.animalSystem.animals[identifiers.animalTypeIndex]\r\n\r\n        for _, child in pairs(self.children) do table.insert(animals, child) end\r\n\r\n        for i, animal in pairs(animals) do\r\n\r\n            if animal.farmId == identifiers.farmId and animal.uniqueId == identifiers.uniqueId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) then\r\n\r\n                animal.isParent = true\r\n                animal.monthsSinceLastBirth = 0\r\n                animal.pregnancy = nil\r\n                animal.impregnatedBy = nil\r\n                animal.isPregnant = false\r\n                animal.reproduction = 0\r\n\r\n                if animal.animalTypeIndex == AnimalType.COW or animal.subType == \"GOAT\" then animal.isLactating = true end \r\n\r\n                if self.parentDied then table.remove(animals, i) end\r\n\r\n                break\r\n\r\n            end\r\n\r\n        end\r\n\r\n    else\r\n\r\n        local clusterSystem = self.object:getClusterSystem()\r\n\r\n        for _, child in pairs(self.children) do clusterSystem:addCluster(child) end\r\n\r\n        for _, animal in pairs(clusterSystem.animals) do\r\n\r\n            if animal.farmId == identifiers.farmId and animal.uniqueId == identifiers.uniqueId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) then\r\n\r\n                animal.isParent = true\r\n                animal.monthsSinceLastBirth = 0\r\n                animal.pregnancy = nil\r\n                animal.impregnatedBy = nil\r\n                animal.isPregnant = false\r\n                animal.reproduction = 0\r\n\r\n                if animal.animalTypeIndex == AnimalType.COW or animal.subType == \"GOAT\" then animal.isLactating = true end \r\n\r\n                break\r\n\r\n            end\r\n\r\n        end\r\n        \r\n        if self.parentDied then clusterSystem:removeCluster(identifiers.farmId .. \" \" .. identifiers.uniqueId .. \" \" .. (identifiers.country or identifiers.birthday.country)) end\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/AnimalDeathEvent.lua",
    "content": "AnimalDeathEvent = {}\r\n\r\nlocal AnimalDeathEvent_mt = Class(AnimalDeathEvent, Event)\r\nInitEventClass(AnimalDeathEvent, \"AnimalDeathEvent\")\r\n\r\n\r\nfunction AnimalDeathEvent.emptyNew()\r\n    local self = Event.new(AnimalDeathEvent_mt)\r\n    return self\r\nend\r\n\r\n\r\nfunction AnimalDeathEvent.new(object, animal)\r\n\r\n    local self = AnimalDeathEvent.emptyNew()\r\n\r\n    self.object = object\r\n    self.animal = animal\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalDeathEvent:readStream(streamId, connection)\r\n\r\n    local hasObject = streamReadBool(streamId)\r\n\r\n    self.object = hasObject and NetworkUtil.readNodeObject(streamId) or nil\r\n    self.animal = Animal.readStreamIdentifiers(streamId, connection)\r\n\r\n    self:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalDeathEvent:writeStream(streamId, connection)\r\n\r\n    streamWriteBool(streamId, self.object ~= nil)\r\n\r\n    if self.object ~= nil then NetworkUtil.writeNodeObject(streamId, self.object) end\r\n    \r\n    self.animal:writeStreamIdentifiers(streamId, connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalDeathEvent:run(connection)\r\n\r\n    local identifiers = self.animal\r\n\r\n    if self.object == nil then\r\n        local animals = g_currentMission.animalSystem.animals[identifiers.animalTypeIndex]\r\n\r\n        for i, animal in pairs(animals) do\r\n\r\n            if animal.farmId == identifiers.farmId and animal.uniqueId == identifiers.uniqueId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) then\r\n                table.remove(animals, i)\r\n                return\r\n            end\r\n\r\n        end\r\n    else\r\n        self.object:getClusterSystem():removeCluster(identifiers.farmId .. \" \" .. identifiers.uniqueId .. \" \" .. (identifiers.country or identifiers.birthday.country))\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/AnimalMonitorEvent.lua",
    "content": "AnimalMonitorEvent = {}\r\n\r\nlocal AnimalMonitorEvent_mt = Class(AnimalMonitorEvent, Event)\r\nInitEventClass(AnimalMonitorEvent, \"AnimalMonitorEvent\")\r\n\r\n\r\nfunction AnimalMonitorEvent.emptyNew()\r\n    local self = Event.new(AnimalMonitorEvent_mt)\r\n    return self\r\nend\r\n\r\n\r\nfunction AnimalMonitorEvent.new(object, animal, active, removed)\r\n\r\n    local self = AnimalMonitorEvent.emptyNew()\r\n\r\n    self.object = object\r\n    self.animal = animal\r\n    self.active = active\r\n    self.removed = removed\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalMonitorEvent:readStream(streamId, connection)\r\n\r\n    self.object = NetworkUtil.readNodeObject(streamId)\r\n    self.animal = Animal.readStreamIdentifiers(streamId, connection)\r\n\r\n    self.active = streamReadBool(streamId)\r\n    self.removed = streamReadBool(streamId)\r\n\r\n    self:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalMonitorEvent:writeStream(streamId, connection)\r\n\r\n    NetworkUtil.writeNodeObject(streamId, self.object)\r\n    \r\n    self.animal:writeStreamIdentifiers(streamId, connection)\r\n\r\n    streamWriteBool(streamId, self.active)\r\n    streamWriteBool(streamId, self.removed)\r\n\r\nend\r\n\r\n\r\nfunction AnimalMonitorEvent:run(connection)\r\n\r\n    local identifiers = self.animal\r\n    local clusterSystem = self.object:getClusterSystem()\r\n\r\n    for _, animal in pairs(clusterSystem.animals) do\r\n\r\n        if animal.farmId == identifiers.farmId and animal.uniqueId == identifiers.uniqueId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) then\r\n\r\n            animal.monitor.active = self.active\r\n            animal.monitor.removed = self.removed\r\n\r\n            return\r\n\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalMonitorEvent.sendEvent(object, animal, active, removed)\r\n\r\n    if g_server ~= nil then\r\n        g_server:broadcastEvent(AnimalMonitorEvent.new(object, animal, active, removed))\r\n    else\r\n        g_client:getServerConnection():sendEvent(AnimalMonitorEvent.new(object, animal, active, removed))\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/AnimalNameChangeEvent.lua",
    "content": "AnimalNameChangeEvent = {}\r\n\r\nlocal AnimalNameChangeEvent_mt = Class(AnimalNameChangeEvent, Event)\r\nInitEventClass(AnimalNameChangeEvent, \"AnimalNameChangeEvent\")\r\n\r\n\r\nfunction AnimalNameChangeEvent.emptyNew()\r\n    local self = Event.new(AnimalNameChangeEvent_mt)\r\n    return self\r\nend\r\n\r\n\r\nfunction AnimalNameChangeEvent.new(object, animal, name)\r\n\r\n    local self = AnimalNameChangeEvent.emptyNew()\r\n\r\n    self.object = object\r\n    self.animal = animal\r\n    self.name = name\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalNameChangeEvent:readStream(streamId, connection)\r\n\r\n    self.object = NetworkUtil.readNodeObject(streamId)\r\n    self.animal = Animal.readStreamIdentifiers(streamId, connection)\r\n\r\n    local hasName = streamReadBool(streamId)\r\n\r\n    if hasName then self.name = streamReadString(streamId) end\r\n\r\n    self:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalNameChangeEvent:writeStream(streamId, connection)\r\n\r\n    NetworkUtil.writeNodeObject(streamId, self.object)\r\n    \r\n    self.animal:writeStreamIdentifiers(streamId, connection)\r\n\r\n    streamWriteBool(streamId, self.name ~= nil and self.name ~= \"\")\r\n\r\n    if self.name ~= nil and self.name ~= \"\" then streamWriteString(streamId, self.name) end\r\n\r\nend\r\n\r\n\r\nfunction AnimalNameChangeEvent:run(connection)\r\n\r\n    local identifiers = self.animal\r\n    local clusterSystem = self.object:getClusterSystem()\r\n\r\n    for _, animal in pairs(clusterSystem.animals) do\r\n\r\n        if animal.farmId == identifiers.farmId and animal.uniqueId == identifiers.uniqueId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) then\r\n\r\n            animal.name = self.name\r\n\r\n            return\r\n\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalNameChangeEvent.sendEvent(object, animal, name)\r\n\r\n    if g_server ~= nil then\r\n        g_server:broadcastEvent(AnimalNameChangeEvent.new(object, animal, name))\r\n    else\r\n        g_client:getServerConnection():sendEvent(AnimalNameChangeEvent.new(object, animal, name))\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/AnimalPregnancyEvent.lua",
    "content": "AnimalPregnancyEvent = {}\r\n\r\nlocal AnimalPregnancyEvent_mt = Class(AnimalPregnancyEvent, Event)\r\nInitEventClass(AnimalPregnancyEvent, \"AnimalPregnancyEvent\")\r\n\r\n\r\nfunction AnimalPregnancyEvent.emptyNew()\r\n    local self = Event.new(AnimalPregnancyEvent_mt)\r\n    return self\r\nend\r\n\r\n\r\nfunction AnimalPregnancyEvent.new(object, animal)\r\n\r\n    local self = AnimalPregnancyEvent.emptyNew()\r\n\r\n    self.object = object\r\n    self.animal = animal\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalPregnancyEvent:readStream(streamId, connection)\r\n\r\n    local hasObject = streamReadBool(streamId)\r\n\r\n    self.object = hasObject and NetworkUtil.readNodeObject(streamId) or nil\r\n    self.animal = Animal.readStreamIdentifiers(streamId, connection)\r\n\r\n    local pregnancy = { [\"expected\"] = {}, [\"pregnancies\"] = {} }\r\n    local impregnatedBy = {}\r\n\r\n    pregnancy.duration = streamReadUInt8(streamId)\r\n    pregnancy.expected.day = streamReadUInt8(streamId)\r\n    pregnancy.expected.month = streamReadUInt8(streamId)\r\n    pregnancy.expected.year = streamReadUInt8(streamId)\r\n\r\n    local numChildren = streamReadUInt8(streamId)\r\n\r\n    for i = 1, numChildren do\r\n\r\n        local child = Animal.new()\r\n        child:readStreamUnborn(streamId, connection)\r\n\r\n        if child ~= nil then table.insert(pregnancy.pregnancies, child) end\r\n\r\n    end\r\n\r\n    impregnatedBy.uniqueId = streamReadString(streamId)\r\n    impregnatedBy.metabolism = streamReadFloat32(streamId)\r\n    impregnatedBy.health = streamReadFloat32(streamId)\r\n    impregnatedBy.fertility = streamReadFloat32(streamId)\r\n    impregnatedBy.quality = streamReadFloat32(streamId)\r\n    impregnatedBy.productivity = streamReadFloat32(streamId)\r\n\r\n    self.pregnancy = pregnancy\r\n    self.impregnatedBy = impregnatedBy\r\n\r\n    self:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalPregnancyEvent:writeStream(streamId, connection)\r\n\r\n    streamWriteBool(streamId, self.object ~= nil)\r\n\r\n    if self.object ~= nil then\r\n\r\n        NetworkUtil.writeNodeObject(streamId, self.object)\r\n\r\n    end\r\n    \r\n    self.animal:writeStreamIdentifiers(streamId, connection)\r\n    \r\n    local pregnancy = self.animal.pregnancy\r\n    local impregnatedBy = self.animal.impregnatedBy\r\n\r\n    streamWriteUInt8(streamId, pregnancy.duration)\r\n    streamWriteUInt8(streamId, pregnancy.expected.day)\r\n    streamWriteUInt8(streamId, pregnancy.expected.month)\r\n    streamWriteUInt8(streamId, pregnancy.expected.year)\r\n\r\n    streamWriteUInt8(streamId, #pregnancy.pregnancies)\r\n\r\n    for _, child in pairs(pregnancy.pregnancies) do\r\n\r\n        child:writeStreamUnborn(streamId, connection)\r\n\r\n    end\r\n\r\n    streamWriteString(streamId, impregnatedBy.uniqueId)\r\n    streamWriteFloat32(streamId, impregnatedBy.metabolism)\r\n    streamWriteFloat32(streamId, impregnatedBy.health)\r\n    streamWriteFloat32(streamId, impregnatedBy.fertility)\r\n    streamWriteFloat32(streamId, impregnatedBy.quality)\r\n    streamWriteFloat32(streamId, impregnatedBy.productivity)\r\n\r\nend\r\n\r\n\r\nfunction AnimalPregnancyEvent:run(connection)\r\n\r\n    local identifiers = self.animal\r\n    local animals\r\n\r\n    if self.object == nil then\r\n        animals = g_currentMission.animalSystem.animals[identifiers.animalTypeIndex]\r\n    else\r\n        animals = self.object:getClusterSystem().animals\r\n    end\r\n\r\n    for _, animal in pairs(animals) do\r\n\r\n        if animal.uniqueId == identifiers.unique and animal.farmId == identifiers.farmId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) then\r\n\r\n            animal.isPregnant = true\r\n            animal.pregnancy = self.pregnancy\r\n            animal.impregnatedBy = self.impregnatedBy\r\n            animal.reproduction = 0\r\n\r\n            animal:changeReproduction(animal:getReproductionDelta())\r\n\r\n            return\r\n\r\n        end\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/AnimalUpdateEvent.lua",
    "content": "AnimalUpdateEvent = {}\r\n\r\nlocal AnimalUpdateEvent_mt = Class(AnimalUpdateEvent, Event)\r\nInitEventClass(AnimalUpdateEvent, \"AnimalUpdateEvent\")\r\n\r\n\r\nfunction AnimalUpdateEvent.emptyNew()\r\n    local self = Event.new(AnimalUpdateEvent_mt)\r\n    return self\r\nend\r\n\r\n\r\nfunction AnimalUpdateEvent.new(object, animal, trait, value)\r\n\r\n    local self = AnimalUpdateEvent.emptyNew()\r\n\r\n    self.object = object\r\n    self.animal = animal\r\n    self.trait = trait\r\n    self.value = value\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalUpdateEvent:readStream(streamId, connection)\r\n\r\n    self.object = NetworkUtil.readNodeObject(streamId)\r\n    self.animal = Animal.readStreamIdentifiers(streamId, connection)\r\n\r\n    self.trait = streamReadString(streamId)\r\n    local valueType = streamReadString(streamId)\r\n\r\n    if valueType == \"number\" then\r\n        self.value = streamReadFloat32(streamId)\r\n    elseif valueType == \"string\" then\r\n        self.value = streamReadString(streamId)\r\n    else\r\n        self.value = streamReadBool(streamId)\r\n    end\r\n\r\n    self:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalUpdateEvent:writeStream(streamId, connection)\r\n\r\n    NetworkUtil.writeNodeObject(streamId, self.object)\r\n    \r\n    self.animal:writeStreamIdentifiers(streamId, connection)\r\n    streamWriteString(streamId, self.trait)\r\n    \r\n    local valueType = type(self.value)\r\n    streamWriteString(streamId, valueType)\r\n\r\n    if valueType == \"number\" then\r\n        streamWriteFloat32(streamId, self.value)\r\n    elseif valueType == \"string\" then\r\n        streamWriteString(streamId, self.value)\r\n    else\r\n        streamWriteBool(streamId, self.value)\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalUpdateEvent:run(connection)\r\n\r\n    local clusterSystem = self.object:getClusterSystem()\r\n    local identifiers = self.animal\r\n\r\n    for _, animal in pairs(clusterSystem.animals) do\r\n\r\n        if animal.farmId == identifiers.farmId and animal.uniqueId == identifiers.uniqueId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) and animal.animalTypeIndex == identifiers.animalTypeIndex then\r\n\r\n            animal[self.trait] = self.value\r\n            return\r\n\r\n        end\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/DewarManager.lua",
    "content": "DewarManager = {}\r\n\r\nlocal DewarManager_mt = Class(DewarManager)\r\nlocal modDirectory = g_currentModDirectory\r\n\r\n\r\nfunction DewarManager.new()\r\n\r\n\tlocal self = setmetatable({}, DewarManager_mt)\r\n\r\n\tself.farms = {}\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction DewarManager:addDewar(farmId, dewar)\r\n\r\n\tif self.farms[farmId] == nil then self.farms[farmId] = {} end\r\n\r\n\tlocal farm = self.farms[farmId]\r\n\tlocal typeIndex = dewar.animal.typeIndex\r\n\r\n\tif farm[typeIndex] == nil then farm[typeIndex] = {} end\r\n\r\n\ttable.insert(farm[typeIndex], dewar)\r\n\r\nend\r\n\r\n\r\nfunction DewarManager:removeDewar(farmId, dewar)\r\n\r\n\tlocal typeIndex = dewar.animal.typeIndex\r\n\r\n\tif self.farms[farmId] == nil or self.farms[farmId][typeIndex] == nil then return end\r\n\r\n\tlocal id = dewar:getUniqueId()\r\n\r\n\tfor i, object in pairs(self.farms[farmId][typeIndex]) do\r\n\r\n\t\tif object:getUniqueId() == id then\r\n\t\t\ttable.remove(self.farms[farmId][typeIndex], i)\r\n\t\t\treturn\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction DewarManager:getDewarsByFarm(farmId)\r\n\r\n\treturn self.farms[farmId]\r\n\r\nend\r\n\r\n\r\nfunction DewarManager:readStream(streamId, connection)\r\n\r\n\tlocal numFarms = streamReadUInt8(streamId)\r\n\tself.farms = {}\r\n\r\n\tfor farmIndex = 1, numFarms do\r\n\r\n\t\tlocal farmId = streamReadUInt8(streamId)\r\n\t\tlocal numAnimalTypes = streamReadUInt8(streamId)\r\n\t\tlocal farm = {}\r\n\r\n\t\tfor animalIndex = 1, numAnimalTypes do\r\n\r\n\t\t\tlocal animalTypeIndex = streamReadUInt8(streamId)\r\n\t\t\tlocal numDewars = streamReadUInt8(streamId)\r\n\t\t\tlocal dewars = {}\r\n\r\n\t\t\tfor dewarIndex = 1, numDewars do\r\n\r\n\t\t\t\tlocal dewar = Dewar.new(g_currentMission:getIsServer(), g_currentMission:getIsClient())\r\n\t\t\t\tdewar:createNode(modDirectory .. \"objects/dewar/dewar.i3d\")\r\n\t\t\t\tdewar:readStream(streamId, connection)\r\n\t\t\t\tdewar:register()\r\n\r\n\t\t\t\ttable.insert(dewars, dewar)\r\n\r\n\t\t\tend\r\n\r\n\t\t\tfarm[animalTypeIndex] = dewars\r\n\r\n\t\tend\r\n\r\n\t\tself.farms[farmId] = farm\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction DewarManager:writeStream(streamId, connection)\r\n\r\n\tlocal numFarms = 0\r\n\r\n\tfor farmId, animalTypes in pairs(self.farms) do numFarms = numFarms + 1 end\r\n\r\n\tstreamWriteUInt8(streamId, numFarms)\r\n\r\n\tfor farmId, animalTypes in pairs(self.farms) do\r\n\r\n\t\tlocal numAnimalTypes = 0\r\n\r\n\t\tfor animalTypeIndex, dewars in pairs(animalTypes) do numAnimalTypes = numAnimalTypes + 1 end\r\n\r\n\t\tstreamWriteUInt8(streamId, farmId)\r\n\t\tstreamWriteUInt8(streamId, numAnimalTypes)\r\n\r\n\t\tfor animalTypeIndex, dewars in pairs(animalTypes) do\r\n\t\t\r\n\t\t\tstreamWriteUInt8(streamId, animalTypeIndex)\r\n\t\t\tstreamWriteUInt8(streamId, #dewars)\r\n\r\n\t\t\tfor _, dewar in pairs(dewars) do dewar:writeStream(streamId, connection) end\r\n\t\t\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\ng_dewarManager = DewarManager.new()"
  },
  {
    "path": "src/Disease.lua",
    "content": "Disease = {}\r\n\r\nlocal disease_mt = Class(Disease)\r\n\r\nfunction Disease.new(type, isCarrier, genes)\r\n\r\n\tlocal self = setmetatable({}, disease_mt)\r\n\r\n\tself.type = type\r\n\tself.cured = false\r\n\tself.beingTreated = false\r\n\tself.treatmentDuration = 0\r\n\tself.immunity = 0\r\n\tself.time = -1\r\n\tself.isCarrier = isCarrier or false\r\n\tself.genes = genes or 0\r\n\tself.recovery = 0\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction Disease:loadFromXMLFile(xmlFile, key)\r\n\r\n\tself.cured = xmlFile:getBool(key .. \"#cured\", false)\r\n\tself.beingTreated = xmlFile:getBool(key .. \"#beingTreated\", false)\r\n\tself.treatmentDuration = xmlFile:getInt(key .. \"#treatmentDuration\", 0)\r\n\tself.immunity = xmlFile:getInt(key .. \"#immunity\", 0)\r\n\tself.time = xmlFile:getInt(key .. \"#time\", 0)\r\n\tself.isCarrier = xmlFile:getBool(key .. \"#isCarrier\", false)\r\n\tself.genes = xmlFile:getInt(key .. \"#genes\", 0)\r\n\tself.recovery = xmlFile:getInt(key .. \"#recovery\", 0)\r\n\r\nend\r\n\r\n\r\nfunction Disease:saveToXMLFile(xmlFile, key)\r\n\r\n\txmlFile:setString(key .. \"#title\", self.type.title)\r\n\txmlFile:setBool(key .. \"#cured\", self.cured)\r\n\txmlFile:setBool(key .. \"#beingTreated\", self.beingTreated)\r\n\txmlFile:setInt(key .. \"#treatmentDuration\", self.treatmentDuration)\r\n\txmlFile:setInt(key .. \"#immunity\", self.immunity)\r\n\txmlFile:setInt(key .. \"#time\", self.time)\r\n\txmlFile:setBool(key .. \"#isCarrier\", self.isCarrier)\r\n\txmlFile:setInt(key .. \"#genes\", self.genes)\r\n\txmlFile:setInt(key .. \"#recovery\", self.recovery)\r\n\r\nend\r\n\r\n\r\nfunction Disease:writeStream(streamId, connection)\r\n\r\n\tstreamWriteString(streamId, self.type.title)\r\n\tstreamWriteBool(streamId, self.cured)\r\n\tstreamWriteBool(streamId, self.beingTreated)\r\n\tstreamWriteUInt8(streamId, self.treatmentDuration)\r\n\tstreamWriteUInt8(streamId, self.immunity)\r\n\tstreamWriteUInt16(streamId, self.time)\r\n\tstreamWriteBool(streamId, self.isCarrier)\r\n\tstreamWriteUInt8(streamId, self.genes)\r\n\tstreamWriteUInt8(streamId, self.recovery)\r\n\r\nend\r\n\r\n\r\nfunction Disease:readStream(streamId, connection)\r\n\r\n\tself.cured = streamReadBool(streamId)\r\n\tself.beingTreated = streamReadBool(streamId)\r\n\tself.treatmentDuration = streamReadUInt8(streamId)\r\n\tself.immunity = streamReadUInt8(streamId)\r\n\tself.time = streamReadUInt16(streamId)\r\n\tself.isCarrier = streamReadBool(streamId)\r\n\tself.genes = streamReadUInt8(streamId)\r\n\tself.recovery = streamReadUInt8(streamId)\r\n\r\nend\r\n\r\n\r\nfunction Disease:onPeriodChanged(animal, deathEnabled)\r\n\r\n\tif not g_diseaseManager.diseasesEnabled then return false, 0 end\r\n\r\n\tself.time = self.time + 1\r\n\tlocal treatmentCost = 0\r\n\r\n\tif self.cured then\r\n\r\n\t\tself.immunity = self.immunity - 1\r\n\r\n\t\tif self.immunity <= 0 then\r\n\t\t\tanimal:removeDisease(self.type.title)\r\n\t\t\treturn false, 0\r\n\t\tend\r\n\r\n\telseif self.beingTreated and self.type.treatment ~= nil then\r\n\r\n\t\tself.treatmentDuration = math.max(self.treatmentDuration - 1, 0)\r\n\r\n\t\ttreatmentCost = self.type.treatment.cost\r\n\r\n\t\tif self.treatmentDuration <= 0 then\r\n\t\t\tself.cured = true\r\n\t\t\tself.beingTreated = false\r\n\t\t\tself.immunity = self.type.immunity - 0\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tif not self.cured and self.type.recovery ~= nil then\r\n\r\n\t\tself.recovery = self.recovery + 1\r\n\r\n\t\tif self.recovery >= self.type.recovery and math.random() >= 0.25 then\r\n\r\n\t\t\tself.cured = true\r\n\t\t\tself.immunity = self.type.immunity - 0\r\n\t\t\tself.beingTreated = false\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tif not self.isCarrier and deathEnabled then\r\n\r\n\t\tlocal fatality = self.type.fatality\r\n\t\tlocal fatalityChance = 0\r\n\r\n\t\tfor i = 1, #fatality do\r\n\r\n\t\t\tif self.time <= fatality[i].time or i == #fatality then\r\n\t\t\t\tfatalityChance = fatality[i].value\r\n\t\t\t\tbreak\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif math.random() < fatalityChance then\r\n\t\r\n\t\t\tanimal:die(self.type.key)\r\n\t\t\treturn true, treatmentCost\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\treturn false, treatmentCost\r\n\r\nend\r\n\r\n\r\nfunction Disease:affectReproduction(child, otherParent)\r\n\r\n\tif not g_diseaseManager.diseasesEnabled then return end\r\n\r\n\tlocal genetic = self.type.genetic\r\n\r\n\tif genetic == nil or (not genetic.recessive and not genetic.dominant) then return end\r\n\r\n\tlocal pDisease = otherParent ~= nil and otherParent:getDisease(self.type.title) or nil\r\n\t\r\n\tlocal parents = {\r\n\t\tself.genes,\r\n\t\tpDisease ~= nil and pDisease.genes or 0\r\n\t}\r\n\r\n\tlocal numAffectedGenes = 0\r\n\r\n\tfor _, genes in pairs(parents) do\r\n\r\n\t\tif genes == 2 then\r\n\t\t\tnumAffectedGenes = numAffectedGenes + 1\r\n\t\telseif genes == 1 then\r\n\t\t\tif math.random() <= 0.5 then numAffectedGenes = numAffectedGenes + 1 end\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tif numAffectedGenes == 2 then\r\n\r\n\t\tchild:addDisease(self.type, false, 2)\r\n\r\n\telseif numAffectedGenes == 1 then\r\n\r\n\t\tif genetic.recessive then\r\n\r\n\t\t\tchild:addDisease(self.type, true, 1)\r\n\r\n\t\telseif genetic.dominant then\r\n\r\n\t\t\tchild:addDisease(self.type, false, 1)\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction Disease:modifyValue(value)\r\n\r\n\treturn value * self.type.value\r\n\r\nend\r\n\r\n\r\nfunction Disease:modifyOutput(type, value)\r\n\r\n\tif self.cured or not g_diseaseManager.diseasesEnabled then return value end\r\n\r\n\tif self.isCarrier and self.type.carrier ~= nil and self.type.carrier.output ~= nil then return value * (self.type.carrier.output[type] or 1) end\r\n\r\n\treturn value * (self.type.output[type] or 1)\r\n\r\nend\r\n\r\n\r\nfunction Disease:showInfo(box)\r\n\r\n\tlocal time\r\n\tlocal years = math.floor(self.time / 12)\r\n\tlocal months = self.time - years * 12\r\n\r\n\tif years == 0 then\r\n\t\ttime = string.format(\"%d %s\", months, months == 1 and g_i18n:getText(\"rl_ui_month\") or g_i18n:getText(\"rl_ui_months\"))\r\n\telseif months == 0 then\r\n\t\ttime = string.format(\"%d %s\", years, years == 1 and g_i18n:getText(\"rl_ui_year\") or g_i18n:getText(\"rl_ui_years\"))\r\n\telse\r\n\t\ttime = string.format(\"%d %s, %d %s\", years, years == 1 and g_i18n:getText(\"rl_ui_year\") or g_i18n:getText(\"rl_ui_years\"), months, months == 1 and g_i18n:getText(\"rl_ui_month\") or g_i18n:getText(\"rl_ui_months\"))\r\n\tend\r\n\r\n\tbox:addLine(string.format(\"%s (%s)\", self.type.name, time), self:getStatus())\r\n\r\nend\r\n\r\n\r\nfunction Disease:getStatus()\r\n\r\n\tlocal status\r\n\tlocal years = math.floor(self.time / 12)\r\n\tlocal months = self.time - years * 12\r\n\r\n\tif self.beingTreated then\r\n\t\tstatus = g_i18n:getText(\"rl_ui_beingTreated\")\r\n\telseif self.cured then\r\n\r\n\t\tlocal immunityYears = math.floor(self.immunity / 12)\r\n\t\tlocal immunityMonths = self.immunity - immunityYears * 12\r\n\t\tlocal immuneTime\r\n\r\n\t\tif years == 0 then\r\n\t\t\timmuneTime = string.format(\"%d %s\", months, months == 1 and g_i18n:getText(\"rl_ui_month\") or g_i18n:getText(\"rl_ui_months\"))\r\n\t\telseif months == 0 then\r\n\t\t\timmuneTime = string.format(\"%d %s\", years, years == 1 and g_i18n:getText(\"rl_ui_year\") or g_i18n:getText(\"rl_ui_years\"))\r\n\t\telse\r\n\t\t\timmuneTime = string.format(\"%d %s, %d %s\", years, years == 1 and g_i18n:getText(\"rl_ui_year\") or g_i18n:getText(\"rl_ui_years\"), months, months == 1 and g_i18n:getText(\"rl_ui_month\") or g_i18n:getText(\"rl_ui_months\"))\r\n\t\tend\r\n\r\n\t\tstatus = string.format(\"%s (%s)\", g_i18n:getText(\"rl_ui_immune\"), immuneTime)\r\n\r\n\telseif self.isCarrier then\r\n\r\n\t\tstatus = g_i18n:getText(\"rl_ui_carrier\")\r\n\r\n\telse\r\n\t\tstatus = g_i18n:getText(\"rl_ui_notTreated\")\r\n\tend\r\n\r\n\treturn status\r\n\r\nend"
  },
  {
    "path": "src/DiseaseManager.lua",
    "content": "DiseaseManager = {}\r\n\r\nlocal modDirectory = g_currentModDirectory\r\nlocal diseaseManager_mt = Class(DiseaseManager)\r\n\r\nfunction DiseaseManager.new()\r\n\r\n    local self = setmetatable({}, diseaseManager_mt)\r\n\r\n\tself.diseases = {}\r\n\tself.diseasesEnabled = true\r\n\tself.diseasesChance = 1\r\n\r\n\tself:loadDiseases()\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction DiseaseManager:loadDiseases()\r\n\r\n\tlocal xmlFile = XMLFile.loadIfExists(\"diseases\", modDirectory .. \"xml/diseases.xml\")\r\n\r\n\tif xmlFile == nil then return end\r\n\r\n\txmlFile:iterate(\"diseases.disease\", function(_, key)\r\n\t\r\n\t\tlocal title = xmlFile:getString(key .. \"#title\")\r\n\t\tlocal translationKey = \"rl_disease_\" .. title\r\n\t\tlocal name = g_i18n:getText(translationKey)\r\n\r\n\t\tlocal animals = {}\r\n\t\tlocal animalTitles = string.split(xmlFile:getString(key .. \"#animals\"), \" \")\r\n\r\n\t\tfor _, animalTitle in pairs(animalTitles) do animals[AnimalType[animalTitle]] = true end\r\n\r\n\t\tlocal valueModifier = xmlFile:getFloat(key .. \"#value\", 1.0)\r\n\t\tlocal transmission = xmlFile:getFloat(key .. \"#transmission\", 0)\r\n\t\tlocal immunity = xmlFile:getInt(key .. \"#immunity\", 12)\r\n\r\n\t\tlocal prerequisites = {}\r\n\r\n\t\txmlFile:iterate(key .. \".prerequisites.prerequisite\", function(_, prerequisiteKey)\r\n\r\n\t\t\tlocal valueType = xmlFile:getString(prerequisiteKey .. \"#valueType\", \"Int\")\r\n\t\t\r\n\t\t\ttable.insert(prerequisites, {\r\n\t\t\t\t[\"path\"] = string.split(xmlFile:getString(prerequisiteKey .. \"#path\"), \".\"),\r\n\t\t\t\t[\"value\"] = XMLFile[\"get\" .. valueType](xmlFile, prerequisiteKey .. \"#value\")\r\n\t\t\t})\r\n\t\t\r\n\t\tend)\r\n\r\n\t\tlocal probability = {}\r\n\r\n\t\txmlFile:iterate(key .. \".probability.key\", function(_, probabilityKey)\r\n\r\n\t\t\ttable.insert(probability, {\r\n\t\t\t\t[\"age\"] = xmlFile:getInt(probabilityKey .. \"#age\"),\r\n\t\t\t\t[\"value\"] = xmlFile:getFloat(probabilityKey .. \"#value\")\r\n\t\t\t})\r\n\t\t\r\n\t\tend)\r\n\r\n\t\tlocal fatality = {}\r\n\r\n\t\txmlFile:iterate(key .. \".fatality.key\", function(_, fatalityKey)\r\n\r\n\t\t\ttable.insert(fatality, {\r\n\t\t\t\t[\"time\"] = xmlFile:getInt(fatalityKey .. \"#time\"),\r\n\t\t\t\t[\"value\"] = xmlFile:getFloat(fatalityKey .. \"#value\")\r\n\t\t\t})\r\n\t\t\r\n\t\tend)\r\n\r\n\t\tlocal output = {}\r\n\r\n\t\txmlFile:iterate(key .. \".output.fillType\", function(_, outputKey)\r\n\r\n\t\t\toutput[xmlFile:getString(outputKey .. \"#type\")] = xmlFile:getFloat(outputKey .. \"#modifier\")\r\n\t\t\r\n\t\tend)\r\n\r\n\t\tlocal treatment = {\r\n\t\t\t[\"cost\"] = xmlFile:getFloat(key .. \".treatment#cost\"),\r\n\t\t\t[\"duration\"] = xmlFile:getInt(key .. \".treatment#duration\")\r\n\t\t}\r\n\r\n\t\tif treatment.cost == nil or treatment.duration == nil then treatment = nil end\r\n\r\n\t\tlocal recovery = xmlFile:getFloat(key .. \"#recovery\")\r\n\r\n\t\tlocal disease = {\r\n\t\t\t[\"title\"] = title,\r\n\t\t\t[\"key\"] = translationKey,\r\n\t\t\t[\"name\"] = name,\r\n\t\t\t[\"animals\"] = animals,\r\n\t\t\t[\"value\"] = valueModifier,\r\n\t\t\t[\"transmission\"] = transmission,\r\n\t\t\t[\"immunity\"] = immunity,\r\n\t\t\t[\"prerequisites\"] = prerequisites,\r\n\t\t\t[\"probability\"] = probability,\r\n\t\t\t[\"fatality\"] = fatality,\r\n\t\t\t[\"output\"] = output,\r\n\t\t\t[\"treatment\"] = treatment,\r\n\t\t\t[\"recovery\"] = recovery\r\n\t\t}\r\n\r\n\t\tif xmlFile:hasProperty(key .. \".carrier\") then\r\n\r\n\t\t\tlocal carrier = {}\r\n\r\n\t\t\tif xmlFile:hasProperty(key .. \".carrier.output\") then\r\n\r\n\t\t\t\tlocal carrierOutput = {}\r\n\r\n\t\t\t\txmlFile:iterate(key .. \".output.fillType\", function(_, outputKey)\r\n\r\n\t\t\t\t\tcarrierOutput[xmlFile:getString(outputKey .. \"#type\")] = xmlFile:getFloat(outputKey .. \"#modifier\")\r\n\t\t\r\n\t\t\t\tend)\r\n\r\n\t\t\t\tcarrier.output = carrierOutput\r\n\r\n\t\t\tend\r\n\r\n\t\t\tdisease.carrier = carrier\r\n\r\n\t\tend\r\n\r\n\t\tif xmlFile:hasProperty(key .. \".genetic\") then\r\n\r\n\t\t\tdisease.genetic = {\r\n\t\t\t\t[\"recessive\"] = xmlFile:getBool(key .. \".genetic#recessive\", false),\r\n\t\t\t\t[\"dominant\"] = xmlFile:getBool(key .. \".genetic#dominant\", false),\r\n\t\t\t\t[\"saleChance\"] = xmlFile:getFloat(key .. \".genetic#saleChance\", 0)\r\n\t\t\t}\r\n\r\n\t\tend\r\n\r\n\t\ttable.insert(self.diseases, disease)\r\n\t\r\n\tend)\r\n\r\n\txmlFile:delete()\r\n\r\nend\r\n\r\n\r\nfunction DiseaseManager:getDiseaseByTitle(title)\r\n\r\n\tfor _, disease in pairs(self.diseases) do\r\n\t\tif disease.title == title then return disease end\r\n\tend\r\n\r\n\treturn nil\r\n\r\nend\r\n\r\n\r\nfunction DiseaseManager:onDayChanged(animal)\r\n\r\n\tif not self.diseasesEnabled then return end\r\n\r\n\tfor _, disease in pairs(self.diseases) do\r\n\r\n\t\tif not disease.animals[animal.animalTypeIndex] then continue end\r\n\r\n\t\tlocal eligible = true\r\n\r\n\t\tfor _, existingDisease in pairs(animal.diseases) do\r\n\r\n\t\t\tif existingDisease.type.title == disease.title then\r\n\t\t\t\teligible = false\r\n\t\t\t\tbreak\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif not eligible then continue end\r\n\r\n\t\tfor _, prerequisite in pairs(disease.prerequisites) do\r\n\r\n\t\t\tlocal currentValue = animal\r\n\r\n\t\t\tfor _, path in pairs(prerequisite.path) do\r\n\r\n\t\t\t\tcurrentValue = currentValue[path]\r\n\r\n\t\t\tend\r\n\r\n\t\t\tif currentValue ~= prerequisite.value then\r\n\t\t\t\teligible = false\r\n\t\t\t\tbreak\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif not eligible then continue end\r\n\r\n\t\tlocal probability = 0\r\n\r\n\t\tfor i = 1, #disease.probability do\r\n\r\n\t\t\tif animal.age <= disease.probability[i].age or i == #disease.probability then\r\n\t\t\t\tprobability = disease.probability[i].value\r\n\t\t\t\tbreak\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif math.random() >= probability * self.diseasesChance then continue end\r\n\r\n\t\tanimal:addDisease(disease)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction DiseaseManager:setGeneticDiseasesForSaleAnimal(animal)\r\n\r\n\tfor _, disease in pairs(self.diseases) do\r\n\r\n\t\tif not disease.animals[animal.animalTypeIndex] or disease.genetic == nil or disease.probability[1].value ~= 0 or #disease.probability > 1 then continue end\r\n\r\n\t\tlocal eligible = true\r\n\r\n\t\tfor _, existingDisease in pairs(animal.diseases) do\r\n\r\n\t\t\tif existingDisease.type.title == disease.title then\r\n\t\t\t\teligible = false\r\n\t\t\t\tbreak\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif not eligible then continue end\r\n\r\n\t\tif math.random() < disease.genetic.saleChance then\r\n\r\n\t\t\tlocal numGenes = 1\r\n\r\n\t\t\tif math.random() <= 0.25 then numGenes = 2 end\r\n\r\n\t\t\tanimal:addDisease(disease, disease.genetic.recessive and numGenes == 1, numGenes)\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction DiseaseManager:calculateTransmission(animals)\r\n\r\n\tif not self.diseasesEnabled then return end\r\n\r\n\tlocal diseases = {}\r\n\tlocal hasDiseases = false\r\n\r\n\tfor _, animal in pairs(animals) do\r\n\r\n\t\tfor _, disease in pairs(animal.diseases) do\r\n\r\n\t\t\tlocal type = disease.type\r\n\r\n\t\t\tif type.transmission == nil or type.transmission <= 0 then continue end\r\n\r\n\t\t\tif diseases[type.title] == nil then\r\n\t\t\t\tdiseases[type.title] = { [\"type\"] = type, [\"amount\"] = 0 }\r\n\t\t\t\thasDiseases = true\r\n\t\t\tend\r\n\r\n\t\t\tdiseases[type.title].amount = diseases[type.title].amount + 1\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\r\n\tif not hasDiseases then return end\r\n\r\n\r\n\tfor _, animal in pairs(animals) do\r\n\r\n\t\tfor title, disease in pairs(diseases) do\r\n\r\n\t\t\tlocal eligible = true\r\n\r\n\t\t\tfor _, existingDisease in pairs(animal.diseases) do\r\n\r\n\t\t\t\tif existingDisease.type.title == title then\r\n\t\t\t\t\teligible = false\r\n\t\t\t\t\tbreak\r\n\t\t\t\tend\r\n\r\n\t\t\tend\r\n\r\n\t\t\tif not eligible then continue end\r\n\r\n\t\t\tfor _, prerequisite in pairs(disease.type.prerequisites) do\r\n\r\n\t\t\t\tlocal currentValue = animal\r\n\r\n\t\t\t\tfor _, path in pairs(prerequisite.path) do\r\n\r\n\t\t\t\t\tcurrentValue = currentValue[path]\r\n\r\n\t\t\t\tend\r\n\r\n\t\t\t\tif currentValue ~= prerequisite.value then\r\n\t\t\t\t\teligible = false\r\n\t\t\t\t\tbreak\r\n\t\t\t\tend\r\n\r\n\t\t\tend\r\n\r\n\t\t\tif not eligible then continue end\r\n\r\n\t\t\tif math.random() <= disease.type.transmission * (disease.amount / #animals) then\r\n\t\t\t\tanimal:addDisease(disease.type)\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\r\nend\r\n\r\n\r\nfunction DiseaseManager.onSettingChanged(name, state)\r\n\r\n\tif g_diseaseManager ~= nil then g_diseaseManager[name] = state end\r\n\r\nend"
  },
  {
    "path": "src/FSCareerMissionInfo.lua",
    "content": "RL_FSCareerMissionInfo = {}\r\n\r\nfunction RL_FSCareerMissionInfo:saveToXMLFile()\r\n    if self.xmlFile ~= nil and g_currentMission ~= nil and g_currentMission.animalSystem ~= nil then\r\n        g_currentMission.animalSystem:saveToXMLFile(self.savegameDirectory .. \"/animalSystem.xml\")\r\n        RLSettings.saveToXMLFile()\r\n    end\r\nend\r\n\r\nFSCareerMissionInfo.saveToXMLFile = Utils.appendedFunction(FSCareerMissionInfo.saveToXMLFile, RL_FSCareerMissionInfo.saveToXMLFile)"
  },
  {
    "path": "src/I18N.lua",
    "content": "RL_I18N = {}\r\nlocal modName = g_currentModName\r\nlocal isGithubVersion = true\r\n\r\nfunction RL_I18N:getText(superFunc, text, modEnv)\r\n\r\n    if (text == \"rl_ui_monitorSubscriptions\" or text == \"finance_monitorSubscriptions\" or text == \"rl_ui_herdsmanWages\" or text == \"finance_herdsmanWages\" or text == \"rl_ui_semenPurchase\" or text == \"finance_semenPurchase\") and modEnv == nil then\r\n        return superFunc(self, text, modName)\r\n    end\r\n\r\n    if isGithubVersion and string.contains(text, \"rl_\") then\r\n\r\n        local env = self.modEnvironments[modName]\r\n\r\n        if env == nil then return superFunc(self, text, modEnv) end\r\n\r\n        if env.texts[text .. \"_github\"] ~= nil then return env.texts[text .. \"_github\"] end\r\n\r\n    end\r\n\r\n    return superFunc(self, text, modEnv)\r\n\r\nend\r\n\r\nI18N.getText = Utils.overwrittenFunction(I18N.getText, RL_I18N.getText)"
  },
  {
    "path": "src/RLConsoleCommandManager.lua",
    "content": "RLConsoleCommandManager = {}\r\n\r\nlocal rlConsoleCommandManager_mt = Class(RLConsoleCommandManager)\r\n\r\nfunction RLConsoleCommandManager.new()\r\n\r\n\tlocal self = setmetatable({}, rlConsoleCommandManager_mt)\r\n\r\n\tself.husbandrySystem = g_currentMission.husbandrySystem\r\n\tself.animalSystem = g_currentMission.animalSystem\r\n\tself.animal = nil\r\n\tself.placeable = nil\r\n\r\n    if g_currentMission:getIsServer() and not g_currentMission.missionDynamicInfo.isMultiplayer then\r\n        addConsoleCommand(\"rlSetTargetAnimal\", \"Set the target animal for future console commands\", \"setAnimal\", self, \"[type] [farmId] [uniqueId]\")\r\n        addConsoleCommand(\"rlSetAnimalGenetics\", \"Set the genetics of the targeted animal\", \"setGenetics\", self, \"[geneticType] [value]\")\r\n        addConsoleCommand(\"rlSetAnimalInput\", \"Set the input of the targeted animal\", \"setInput\", self, \"[inputType] [value]\")\r\n        addConsoleCommand(\"rlSetAnimalOutput\", \"Set the output of the targeted animal\", \"setOutput\", self, \"[outputType] [value]\")\r\n    end\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction RLConsoleCommandManager:setAnimal(animalType, farmId, uniqueId)\r\n\r\n\tself.animal = nil\r\n\tself.placeable = nil\r\n\r\n\tif animalType == nil or type(animalType) ~= \"string\" then\r\n\r\n\t\tprint(\"rlSetTargetAnimal: no animal type given, accepted types:\")\r\n\r\n\t\tfor name, index in pairs(AnimalType) do print(\"|--- \" .. name) end\r\n\r\n\t\treturn\r\n\r\n\tend\r\n\r\n\tif farmId == nil then return \"rlSetTargetAnimal: no farmId given\" end\r\n\t\r\n\tif uniqueId == nil then return \"rlSetTargetAnimal: no uniqueId given\" end\r\n\r\n\tlocal animalTypeIndex = AnimalType[animalType:upper()]\r\n\r\n\tfor _, placeable in pairs(self.husbandrySystem.placeables) do\r\n\r\n\t\tif placeable:getAnimalTypeIndex() ~= animalTypeIndex then continue end\r\n\r\n\t\tlocal animals = placeable:getClusters()\r\n\t\t\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tif animal.farmId == farmId and animal.uniqueId == uniqueId then\r\n\r\n\t\t\t\tself.animal = animal\r\n\t\t\t\tself.placeable = placeable\r\n\r\n\t\t\t\treturn \"rlSetTargetAnimal: animal set successfully\"\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\r\n\tfor _, trailer in pairs(self.husbandrySystem.livestockTrailers) do\r\n\r\n\t\tlocal trailerType = trailer:getCurrentAnimalType()\r\n\r\n\t\tif trailerType == nil or trailerType.typeIndex ~= animalTypeIndex then continue end\r\n\r\n\t\tlocal animals = trailer:getClusters()\r\n\t\t\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tif animal.farmId == farmId and animal.uniqueId == uniqueId then\r\n\r\n\t\t\t\tself.animal = animal\r\n\r\n\t\t\t\treturn \"rlSetTargetAnimal: animal set successfully\"\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\treturn \"rlSetTargetAnimal: animal not found\"\r\n\r\nend\r\n\r\n\r\nfunction RLConsoleCommandManager:setGenetics(geneticType, value)\r\n\r\n\tif self.animal == nil then return \"rlSetAnimalGenetics: no targeted animal\" end\r\n\r\n\tif geneticType == nil or type(geneticType) ~= \"string\" or self.animal.genetics[geneticType] == nil then\r\n\t\t\r\n\t\tprint(\"rlSetAnimalGenetics: invalid genetic type given, accepted types:\")\r\n\r\n\t\tfor key, _ in pairs(self.animal.genetics) do print(\"|--- \" .. key) end\r\n\r\n\t\treturn\r\n\t\t\r\n\tend\r\n\r\n\tif value == nil then return \"rlSetAnimalGenetics: no value given\" end\r\n\r\n\tvalue = tonumber(value)\r\n\r\n\tif value == nil then return \"rlSetAnimalGenetics: invalid value given\" end\r\n\r\n\tif value < 0.25 or value > 1.75 then return \"rlSetAnimalGenetics: invalid value given, must be in range 0.25 - 1.75\" end\r\n\r\n\tself.animal.genetics[geneticType] = value\r\n\r\n\treturn \"rlSetAnimalGenetics: animal genetics set successfully\"\r\n\r\nend\r\n\r\n\r\nfunction RLConsoleCommandManager:setInput(inputType, value)\r\n\r\n\tif self.animal == nil then return \"rlSetAnimalInput: no targeted animal\" end\r\n\r\n\tif inputType == nil or type(inputType) ~= \"string\" or self.animal.input[inputType] == nil then\r\n\t\t\r\n\t\tprint(\"rlSetAnimalInput: invalid input type given, accepted types:\")\r\n\r\n\t\tfor key, _ in pairs(self.animal.input) do print(\"|--- \" .. key) end\r\n\r\n\t\treturn\r\n\t\t\r\n\tend\r\n\r\n\tif value == nil then return \"rlSetAnimalInput: no value given\" end\r\n\r\n\tvalue = tonumber(value)\r\n\r\n\tif value == nil then return \"rlSetAnimalInput: invalid value given\" end\r\n\r\n\tif value < 0 then return \"rlSetAnimalInput: invalid value given, must be higher than or equal to 0\" end\r\n\r\n\tself.animal.input[inputType] = value\r\n\tif self.placeable ~= nil then self.placeable:updateInputAndOutput(self.placeable:getClusters()) end\r\n\r\n\treturn \"rlSetAnimalInput: animal input set successfully\"\r\n\r\nend\r\n\r\n\r\nfunction RLConsoleCommandManager:setOutput(outputType, value)\r\n\r\n\tif self.animal == nil then return \"rlSetAnimalOutput: no targeted animal\" end\r\n\r\n\tif outputType == nil or type(outputType) ~= \"string\" or self.animal.output[outputType] == nil then\r\n\t\t\r\n\t\tprint(\"rlSetAnimalOutput: invalid output type given, accepted types:\")\r\n\r\n\t\tfor key, _ in pairs(self.animal.output) do print(\"|--- \" .. key) end\r\n\r\n\t\treturn\r\n\t\t\r\n\tend\r\n\r\n\tif value == nil then return \"rlSetAnimalOutput: no value given\" end\r\n\r\n\tvalue = tonumber(value)\r\n\r\n\tif value == nil then return \"rlSetAnimalOutput: invalid value given\" end\r\n\r\n\tif value < 0 then return \"rlSetAnimalOutput: invalid value given, must be higher than or equal to 0\" end\r\n\r\n\tself.animal.output[outputType] = value\r\n\tif self.placeable ~= nil then self.placeable:updateInputAndOutput(self.placeable:getClusters()) end\r\n\r\n\treturn \"rlSetAnimalOutput: animal output set successfully\"\r\n\r\nend"
  },
  {
    "path": "src/RLMessage.lua",
    "content": "RLMessage = {\r\n\t[\"PREGNANCY_SINGLE\"] = {\r\n\t\t[\"text\"] = \"pregnancySingle\",\r\n\t\t[\"title\"] = \"pregnancy\",\r\n\t\t[\"importance\"] = 2\r\n\t},\r\n\t[\"PREGNANCY_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"pregnancyMultiple\",\r\n\t\t[\"title\"] = \"pregnancy\",\r\n\t\t[\"importance\"] = 2\r\n\t},\r\n\t[\"PREGNANCY_SOLD\"] = {\r\n\t\t[\"text\"] = \"pregnancySold\",\r\n\t\t[\"title\"] = \"pregnancy\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"PREGNANCY_DIED\"] = {\r\n\t\t[\"text\"] = \"pregnancyDied\",\r\n\t\t[\"title\"] = \"pregnancy\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"DEATH\"] = {\r\n\t\t[\"text\"] = \"death\",\r\n\t\t[\"title\"] = \"death\",\r\n\t\t[\"importance\"] = 1\r\n\t},\r\n\t[\"DISEASE_CONTRACTED\"] = {\r\n\t\t[\"text\"] = \"diseaseContracted\",\r\n\t\t[\"title\"] = \"disease\",\r\n\t\t[\"importance\"] = 2\r\n\t},\r\n\t[\"DISEASE_CURED\"] = {\r\n\t\t[\"text\"] = \"diseaseCured\",\r\n\t\t[\"title\"] = \"disease\",\r\n\t\t[\"importance\"] = 2\r\n\t},\r\n\t[\"DISEASE_TREATMENT_START\"] = {\r\n\t\t[\"text\"] = \"diseaseTreatment_start\",\r\n\t\t[\"title\"] = \"disease\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"DISEASE_TREATMENT_RESUME\"] = {\r\n\t\t[\"text\"] = \"diseaseTreatment_resume\",\r\n\t\t[\"title\"] = \"disease\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"DISEASE_TREATMENT_STOP\"] = {\r\n\t\t[\"text\"] = \"diseaseTreatment_stop\",\r\n\t\t[\"title\"] = \"disease\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"NAME_CHANGE\"] = {\r\n\t\t[\"text\"] = \"nameChange\",\r\n\t\t[\"title\"] = \"name\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"NAME_ADDED\"] = {\r\n\t\t[\"text\"] = \"nameAdded\",\r\n\t\t[\"title\"] = \"name\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"NAME_DELETED\"] = {\r\n\t\t[\"text\"] = \"nameDeleted\",\r\n\t\t[\"title\"] = \"name\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"BOUGHT_ANIMALS_SINGLE\"] = {\r\n\t\t[\"text\"] = \"boughtAnimals_single\",\r\n\t\t[\"title\"] = \"movement\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"BOUGHT_ANIMALS_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"boughtAnimals_multiple\",\r\n\t\t[\"title\"] = \"movement\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"SOLD_ANIMALS_SINGLE\"] = {\r\n\t\t[\"text\"] = \"soldAnimals_single\",\r\n\t\t[\"title\"] = \"movement\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"SOLD_ANIMALS_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"soldAnimals_multiple\",\r\n\t\t[\"title\"] = \"movement\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"MOVED_ANIMALS_SOURCE_SINGLE\"] = {\r\n\t\t[\"text\"] = \"movedAnimalsFrom_single\",\r\n\t\t[\"title\"] = \"movement\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"MOVED_ANIMALS_SOURCE_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"movedAnimalsFrom_multiple\",\r\n\t\t[\"title\"] = \"movement\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"MOVED_ANIMALS_TARGET_SINGLE\"] = {\r\n\t\t[\"text\"] = \"movedAnimalsTo_single\",\r\n\t\t[\"title\"] = \"movement\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"MOVED_ANIMALS_TARGET_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"movedAnimalsTo_multiple\",\r\n\t\t[\"title\"] = \"movement\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_BOUGHT_SINGLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_boughtAnimals_single\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_BOUGHT_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_boughtAnimals_multiple\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_SOLD_SINGLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_soldAnimals_single\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_SOLD_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_soldAnimals_multiple\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_CASTRATED_SINGLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_castrated_single\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_CASTRATED_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_castrated_multiple\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_NAMED_SINGLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_named_single\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_NAMED_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_named_multiple\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_MARK_SELL_SINGLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_mark_sell_single\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_MARK_SELL_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_mark_sell_multiple\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_MARK_CASTRATE_SINGLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_mark_castrate_single\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_MARK_CASTRATE_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_mark_castrate_multiple\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_MARK_DISEASE_SINGLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_mark_disease_single\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_MARK_DISEASE_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_mark_disease_multiple\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"INSEMINATION_SUCCESS\"] = {\r\n\t\t[\"text\"] = \"insemination_success\",\r\n\t\t[\"title\"] = \"insemination\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"INSEMINATION_FAIL\"] = {\r\n\t\t[\"text\"] = \"insemination_fail\",\r\n\t\t[\"title\"] = \"insemination\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_INSEMINATED_SINGLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_ai_single\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_INSEMINATED_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_ai_multiple\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_MARK_INSEMINATED_SINGLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_mark_ai_single\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t},\r\n\t[\"AI_MANAGER_MARK_INSEMINATED_MULTIPLE\"] = {\r\n\t\t[\"text\"] = \"aiManager_mark_ai_multiple\",\r\n\t\t[\"title\"] = \"aiManager\",\r\n\t\t[\"importance\"] = 3\r\n\t}\r\n}"
  },
  {
    "path": "src/RLSettings.lua",
    "content": "RLSettings = {}\r\nlocal modDirectory = g_currentModDirectory\r\nlocal modName = g_currentModName\r\nlocal modSettingsDirectory = g_currentModSettingsDirectory\r\n\r\nlocal modDirectoryPath = string.split(modDirectory, \"/\")\r\nlocal baseDirectory = \"\"\r\n\r\nfor i = 1, #modDirectoryPath - 2 do\r\n\r\n\tbaseDirectory = baseDirectory .. (i == 1 and \"\" or \"/\") .. modDirectoryPath[i]\r\n\r\nend\r\n\r\ng_gui:loadProfiles(modDirectory .. \"gui/guiProfiles.xml\")\r\n\r\n\r\nfunction RLSettings.onClickTagColour()\r\n\r\n\tEarTagColourPickerDialog.show()\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.onClickExportCSV()\r\n\r\n\tlocal file = io.open(modSettingsDirectory .. \"animals.csv\", \"w\")\r\n\r\n\tfile:write(\"Type,Subtype,Country,Farm Id,Unique Id,Age,Health,Weight,Value,Value / kg,Pregnant,Expected Offspring,Lactating,Food,Water,Straw,Product,Manure,Liquid Manure\")\r\n\r\n\tlocal husbandrySystem = g_currentMission.husbandrySystem\r\n\tlocal animalSystem = g_currentMission.animalSystem\r\n\r\n\tfor _, placeable in pairs(husbandrySystem.placeables) do\r\n\r\n\t\tlocal animals = placeable:getClusters()\r\n\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tlocal hasMonitor = animal.monitor.active or animal.monitor.removed\r\n\r\n\t\t\tlocal foodInput = animal:getInput(\"food\") * 24\r\n\t\t\tlocal waterInput = animal:getInput(\"water\") * 24\r\n\t\t\tlocal strawInput = animal:getInput(\"straw\") * 24\r\n\t\t\tlocal manureOutput = animal:getOutput(\"manure\") * 24\r\n\t\t\tlocal liquidManureOutput = animal:getOutput(\"liquidManure\") * 24\r\n\t\t\tlocal milkOutput = animal:getOutput(\"milk\") * 24\r\n\t\t\tlocal palletsOutput = animal:getOutput(\"pallets\") * 24\r\n\r\n\t\t\tlocal productOutput = milkOutput > palletsOutput and milkOutput or palletsOutput\r\n\r\n\t\t\tlocal value = animal:getSellPrice()\r\n\t\t\tlocal valuePerKg = hasMonitor and (value / animal.weight) or \"no monitor\"\r\n\t\t\t\r\n\t\t\tlocal expectedOffspring = animal.pregnancy ~= nil and animal.pregnancy.pregnancies ~= nil and #animal.pregnancy.pregnancies or 0\r\n\r\n\t\t\tfile:write(string.format(\"\\n%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\", animalSystem.types[animal.animalTypeIndex].name, animal.subType, RealisticLivestock.AREA_CODES[animal.birthday.country].code, animal.farmId, animal.uniqueId, animal.age, hasMonitor and animal.health or \"no monitor\", hasMonitor and animal.weight or \"no monitor\", value, valuePerKg, animal.isPregnant and \"yes\" or \"no\", expectedOffspring, (hasMonitor and (animal.isLactating and \"yes\" or \"no\") or \"no monitor\"), hasMonitor and foodInput or \"no monitor\", hasMonitor and waterInput or \"no monitor\", hasMonitor and strawInput or \"no monitor\", hasMonitor and productOutput or \"no monitor\", hasMonitor and manureOutput or \"no monitor\", hasMonitor and liquidManureOutput or \"no monitor\"))\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tfile:close()\r\n\r\n\tInfoDialog.show(modSettingsDirectory .. \"animals.csv\")\r\n\r\nend\r\n\r\n\r\nlocal function getFilesRecursively(path, parent)\r\n\r\n\tlocal files = Files.new(path).files\r\n\r\n\tfor _, file in pairs(files) do\r\n\r\n\t\tif file.isDirectory then\r\n\t\t\r\n\t\t\ttable.insert(parent.folders, { [\"folders\"] = {}, [\"files\"] = {}, [\"name\"] = file.filename, [\"path\"] = file.path })\r\n\t\t\tgetFilesRecursively(file.path, parent.folders[#parent.folders])\r\n\t\t\tcontinue\r\n\r\n\t\tend\r\n\r\n\t\tlocal name = file.filename\r\n\r\n\t\tif #name >= 4 and string.sub(name, #name - 3) == \".xml\" then table.insert(parent.files, { [\"name\"] = name, [\"valid\"] = true }) end\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.onClickChangeAnimalsXML()\r\n\r\n\tlocal files = { { [\"folders\"] = {}, [\"files\"] = {}, [\"name\"] = baseDirectory, [\"path\"] = baseDirectory } }\r\n\r\n\tgetFilesRecursively(baseDirectory, files[1])\r\n\r\n\tFileExplorerDialog.show(files, baseDirectory, RLSettings.onFileExplorerCallback)\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.onFileExplorerCallback(path)\r\n\r\n\tRLSettings.animalsXMLPath = path\r\n\r\nend\r\n\r\n\r\nRLSettings.SETTINGS = {\r\n\r\n\t[\"deathEnabled\"] = {\r\n\t\t[\"index\"] = 1,\r\n\t\t[\"type\"] = \"BinaryOption\",\r\n\t\t[\"dynamicTooltip\"] = true,\r\n\t\t[\"default\"] = 2,\r\n\t\t[\"binaryType\"] = \"offOn\",\r\n\t\t[\"values\"] = { false, true },\r\n\t\t[\"callback\"] = Animal.onSettingChanged\r\n\t},\r\n\r\n\t[\"accidentsChance\"] = {\r\n\t\t[\"index\"] = 2,\r\n\t\t[\"type\"] = \"MultiTextOption\",\r\n\t\t[\"default\"] = 11,\r\n\t\t[\"valueType\"] = \"float\",\r\n\t\t[\"values\"] = { 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0 },\r\n\t\t[\"callback\"] = Animal.onSettingChanged,\r\n\t\t[\"dependancy\"] = {\r\n\t\t\t[\"name\"] = \"deathEnabled\",\r\n\t\t\t[\"state\"] = 2\r\n\t\t}\r\n\t},\r\n\r\n\t[\"foodScale\"] = {\r\n\t\t[\"index\"] = 3,\r\n\t\t[\"type\"] = \"MultiTextOption\",\r\n\t\t[\"default\"] = 2,\r\n\t\t[\"valueType\"] = \"float\",\r\n\t\t[\"values\"] = { 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5 },\r\n\t\t[\"callback\"] = RealisticLivestock_PlaceableHusbandryFood.onSettingChanged\r\n\t},\r\n\r\n\t[\"maxDealerAnimals\"] = {\r\n\t\t[\"index\"] = 4,\r\n\t\t[\"type\"] = \"MultiTextOption\",\r\n\t\t[\"default\"] = 4,\r\n\t\t[\"valueType\"] = \"int\",\r\n\t\t[\"values\"] = { 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 },\r\n\t\t[\"callback\"] = AnimalSystem.onSettingChanged\r\n\t},\r\n\r\n\t[\"resetDealer\"] = {\r\n\t\t[\"index\"] = 5,\r\n\t\t[\"type\"] = \"Button\",\r\n\t\t[\"ignore\"] = true,\r\n\t\t[\"callback\"] = AnimalSystem.onClickResetDealer\r\n\t},\r\n\r\n\t[\"tagColour\"] = {\r\n\t\t[\"index\"] = 6,\r\n\t\t[\"type\"] = \"Button\",\r\n\t\t[\"ignore\"] = true,\r\n\t\t[\"callback\"] = RLSettings.onClickTagColour\r\n\t},\r\n\r\n\t[\"exportCSV\"] = {\r\n\t\t[\"index\"] = 7,\r\n\t\t[\"type\"] = \"Button\",\r\n\t\t[\"ignore\"] = true,\r\n\t\t[\"callback\"] = RLSettings.onClickExportCSV\r\n\t},\r\n\r\n\t[\"maxNumMessages\"] = {\r\n\t\t[\"index\"] = 7,\r\n\t\t[\"type\"] = \"MultiTextOption\",\r\n\t\t[\"default\"] = 5,\r\n\t\t[\"valueType\"] = \"int\",\r\n\t\t[\"values\"] = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1250, 1500, 1750, 2000, 2250, 2500, 2750, 3000, 3500, 4000, 4500, 5000 },\r\n\t\t[\"callback\"] = RealisticLivestock_PlaceableHusbandryAnimals.onSettingChanged\r\n\t},\r\n\r\n\t[\"diseasesEnabled\"] = {\r\n\t\t[\"index\"] = 8,\r\n\t\t[\"type\"] = \"BinaryOption\",\r\n\t\t[\"dynamicTooltip\"] = true,\r\n\t\t[\"default\"] = 2,\r\n\t\t[\"binaryType\"] = \"offOn\",\r\n\t\t[\"values\"] = { false, true },\r\n\t\t[\"callback\"] = DiseaseManager.onSettingChanged\r\n\t},\r\n\r\n\t[\"diseasesChance\"] = {\r\n\t\t[\"index\"] = 9,\r\n\t\t[\"type\"] = \"MultiTextOption\",\r\n\t\t[\"default\"] = 4,\r\n\t\t[\"valueType\"] = \"float\",\r\n\t\t[\"values\"] = { 0.25, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5 },\r\n\t\t[\"callback\"] = DiseaseManager.onSettingChanged,\r\n\t\t[\"dependancy\"] = {\r\n\t\t\t[\"name\"] = \"diseasesEnabled\",\r\n\t\t\t[\"state\"] = 2\r\n\t\t}\r\n\t},\r\n\r\n\t[\"useCustomAnimals\"] = {\r\n\t\t[\"index\"] = 10,\r\n\t\t[\"type\"] = \"BinaryOption\",\r\n\t\t[\"dynamicTooltip\"] = true,\r\n\t\t[\"default\"] = 1,\r\n\t\t[\"binaryType\"] = \"offOn\",\r\n\t\t[\"values\"] = { false, true },\r\n\t\t[\"callback\"] = RLSettings.onSettingChanged\r\n\t},\r\n\r\n\t[\"animalsXML\"] = {\r\n\t\t[\"index\"] = 10,\r\n\t\t[\"type\"] = \"Button\",\r\n\t\t[\"ignore\"] = true,\r\n\t\t[\"callback\"] = RLSettings.onClickChangeAnimalsXML,\r\n\t\t[\"dependancy\"] = {\r\n\t\t\t[\"name\"] = \"useCustomAnimals\",\r\n\t\t\t[\"state\"] = 2\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nRLSettings.BinaryOption = nil\r\nRLSettings.MultiTextOption = nil\r\nRLSettings.Button = nil\r\n\r\n\r\nfunction RLSettings.loadFromXMLFile()\r\n\r\n\tif g_currentMission.missionInfo == nil or g_currentMission.missionInfo.savegameDirectory == nil then return end\r\n\r\n\tlocal path = g_currentMission.missionInfo.savegameDirectory .. \"/rlSettings.xml\"\r\n\r\n\tlocal xmlFile = XMLFile.loadIfExists(\"rlSettings\", path)\r\n\r\n\tif xmlFile ~= nil then\r\n\r\n\t\tlocal key = \"settings\"\r\n\t\t\t\r\n\t\tfor name, setting in pairs(RLSettings.SETTINGS) do\r\n\r\n\t\t\tif setting.ignore then continue end\r\n\r\n\t\t\tsetting.state = xmlFile:getInt(key .. \".\" .. name .. \"#value\", setting.default)\r\n\r\n\t\t\tif setting.state > #setting.values then setting.state = #setting.values end\r\n\r\n\t\t\tif name == \"useCustomAnimals\" and setting.state == 2 then RLSettings.animalsXMLPath = xmlFile:getString(\"settings.useCustomAnimals#path\") end\r\n\r\n\t\tend\r\n\r\n\t\txmlFile:delete()\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.saveToXMLFile(name, state)\r\n\r\n\tif RLSettings.isSaving or g_currentMission.missionInfo == nil or g_currentMission.missionInfo.savegameDirectory == nil then return end\r\n\r\n\tif g_server ~= nil then\r\n\r\n\t\tRLSettings.isSaving = true\r\n\r\n\t\tlocal path = g_currentMission.missionInfo.savegameDirectory .. \"/rlSettings.xml\"\r\n\t\tlocal xmlFile = XMLFile.create(\"rlSettings\", path, \"settings\")\r\n\r\n\t\tif xmlFile ~= nil then\r\n\r\n\t\t\tfor settingName, setting in pairs(RLSettings.SETTINGS) do\r\n\r\n\t\t\t\tif setting.ignore then continue end\r\n\t\t\t\txmlFile:setInt(\"settings.\" .. settingName .. \"#value\", setting.state or setting.default)\r\n\r\n\t\t\t\tif settingName == \"useCustomAnimals\" and setting.state == 2 and RLSettings.animalsXMLPath ~= nil then xmlFile:setString(\"settings.useCustomAnimals#path\", RLSettings.animalsXMLPath) end\r\n\r\n\t\t\tend\r\n\r\n\t\t\tlocal saved = xmlFile:save(false, true)\r\n\r\n\t\t\txmlFile:delete()\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tRLSettings.isSaving = false\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.initialize()\r\n\r\n\tif g_server ~= nil then RLSettings.loadFromXMLFile() end\r\n\r\n\tlocal settingsPage = g_inGameMenu.pageSettings\r\n\tlocal scrollPanel = settingsPage.gameSettingsLayout\r\n\r\n\tlocal sectionHeader, binaryOptionElement, multiOptionElement, buttonElement\r\n\r\n\tfor _, element in pairs(scrollPanel.elements) do\r\n\r\n\t\tif element.name == \"sectionHeader\" and sectionHeader == nil then sectionHeader = element:clone(scrollPanel) end\r\n\r\n\t\tif element.typeName == \"Bitmap\" then\r\n\r\n\t\t\tif element.elements[1].typeName == \"BinaryOption\" and binaryOptionElement == nil then binaryOptionElement = element end\r\n\r\n\t\t\tif element.elements[1].typeName == \"MultiTextOption\" and multiOptionElement == nil then multiOptionElement = element end\r\n\r\n\t\t\tif element.elements[1].typeName == \"Button\" and buttonElement == nil then buttonElement = element end\r\n\r\n\t\tend\r\n\r\n\t\tif multiOptionElement and binaryOptionElement and sectionHeader and buttonElement then break end\t\r\n\r\n\tend\r\n\r\n\tif multiOptionElement == nil or binaryOptionElement == nil or sectionHeader == nil or buttonElement == nil then return end\r\n\r\n\tRLSettings.BinaryOption = binaryOptionElement\r\n\tRLSettings.MultiTextOption  = multiOptionElement\r\n\tRLSettings.Button = buttonElement\r\n\r\n\tlocal prefix = \"rl_settings_\"\r\n\r\n\tsectionHeader:setText(g_i18n:getText(\"rl_settings\"))\r\n\r\n\tlocal maxIndex = 0\r\n\r\n\tfor _, setting in pairs(RLSettings.SETTINGS) do maxIndex = maxIndex < setting.index and setting.index or maxIndex end\r\n\r\n\tfor i = 1, maxIndex do\r\n\r\n\t\tfor name, setting in pairs(RLSettings.SETTINGS) do\r\n\r\n\t\t\tif setting.index ~= i then continue end\r\n\t\r\n\t\t\tsetting.state = setting.state or setting.default\r\n\t\t\tlocal template = RLSettings[setting.type]:clone(scrollPanel)\r\n\t\t\tlocal settingsPrefix = \"rl_settings_\" .. name .. \"_\"\r\n\t\t\ttemplate.id = nil\r\n\t\t\r\n\t\t\tfor _, element in pairs(template.elements) do\r\n\r\n\t\t\t\tif element.typeName == \"Text\" then\r\n\t\t\t\t\telement:setText(g_i18n:getText(settingsPrefix .. \"label\"))\r\n\t\t\t\t\telement.id = nil\r\n\t\t\t\tend\r\n\r\n\t\t\t\tif element.typeName == setting.type then\r\n\r\n\t\t\t\t\tif setting.type == \"Button\" then\r\n\t\t\t\t\t\telement:setText(g_i18n:getText(settingsPrefix .. \"text\"))\r\n\t\t\t\t\t\telement:applyProfile(\"rl_settingsButton\")\r\n\t\t\t\t\t\telement.isAlwaysFocusedOnOpen = false\r\n\t\t\t\t\t\telement.focused = false\r\n\t\t\t\t\telse\r\n\r\n\t\t\t\t\t\tlocal texts = {}\r\n\r\n\t\t\t\t\t\tif setting.binaryType == \"offOn\" then\r\n\t\t\t\t\t\t\ttexts[1] = g_i18n:getText(\"rl_settings_off\")\r\n\t\t\t\t\t\t\ttexts[2] = g_i18n:getText(\"rl_settings_on\")\r\n\t\t\t\t\t\telse\r\n\r\n\t\t\t\t\t\t\tfor i, value in pairs(setting.values) do\r\n\r\n\t\t\t\t\t\t\t\tif setting.valueType == \"int\" then\r\n\t\t\t\t\t\t\t\t\ttexts[i] = tostring(value)\r\n\t\t\t\t\t\t\t\telseif setting.valueType == \"float\" then\r\n\t\t\t\t\t\t\t\t\ttexts[i] = string.format(\"%.0f%%\", value * 100)\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\ttexts[i] = g_i18n:getText(settingsPrefix .. \"texts_\" .. i)\r\n\t\t\t\t\t\t\t\tend\r\n\t\t\t\t\t\t\tend\r\n\r\n\t\t\t\t\t\tend\r\n\r\n\t\t\t\t\t\telement:setTexts(texts)\r\n\t\t\t\t\t\telement:setState(setting.state)\r\n\r\n\t\t\t\t\t\tif setting.dynamicTooltip then\r\n\t\t\t\t\t\t\telement.elements[1]:setText(g_i18n:getText(settingsPrefix .. \"tooltip_\" .. setting.state))\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\telement.elements[1]:setText(g_i18n:getText(settingsPrefix .. \"tooltip\"))\r\n\t\t\t\t\t\tend\r\n\r\n\t\t\t\t\tend\r\n\r\n\t\t\t\t\telement.id = \"rls_\" .. name\r\n\t\t\t\t\telement.onClickCallback = RLSettings.onSettingChanged\r\n\r\n\t\t\t\t\tsetting.element = element\r\n\r\n\t\t\t\t\tif setting.dependancy then\r\n\t\t\t\t\t\tlocal dependancy = RLSettings.SETTINGS[setting.dependancy.name]\r\n\t\t\t\t\t\tif dependancy ~= nil and dependancy.element ~= nil then element:setDisabled(dependancy.state ~= setting.dependancy.state) end\r\n\t\t\t\t\tend\r\n\r\n\t\t\t\tend\r\n\t\t\t\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.onSettingChanged(_, state, button)\r\n\r\n\tif button == nil then button = state end\r\n\r\n\tif button == nil or button.id == nil then return end\r\n\r\n\tif not string.contains(button.id, \"rls_\") then return end\r\n\r\n\tlocal name = string.sub(button.id, 5)\r\n\tlocal setting = RLSettings.SETTINGS[name]\r\n\r\n\tif setting == nil then return end\r\n\r\n\tif setting.ignore then\r\n\t\tif setting.callback then setting.callback() end\r\n\t\treturn\r\n\tend\r\n\r\n\tif setting.callback then setting.callback(name, setting.values[state]) end\r\n\r\n\tsetting.state = state\r\n\r\n\tfor _, s in pairs(RLSettings.SETTINGS) do\r\n\t\tif s.dependancy and s.dependancy.name == name then\r\n\t\t\ts.element:setDisabled(s.dependancy.state ~= state)\r\n\t\tend\r\n\tend\r\n\r\n\tif setting.dynamicTooltip and setting.element ~= nil then setting.element.elements[1]:setText(g_i18n:getText(\"rl_settings_\" .. name .. \"_tooltip_\" .. setting.state)) end\r\n\r\n\tif g_server ~= nil then\r\n\r\n\t\t--RLSettings.saveToXMLFile(name, state)\r\n\r\n\telse\r\n\r\n\t\t--RL_BroadcastSettingsEvent.sendEvent(name)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.applyDefaultSettings()\r\n\r\n\tif g_server == nil then\r\n\r\n\t\t--RL_BroadcastSettingsEvent.sendEvent()\r\n\r\n\telse\r\n\r\n\t\tfor name, setting in pairs(RLSettings.SETTINGS) do\r\n\t\t\r\n\t\t\tif setting.ignore then continue end\r\n\r\n\t\t\tif setting.callback ~= nil then setting.callback(name, setting.values[setting.state]) end\r\n\r\n\t\t\tif setting.dynamicTooltip and setting.element ~= nil then setting.element.elements[1]:setText(g_i18n:getText(\"rl_settings_\" .. name .. \"_tooltip_\" .. setting.state)) end\r\n\r\n\t\t\tfor _, s in pairs(RLSettings.SETTINGS) do\r\n\t\t\t\tif s.dependancy and s.dependancy.name == name and s.element ~= nil then\r\n\t\t\t\t\ts.element:setDisabled(s.dependancy.state ~= state)\r\n\t\t\t\tend\r\n\t\t\tend\r\n\t\tend\r\n\r\n\tend\r\nend\r\n\r\n\r\nfunction RLSettings.getAnimalsXMLPath()\r\n\t\r\n\tif RLSettings.customAnimals == nil then return nil end\r\n\r\n\treturn RLSettings.customAnimals.basePath .. RLSettings.customAnimals.animals\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.getFillTypesXMLPath()\r\n\t\r\n\tif RLSettings.customAnimals == nil then return nil end\r\n\r\n\treturn RLSettings.customAnimals.basePath .. RLSettings.customAnimals.fillTypes\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.getTranslationsFolderPath()\r\n\t\r\n\tif RLSettings.customAnimals == nil then return nil end\r\n\r\n\treturn RLSettings.customAnimals.basePath .. RLSettings.customAnimals.translations\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.getAnimalsBasePath()\r\n\t\r\n\tif RLSettings.customAnimals == nil then return nil end\r\n\r\n\treturn RLSettings.customAnimals.basePath\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.getOverrideVanillaAnimals()\r\n\r\n\tif RLSettings.customAnimals == nil then return false end\r\n\r\n\treturn RLSettings.customAnimals.override\r\n\r\nend\r\n\r\n\r\nfunction RLSettings.validateCustomAnimalsConfiguration()\r\n\r\n\tif RLSettings.SETTINGS.useCustomAnimals.state == 1 or RLSettings.animalsXMLPath == nil or g_currentMission.missionDynamicInfo.isMultiplayer then return end\r\n\r\n\tlocal xmlFile = XMLFile.loadIfExists(\"customAnimalsConfig\", RLSettings.animalsXMLPath)\r\n\r\n\tif xmlFile == nil then return end\r\n\r\n\tlocal basePath\r\n\tlocal splitPath = string.split(RLSettings.animalsXMLPath, \"/\")\r\n\r\n\tfor i = #splitPath, 1, -1 do\r\n\r\n\t\tlocal path = table.concat(splitPath, \"/\", 1, i)\r\n\r\n\t\tif path == baseDirectory then\r\n\t\t\tbasePath = table.concat(splitPath, \"/\", 1, i + 1) .. \"/\"\r\n\t\t\tbreak\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tif basePath == nil then return end\r\n\r\n\tRLSettings.customAnimals = {\r\n\t\t[\"basePath\"] = basePath,\r\n\t\t[\"animals\"] = xmlFile:getString(\"RealisticLivestock#animals\", \"animals.xml\"),\r\n\t\t[\"fillTypes\"] = xmlFile:getString(\"RealisticLivestock#fillTypes\", \"fillTypes.xml\"),\r\n\t\t[\"translations\"] = xmlFile:getString(\"RealisticLivestock#translations\", \"l10n/\"),\r\n\t\t[\"override\"] = xmlFile:getBool(\"RealisticLivestock#override\", false)\r\n\t}\r\n\r\n\txmlFile:delete()\r\n\r\n\tlocal l10nNames = {\r\n\t\tg_languageShort,\r\n\t\t\"en\",\r\n\t\t\"de\"\r\n\t}\r\n\r\n\tlocal l10nXML\r\n\t\r\n\tfor _, l10nName in pairs(l10nNames) do\r\n\t\tl10nXML = XMLFile.loadIfExists(\"l10n\", basePath .. RLSettings.customAnimals.translations .. \"_\" .. l10nName .. \".xml\")\r\n\t\tif l10nXML ~= nil then break end\r\n\tend\r\n\r\n\tif l10nXML ~= nil then\r\n\r\n\t\tl10nXML:iterate(\"l10n.texts.text\", function(_, key)\r\n\t\t\r\n\t\t\tlocal name = l10nXML:getString(key .. \"#name\")\r\n\t\t\tlocal text = l10nXML:getString(key .. \"#text\")\r\n\r\n\t\t\tif name ~= nil and text ~= nil then\r\n\t\t\t\t\r\n\t\t\t\tif g_i18n:hasModText(name) then\r\n\t\t\t\t\tprintWarning(\"Warning: Duplicate l10n entry \\'\" .. name .. \"\\'. Ignoring this definition.\")\r\n\t\t\t\telse\r\n\t\t\t\t\tg_i18n:setText(name, text:gsub(\"\\r\\n\", \"\\n\"))\r\n\t\t\t\tend\r\n\t\t\t\r\n\t\t\tend\r\n\t\t\r\n\t\tend)\r\n\r\n\t\tl10nXML:delete()\r\n\r\n\tend\r\n\r\n\tlocal fillTypesXML = loadXMLFile(\"fillTypes\", basePath .. RLSettings.customAnimals.fillTypes)\r\n\tg_fillTypeManager:loadFillTypes(fillTypesXML, basePath, false, modName)\r\n\r\nend"
  },
  {
    "path": "src/RL_BroadcastSettingsEvent.lua",
    "content": "RL_BroadcastSettingsEvent = {}\r\n\r\nlocal RL_BroadcastSettingsEvent_mt = Class(RL_BroadcastSettingsEvent, Event)\r\nInitEventClass(RL_BroadcastSettingsEvent, \"RL_BroadcastSettingsEvent\")\r\n\r\n\r\nfunction RL_BroadcastSettingsEvent.emptyNew()\r\n    local self = Event.new(RL_BroadcastSettingsEvent_mt)\r\n    return self\r\nend\r\n\r\n\r\nfunction RL_BroadcastSettingsEvent.new(setting)\r\n\r\n    local self = RL_BroadcastSettingsEvent.emptyNew()\r\n\r\n    self.setting = setting\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction RL_BroadcastSettingsEvent:readStream(streamId, connection)\r\n    \r\n    local readAll = streamReadBool(streamId)\r\n\r\n    if readAll then\r\n\r\n        for _, setting in pairs(RLSettings.SETTINGS) do\r\n\r\n            if setting.ignore then continue end\r\n            \r\n            local name = streamReadString(streamId)\r\n            local state = streamReadUInt8(streamId)\r\n\r\n            RLSettings.SETTINGS[name].state = state\r\n\r\n        end\r\n\r\n    else\r\n            \r\n        local name = streamReadString(streamId)\r\n        local state = streamReadUInt8(streamId)\r\n\r\n        RLSettings.SETTINGS[name].state = state\r\n        self.setting = name\r\n\r\n    end\r\n\r\n    self:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction RL_BroadcastSettingsEvent:writeStream(streamId, connection)\r\n        \r\n    streamWriteBool(streamId, self.setting == nil)\r\n\r\n    if self.setting == nil then\r\n\r\n        for name, setting in pairs(RLSettings.SETTINGS) do\r\n            if setting.ignore then continue end\r\n            streamWriteString(streamId, name)\r\n            streamWriteUInt8(streamId, setting.state)\r\n        end\r\n\r\n    else\r\n\r\n        local setting = RLSettings.SETTINGS[self.setting]\r\n        streamWriteString(streamId, self.setting)\r\n        streamWriteUInt8(streamId, setting.state)\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction RL_BroadcastSettingsEvent:run(connection)\r\n\r\n    if self.setting == nil then\r\n\r\n        for name, setting in pairs(RLSettings.SETTINGS) do\r\n            if setting.ignore then continue end\r\n            setting.element:setState(setting.state)\r\n            if setting.callback ~= nil then setting.callback(name, setting.values[setting.state]) end \r\n        end\r\n\r\n    else\r\n            \r\n        local setting = RLSettings.SETTINGS[self.setting]\r\n        if setting.element ~= nil then setting.element:setState(setting.state) end\r\n        if setting.callback ~= nil then setting.callback(self.setting, setting.values[setting.state]) end\r\n\r\n        if setting.dynamicTooltip and setting.element ~= nil then setting.element.elements[1]:setText(g_i18n:getText(\"rl_settings_\" .. self.setting .. \"_tooltip_\" .. setting.state)) end\r\n\r\n\t\tfor _, s in pairs(RLSettings.SETTINGS) do\r\n\t\t\tif s.dependancy and s.dependancy.name == self.setting and s.element ~= nil then\r\n\t\t\t\ts.element:setDisabled(s.dependancy.state ~= state)\r\n\t\t\tend\r\n\t\tend\r\n\r\n        if g_server ~= nil then RLSettings.saveToXMLFile() end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction RL_BroadcastSettingsEvent.sendEvent(setting)\r\n\tif g_server ~= nil then\r\n\t\tg_server:broadcastEvent(RL_BroadcastSettingsEvent.new(setting))\r\n\telse\r\n\t\tg_client:getServerConnection():sendEvent(RL_BroadcastSettingsEvent.new(setting))\r\n\tend\r\nend"
  },
  {
    "path": "src/RealisticLivestock.lua",
    "content": "RealisticLivestock = {}\r\n\r\nlocal modDirectory = g_currentModDirectory\r\nlocal hasLoaded = false\r\n\r\n\r\nRealisticLivestock.FONTS = g_fontManager:loadFontsFromXMLFile(g_currentModDirectory .. \"fonts/fonts.xml\", g_currentModDirectory)\r\n\r\n\r\nRealisticLivestock.MARKS = {\r\n    [\"AI_MANAGER_SELL\"] = {\r\n        [\"key\"] = \"AI_MANAGER_SELL\",\r\n        [\"active\"] = false,\r\n        [\"priority\"] = 3,\r\n        [\"text\"] = \"aiManager_sell\"\r\n    },\r\n    [\"AI_MANAGER_CASTRATE\"] = {\r\n        [\"key\"] = \"AI_MANAGER_CASTRATE\",\r\n        [\"active\"] = false,\r\n        [\"priority\"] = 5,\r\n        [\"text\"] = \"aiManager_castrate\"\r\n    },\r\n    [\"AI_MANAGER_DISEASE\"] = {\r\n        [\"key\"] = \"AI_MANAGER_DISEASE\",\r\n        [\"active\"] = false,\r\n        [\"priority\"] = 2,\r\n        [\"text\"] = \"aiManager_disease\"\r\n    },\r\n    [\"AI_MANAGER_INSEMINATE\"] = {\r\n        [\"key\"] = \"AI_MANAGER_INSEMINATE\",\r\n        [\"active\"] = false,\r\n        [\"priority\"] = 4,\r\n        [\"text\"] = \"aiManager_ai\"\r\n    },\r\n    [\"PLAYER\"] = {\r\n        [\"key\"] = \"PLAYER\",\r\n        [\"active\"] = false,\r\n        [\"priority\"] = 1,\r\n        [\"text\"] = \"player\"\r\n    }\r\n}\r\n\r\n\r\nRealisticLivestock.MAP_TO_AREA_CODE = {\r\n    [\"Riverbend Springs\"] = 2,\r\n    [\"Hutan Pantai\"] = 3,\r\n    [\"Zielonka\"] = 5,\r\n    [\"Zacieczki\"] = 5,\r\n    [\"Szpakowo\"] = 5,\r\n    [\"Pallegney\"] = 4,\r\n    [\"Oberschwaben\"] = 6,\r\n    [\"Starowies\"] = 5,\r\n    [\"Lipinki\"] = 5,\r\n    [\"Rhönplateu\"] = 6,\r\n    [\"Schwesing Bahnhof\"] = 6,\r\n    [\"Riverview\"] = 1,\r\n    [\"Sobolewo\"] = 5,\r\n    [\"Tässi Farm\"] = 8,\r\n    [\"HORSCH AgroVation\"] = 10,\r\n    [\"New Bartelshagenn\"] = 6,\r\n    [\"HermannsHausen\"] = 5,\r\n    [\"Oak Bridge Farm\"] = 1,\r\n    [\"Calmsden Farm\"] = 1,\r\n    [\"Frankenmuth Farming Map\"] = 2,\r\n    [\"North Frisian 25\"] = 6,\r\n    [\"Alma, Missouri\"] = 2,\r\n    [\"Michigan Map\"] = 2\r\n}\r\n\r\nRealisticLivestock.AREA_CODES = {\r\n    [1] = {\r\n        [\"code\"] = \"UK\",\r\n        [\"country\"] = \"United Kingdom\"\r\n    },\r\n    [2] = {\r\n        [\"code\"] = \"US\",\r\n        [\"country\"] = \"United States\"\r\n    },\r\n    [3] = {\r\n        [\"code\"] = \"CH\",\r\n        [\"country\"] = \"China\"\r\n    },\r\n    [4] = {\r\n        [\"code\"] = \"FR\",\r\n        [\"country\"] = \"France\"\r\n    },\r\n    [5] = {\r\n        [\"code\"] = \"PL\",\r\n        [\"country\"] = \"Poland\"\r\n    },\r\n    [6] = {\r\n        [\"code\"] = \"DE\",\r\n        [\"country\"] = \"Germany\"\r\n    },\r\n    [7] = {\r\n        [\"code\"] = \"CA\",\r\n        [\"country\"] = \"Canada\"\r\n    },\r\n    [8] = {\r\n        [\"code\"] = \"EE\",\r\n        [\"country\"] = \"Estonia\"\r\n    },\r\n    [9] = {\r\n        [\"code\"] = \"IT\",\r\n        [\"country\"] = \"Italy\"\r\n    },\r\n    [10] = {\r\n        [\"code\"] = \"CZ\",\r\n        [\"country\"] = \"Czech Republic\"\r\n    },\r\n    [11] = {\r\n        [\"code\"] = \"RU\",\r\n        [\"country\"] = \"Russia\"\r\n    },\r\n    [12] = {\r\n        [\"code\"] = \"SW\",\r\n        [\"country\"] = \"Sweden\"\r\n    },\r\n    [13] = {\r\n        [\"code\"] = \"NO\",\r\n        [\"country\"] = \"Norway\"\r\n    },\r\n    [14] = {\r\n        [\"code\"] = \"FI\",\r\n        [\"country\"] = \"Finland\"\r\n    },\r\n    [15] = {\r\n        [\"code\"] = \"JP\",\r\n        [\"country\"] = \"Japan\"\r\n    },\r\n    [16] = {\r\n        [\"code\"] = \"SP\",\r\n        [\"country\"] = \"Spain\"\r\n    }\r\n}\r\n\r\n\r\nRealisticLivestock.ALPHABET = {\r\n    [\"0\"] = 0,\r\n    [\"1\"] = 1,\r\n    [\"2\"] = 2,\r\n    [\"3\"] = 3,\r\n    [\"4\"] = 4,\r\n    [\"5\"] = 5,\r\n    [\"6\"] = 6,\r\n    [\"7\"] = 7,\r\n    [\"8\"] = 8,\r\n    [\"9\"] = 9,\r\n    [\"A\"] = 10,\r\n    [\"B\"] = 11,\r\n    [\"C\"] = 12,\r\n    [\"D\"] = 13,\r\n    [\"E\"] = 14,\r\n    [\"F\"] = 15,\r\n    [\"G\"] = 16,\r\n    [\"H\"] = 17,\r\n    [\"I\"] = 18,\r\n    [\"J\"] = 19,\r\n    [\"K\"] = 20,\r\n    [\"L\"] = 21,\r\n    [\"M\"] = 22,\r\n    [\"N\"] = 23,\r\n    [\"O\"] = 24,\r\n    [\"P\"] = 25,\r\n    [\"Q\"] = 26,\r\n    [\"R\"] = 27,\r\n    [\"S\"] = 28,\r\n    [\"T\"] = 29,\r\n    [\"U\"] = 30,\r\n    [\"V\"] = 31,\r\n    [\"W\"] = 32,\r\n    [\"X\"] = 33,\r\n    [\"Y\"] = 34,\r\n    [\"Z\"] = 35,\r\n    [\"/\"] = 36,\r\n    [\"-\"] = 37\r\n}\r\n\r\n\r\nRealisticLivestock.NUM_CHARACTERS = 64\r\n\r\n\r\nRealisticLivestock.DAYS_PER_MONTH = {\r\n    [1] = 31,\r\n    [2] = 28,\r\n    [3] = 31,\r\n    [4] = 30,\r\n    [5] = 31,\r\n    [6] = 30,\r\n    [7] = 31,\r\n    [8] = 31,\r\n    [9] = 30,\r\n    [10] = 31,\r\n    [11] = 30,\r\n    [12] = 31\r\n}\r\n\r\n\r\nRealisticLivestock.START_YEAR = {\r\n    [\"FULL\"] = 2024,\r\n    [\"PARTIAL\"] = 24\r\n}\r\n\r\n\r\n\r\n\r\ntable.insert(FinanceStats.statNames, \"herdsmanWages\")\r\nFinanceStats.statNameToIndex[\"herdsmanWages\"] = #FinanceStats.statNames\r\ntable.insert(FinanceStats.statNames, \"semenPurchase\")\r\nFinanceStats.statNameToIndex[\"semenPurchase\"] = #FinanceStats.statNames\r\ntable.insert(FinanceStats.statNames, \"medicine\")\r\nFinanceStats.statNameToIndex[\"medicine\"] = #FinanceStats.statNames\r\n\r\n\r\n\r\nfunction RealisticLivestock.loadMap()\r\n    \r\n    RealisticLivestock.mapAreaCode = RealisticLivestock.MAP_TO_AREA_CODE[g_currentMission.missionInfo.mapTitle] or 1\r\n\tg_overlayManager:addTextureConfigFile(modDirectory .. \"gui/helpicons.xml\", \"rlHelpIcons\")\r\n    g_overlayManager:addTextureConfigFile(modDirectory .. \"gui/icons.xml\", \"realistic_livestock\")\r\n    g_overlayManager:addTextureConfigFile(modDirectory .. \"gui/fileTypeIcons.xml\", \"fileTypeIcons\")\r\n    g_rlConsoleCommandManager = RLConsoleCommandManager.new()\r\n    g_diseaseManager = DiseaseManager.new()\r\n\r\n    MoneyType.HERDSMAN_WAGES = MoneyType.register(\"herdsmanWages\", \"rl_ui_herdsmanWages\")\r\n    MoneyType.LAST_ID = MoneyType.LAST_ID + 1\r\n\r\n    MoneyType.SEMEN_PURCHASE = MoneyType.register(\"semenPurchase\", \"rl_ui_semenPurchase\")\r\n    MoneyType.LAST_ID = MoneyType.LAST_ID + 1\r\n\r\n    MoneyType.MEDICINE = MoneyType.register(\"medicine\", \"rl_ui_medicine\")\r\n    MoneyType.LAST_ID = MoneyType.LAST_ID + 1\r\n\r\nend\r\n\r\n\r\n\r\naddModEventListener(RealisticLivestock)\r\n\r\n\r\nfunction RealisticLivestock.getMapCountryCode()\r\n    \r\n    local areaCode = RealisticLivestock.AREA_CODES[RealisticLivestock.mapAreaCode]\r\n\r\n    if areaCode ~= nil then return areaCode.code end\r\n\r\n    return \"UK\"\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock.getMapCountryIndex()\r\n\r\n    return RealisticLivestock.mapAreaCode or 1\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock.formatAge(age)\r\n\r\n    local years = math.floor(age / 12)\r\n    local months = age % 12\r\n\r\n    local monthsString = months == 1 and g_i18n:getText(\"rl_ui_month\") or g_i18n:getText(\"rl_ui_months\")\r\n\r\n    if years > 0 then return string.format(\"%s %s, %s %s\", years, years == 1 and g_i18n:getText(\"rl_ui_year\") or g_i18n:getText(\"rl_ui_years\"), months, monthsString) end\r\n\r\n    return string.format(\"%s %s\", months, monthsString)\r\n\r\nend\r\n\r\n\r\n\r\n-- #################################################\r\n-- THE MAJORITY OF THIS FILE IS LEGACY AND IS UNUSED\r\n-- #################################################\r\n\r\n\r\n\r\n\r\nfunction RealisticLivestock:updateReproduction(spec, cluster, numNewAnimals, freeSlots, isServer)\r\n\r\n    local totalOffspring = 0\r\n    local totalParents = cluster.numAnimals\r\n    local parentAge = cluster.age\r\n    local parentHealth = cluster.health\r\n    local animalType = spec.animalTypeIndex\r\n    local lactatingAnimals = 0\r\n    local isParent = cluster.isParent\r\n\r\n    for i = 1, totalParents do\r\n        local childNumProb = 500\r\n        local childNum = 1\r\n        local noChildProb = 50\r\n        local deathChance = 10\r\n        local parentDied = false\r\n        local deathChanceProb = math.random(1, 1000)\r\n\r\n        if parentHealth <= 60 then\r\n            childNumProb = math.random(0, 250)\r\n            deathChance = 135\r\n        elseif parentHealth <= 75 then\r\n            childNumProb = math.random(10, 500)\r\n            deathChance = 60\r\n        elseif parentHealth <= 90 then\r\n            childNumProb = math.random(50, 900)\r\n            deathChance = 15\r\n        else\r\n            childNumProb = math.random(70, 1000)\r\n            deathChance = 3\r\n        end\r\n\r\n        if animalType == AnimalType.COW then\r\n            if parentAge <= 28 then\r\n                noChildProb = 40\r\n                deathChance = deathChance + 4\r\n            elseif parentAge <= 36 then\r\n                noChildProb = 32\r\n                deathChance = deathChance - 10\r\n            elseif parentAge <= 48 then\r\n                noChildProb = 24\r\n                deathChance = deathChance -8\r\n            elseif parentAge <= 60 then\r\n                noChildProb = 21\r\n                deathChance = deathChance - 2\r\n            elseif parentAge <= 84 then\r\n                noChildProb = 70\r\n                deathChance = deathChance + 4\r\n            elseif parentAge <= 108 then\r\n                noChildProb = 220\r\n                deathChance = deathChance + 8\r\n            elseif parentAge <= 132 then\r\n                noChildProb = 460\r\n                deathChance = deathChance + 20\r\n            else\r\n                noChildProb = 1000\r\n            end\r\n\r\n            if deathChanceProb <= deathChance then\r\n                noChildProb = noChildProb * (1.1 + math.random())\r\n                parentDied = true\r\n            end\r\n\r\n            if childNumProb <= noChildProb then\r\n                childNum = 0\r\n                if not parentDied and math.random() <= 0.08 then lactatingAnimals = lactatingAnimals + 1 end\r\n            elseif childNumProb >= 950 and childNumProb <= 997 then\r\n                childNum = 2\r\n                lactatingAnimals = lactatingAnimals + 1\r\n            elseif childNumProb >= 997 then\r\n                childNum = 3\r\n                lactatingAnimals = lactatingAnimals + 1\r\n            else\r\n                lactatingAnimals = lactatingAnimals + 1\r\n            end\r\n        elseif animalType == AnimalType.PIG then\r\n            if parentAge <= 12 then\r\n                noChildProb = 60\r\n                deathChance = deathChance + 3\r\n            elseif parentAge <= 36 then\r\n                noChildProb = 40\r\n                deathChance = deathChance - 4\r\n            elseif parentAge <= 60 then\r\n                noChildProb = 0130\r\n                deathChance = deathChance - 3\r\n            elseif parentAge <= 80 then\r\n                noChildProb = 250\r\n                deathChance = deathChance + 2\r\n            elseif parentAge <= 96 then\r\n                noChildProb = 460\r\n                deathChance = deathChance + 10\r\n            else\r\n                noChildProb = 1000\r\n            end\r\n\r\n            if deathChanceProb <= deathChance then\r\n                noChildProb = noChildProb * (1.1 + math.random())\r\n                parentDied = true\r\n            end\r\n\r\n            if childNumProb <= noChildProb then\r\n                childNum = 0\r\n            elseif childNumProb <= 90 then\r\n                childNum = math.random(1, 6)\r\n            elseif childNumProb <= 240 then\r\n                childNum = math.random(7, 10)\r\n            elseif childNumProb <= 850 then\r\n                childNum = math.random(11, 13)\r\n            else\r\n                childNum = math.random(14, 16)\r\n            end\r\n        elseif animalType == AnimalType.HORSE then\r\n            if parentAge <= 12 then\r\n                noChildProb = 60\r\n                deathChance = deathChance - 7\r\n            elseif parentAge <= 48 then\r\n                noChildProb = 50\r\n                deathChance = deathChance - 6\r\n            elseif parentAge <= 60 then\r\n                noChildProb = 65\r\n                deathChance = deathChance - 4\r\n            elseif parentAge <= 84 then\r\n                noChildProb = 85\r\n                deathChance = deathChance - 1\r\n            elseif parentAge <= 108 then\r\n                noChildProb = 120\r\n                deathChance = deathChance + 1\r\n            elseif parentAge <= 132 then\r\n                noChildProb = 160\r\n                deathChance = deathChance + 3\r\n            elseif parentAge <= 156 then\r\n                noChildProb = 220\r\n                deathChance = deathChance + 6\r\n            elseif parentAge <= 180 then\r\n                noChildProb = 290\r\n                deathChance = deathChance + 8\r\n            elseif parentAge <= 216 then\r\n                noChildProb = 460\r\n                deathChance = deathChance + 10\r\n            elseif parentAge <= 240 then\r\n                noChildProb = 630\r\n                deathChance = deathChance + 15\r\n            elseif parentAge <= 264 then\r\n                noChildProb = 850\r\n                deathChance = deathChance + 20\r\n            else\r\n                noChildProb = 1000\r\n            end\r\n\r\n            if deathChanceProb <= deathChance then\r\n                noChildProb = noChildProb * (1.1 + math.random())\r\n                parentDied = true\r\n            end\r\n\r\n            if childNumProb <= noChildProb then\r\n                childNum = 0\r\n            elseif childNumProb >= 955 and childNumProb <= 997 then\r\n                childNum = 2\r\n            elseif childNumProb >= 997 then\r\n                childNum = 3\r\n            end\r\n        elseif animalType == AnimalType.CHICKEN then\r\n            if parentAge <= 12 then\r\n                noChildProb = 400\r\n            elseif parentAge <= 24 then\r\n                noChildProb = 440\r\n            elseif parentAge <= 36 then\r\n                noChildProb = 500\r\n            elseif parentAge <= 48 then\r\n                noChildProb = 580\r\n            elseif parentAge <= 60 then\r\n                noChildProb = 675\r\n            elseif parentAge <= 84 then\r\n                noChildProb = 820\r\n            elseif parentAge <= 120 then\r\n                noChildProb = 960\r\n            else\r\n                noChildProb = 1000\r\n            end\r\n\r\n            if childNumProb <= noChildProb then\r\n                childNum = 0\r\n            elseif childNumProb <= 480 then\r\n                childNum = math.random(1, 5)\r\n            elseif childNumProb <= 760 then\r\n                childNum = math.random(5, 7)\r\n            elseif childNumProb <= 920 then\r\n                childNum = math.random(7, 9)\r\n            else\r\n                childNum = math.random(10, 12)\r\n            end\r\n        elseif animalType == AnimalType.SHEEP then\r\n            if parentAge <= 18 then\r\n                noChildProb = 280\r\n                deathChance = deathChance - 1\r\n            elseif parentAge <= 24 then\r\n                noChildProb = 220\r\n                deathChance = deathChance - 3\r\n            elseif parentAge <= 36 then\r\n                noChildProb = 180\r\n                deathChance = deathChance - 5\r\n            elseif parentAge <= 72 then\r\n                noChildProb = 140\r\n                deathChance = deathChance - 7\r\n            elseif parentAge <= 84 then\r\n                noChildProb = 320\r\n                deathChance = deathChance - 1\r\n            elseif parentAge <= 108 then\r\n                noChildProb = 600\r\n                deathChance = deathChance + 5\r\n            elseif parentAge <= 120 then\r\n                noChildProb = 870\r\n                deathChance = deathChance + 10\r\n            else\r\n                noChildProb = 1000\r\n            end\r\n\r\n            if deathChanceProb <= deathChance then\r\n                noChildProb = noChildProb * (1.1 + math.random())\r\n                parentDied = true\r\n            end\r\n\r\n            if childNumProb <= noChildProb then\r\n                childNum = 0\r\n            elseif not isParent and childNumProb <= 870 then\r\n                childNum = 1\r\n            elseif parentAge < 36 and childNumProb >= 500 and childNumProb <= 965 then\r\n                childNum = 2\r\n            elseif parentAge >= 36 and parentAge < 72 and childNumProb >= 350 and childNumProb <= 920 then\r\n                childNum = 2\r\n            elseif parentAge >= 72 and childNumProb <= 980 then\r\n                childNum = 2\r\n            elseif parentAge < 36 and childNumProb >= 965 then\r\n                childNum = 3\r\n            elseif parentAge >= 36 and parentAge < 72 and childNumProb >= 920 then\r\n                childNum = 3\r\n            elseif parentAge >= 72 and childNumProb >= 980 then\r\n                childNum = 3\r\n            end\r\n        end\r\n\r\n        print(\"parent #\" .. (i + 1) .. \": \".. childNum .. \" children\")\r\n        totalOffspring = totalOffspring + childNum\r\n\r\n        if parentDied == true then\r\n            RealisticLivestock.KillAnimals(spec, cluster, 1)\r\n            print(\"animal died in childbirth\")\r\n        end\r\n    end\r\n\r\n    local animalTypeText = \"\"\r\n\r\n    print(\" --- \")\r\n    if animalType == AnimalType.PIG then\r\n        animalTypeText = \"piglets\"\r\n        if totalOffspring == 1 then animalTypeText = \"piglet\" end\r\n        print(\"PIGS\")\r\n    elseif cluster.subType == \"COW_WATERBUFFALO\" then\r\n        animalTypeText = \"buffalos\"\r\n        if totalOffspring == 1 then animalTypeText = \"buffalo\" end\r\n        print(\"WATER BUFFALOS\")\r\n    elseif animalType == AnimalType.COW then\r\n        animalTypeText = \"calves\"\r\n        if totalOffspring == 1 then animalTypeText = \"calf\" end\r\n        print(\"CATTLE\")\r\n    elseif cluster.subType == \"GOAT\" then\r\n        animalTypeText = \"goats\"\r\n        if totalOffspring == 1 then animalTypeText = \"goat\" end\r\n        print(\"GOATS\")\r\n    elseif animalType == AnimalType.SHEEP then\r\n        animalTypeText = \"lambs\"\r\n        if totalOffspring == 1 then animalTypeText = \"lamb\" end\r\n        print(\"SHEEP\")\r\n    elseif animalType == AnimalType.HORSE then\r\n        animalTypeText = \"foals\"\r\n        if totalOffspring == 1 then animalTypeText = \"foal\" end\r\n        print(\"HORSES\")\r\n    elseif animalType == AnimalType.CHICKEN then\r\n        animalTypeText = \"chicks\"\r\n        if totalOffspring == 1 then animalTypeText = \"chick\" end\r\n        print(\"CHICKEN\")\r\n    end\r\n    print(totalParents .. \" total parents\")\r\n    print(totalOffspring .. \" total offspring\")\r\n    print(lactatingAnimals .. \" lactating animals\")\r\n\r\n    cluster.lactatingAnimals = lactatingAnimals\r\n\r\n    local animalsToSell = 0\r\n    local subType = g_currentMission.animalSystem:getSubTypeByIndex(cluster:getSubTypeIndex())\r\n    local farmIndex = spec:getOwnerFarmId()\r\n\r\n    if freeSlots - totalOffspring < 0 then\r\n        animalsToSell = totalOffspring - freeSlots\r\n    end\r\n\r\n        cluster.monthsSinceLastBirth = 0\r\n\r\n    if totalOffspring > 0 then cluster.isParent = true end\r\n\r\n    local msgText = totalOffspring .. \" \" .. animalTypeText .. \" born\"\r\n\r\n    totalOffspring = totalOffspring - animalsToSell\r\n\r\n    if animalsToSell > 0 then\r\n        local animalPrice = subType.sellPrice:get(0) * 0.4\r\n        local totalAnimalPrice = animalPrice * animalsToSell\r\n        local farm = g_farmManager:getFarmById(farmIndex)\r\n        msgText = msgText .. \", \" .. animalsToSell .. \" sold due to overcrowding for £\" .. math.floor(totalAnimalPrice)\r\n\r\n        if isServer then\r\n            g_currentMission:addMoneyChange(totalAnimalPrice, farmIndex, MoneyType.SOLD_ANIMALS, true)\r\n        else\r\n            g_client:getServerConnection():sendEvent(MoneyChangeEvent.new(totalAnimalPrice, MoneyType.SOLD_ANIMALS, farmIndex))\r\n        end\r\n\r\n        if farm ~= nil then\r\n            farm:changeBalance(totalAnimalPrice, MoneyType.SOLD_ANIMALS)\r\n        end\r\n\r\n        print(animalsToSell .. \" for £\" .. animalPrice .. \" each.\")\r\n    end\r\n\r\n    if totalOffspring >= 1 then\r\n\r\n        local numMale = math.random(0, totalOffspring)\r\n\r\n        if numMale >= 1 then\r\n            local maleCluster = g_currentMission.animalSystem:createClusterFromSubTypeIndex(cluster:getSubTypeIndex() + 1)\r\n            maleCluster.numAnimals = numMale\r\n            maleCluster.monthsSinceLastBirth = 0\r\n            maleCluster.isParent = false\r\n            maleCluster.lactatingAnimals = 0\r\n            maleCluster.gender = \"male\"\r\n            spec.clusterSystem:addPendingAddCluster(maleCluster)\r\n        end\r\n\r\n        if totalOffspring - numMale >= 1 then\r\n\r\n            local femaleCluster = g_currentMission.animalSystem:createClusterFromSubTypeIndex(cluster:getSubTypeIndex())\r\n            femaleCluster.numAnimals = totalOffspring - numMale\r\n            femaleCluster.monthsSinceLastBirth = 0\r\n            femaleCluster.isParent = false\r\n            femaleCluster.lactatingAnimals = 0\r\n            femaleCluster.gender = \"female\"\r\n            spec.clusterSystem:addPendingAddCluster(femaleCluster)\r\n\r\n        end\r\n\r\n        local animalTypeReal = g_currentMission.animalSystem:getTypeByIndex(subType.typeIndex)\r\n        if animalTypeReal.statsBreedingName ~= nil then\r\n            local stats = g_currentMission:farmStats(farmIndex)\r\n            stats:updateStats(animalTypeReal.statsBreedingName, totalOffspring)\r\n        end\r\n\r\n    end\r\n\r\n    if totalOffspring > 0 or animalsToSell > 0 then g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText) end\r\n\r\nend\r\n\r\nfunction RealisticLivestock.KillAnimals(spec, cluster, amount)\r\n\r\n    cluster.numAnimals = cluster.numAnimals - amount\r\n\r\n    if cluster.numAnimals <= 0 then\r\n        local husbandryAnimals = spec.spec_husbandryAnimals\r\n\r\n        for i, selectedCluster in ipairs(husbandryAnimals.clusterSystem.clusters) do\r\n            if selectedCluster == cluster then\r\n                table.remove(husbandryAnimals.clusterSystem.clusters, i)\r\n                break\r\n            end\r\n        end\r\n    end\r\n\r\n    spec:updateVisualAnimals()\r\n\r\nend\r\n\r\n-- Animals can die from low health\r\n\r\nfunction RealisticLivestock.CalculateLowHealthMonthlyAnimalDeaths(spec, cluster)\r\n\r\n    if cluster.numAnimals <= 0 then\r\n        return\r\n    end\r\n\r\n    local numAnimalsToDispose = 0\r\n    local numAnimals = cluster.numAnimals\r\n    local deathChance = 0.01\r\n    local health = cluster.health\r\n\r\n    if health >= 80 then\r\n        return\r\n    end\r\n\r\n    deathChance = 0.8 - (health / 100)\r\n\r\n    if math.random() <= deathChance then\r\n    if cluster.age < 6 then health = health - 10 end\r\n        numAnimalsToDispose = math.random(math.max(1, (0.8 - (health / 100)) * numAnimals))\r\n        if numAnimalsToDispose < 1 then\r\n            numAnimalsToDispose = 1\r\n        end\r\n\r\n        if numAnimalsToDispose > numAnimals then\r\n            numAnimalsToDispose = numAnimals\r\n        end\r\n\r\n        RealisticLivestock.KillAnimals(spec, cluster, numAnimalsToDispose)\r\n\r\n        local animalTypeText = \"\"\r\n        local animalType = spec.animalTypeIndex\r\n\r\n        if animalType == AnimalType.PIG and cluster.age < 6 then\r\n            animalTypeText = \"piglets\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"piglet\" end\r\n        elseif animalType == AnimalType.PIG then\r\n            animalTypeText = \"pigs\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"pig\" end\r\n        end\r\n\r\n\r\n        if cluster.subType == \"COW_WATERBUFFALO\" then\r\n            animalTypeText = \"buffalos\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"buffalo\" end\r\n        elseif animalType == AnimalType.COW and cluster.age < 12 then\r\n            animalTypeText = \"calves\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"calf\" end\r\n        elseif animalType == AnimalType.COW then\r\n            animalTypeText = \"cows\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"cow\" end\r\n        end\r\n\r\n\r\n        if cluster.subType == \"GOAT\" then\r\n            animalTypeText = \"goats\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"goat\" end\r\n        elseif animalType == AnimalType.SHEEP and cluster.age < 6 then\r\n            animalTypeText = \"lambs\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"lamb\" end\r\n        elseif animalType == AnimalType.SHEEP then\r\n            animalTypeText = \"sheep\"\r\n        end\r\n\r\n        if animalType == AnimalType.HORSE and cluster.age < 12 then\r\n            animalTypeText = \"foals\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"foal\" end\r\n        elseif animalType == AnimalType.HORSE then\r\n            animalTypeText = \"horses\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"horse\" end\r\n        end\r\n\r\n        if animalType == AnimalType.CHICKEN and cluster.age < 6 then\r\n            animalTypeText = \"chicks\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"chick\" end\r\n        elseif animalType == AnimalType.CHICKEN then\r\n            animalTypeText = \"chickens\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"chicken\" end\r\n        end\r\n\r\n        msgText = numAnimalsToDispose .. \" \" .. animalTypeText .. \" died due to low health\"\r\n\r\n        if numAnimalsToDispose >= 1 then g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText) end\r\n    end\r\n\r\nend\r\n\r\n\r\n-- Animals can die from old age\r\n\r\nfunction RealisticLivestock.CalculateOldAgeMonthlyAnimalDeaths(spec, cluster)\r\n\r\n    if cluster.numAnimals <= 0 then\r\n        return\r\n    end\r\n\r\n    local animalType = spec.animalTypeIndex\r\n    local numAnimalsToDispose = 0\r\n    local numAnimals = cluster.numAnimals\r\n    local deathChance = 0.01\r\n    local age = cluster.age\r\n\r\n    local minAge = 20000\r\n    local maxAge = 30000\r\n\r\n    if animalType == AnimalType.COW then\r\n        -- cattle old age min: 15y (180m)\r\n        -- cattle old age max: 20y (240m)\r\n        minAge = 180\r\n        maxAge = 240\r\n    elseif animalType == AnimalType.SHEEP then\r\n        -- sheep old age min: 10y (120m)\r\n        -- sheep old age max: 12y (144m)\r\n        minAge = 120\r\n        maxAge = 144\r\n    elseif animalType == AnimalType.HORSE then\r\n        -- horse old age min: 25y (300m)\r\n        -- horse old age max: 30y (360m)\r\n        minAge = 300\r\n        maxAge = 360\r\n    elseif animalType == AnimalType.PIG then\r\n        -- pig old age min: 15y (180m)\r\n        -- pig old age max: 20y (240m)\r\n        minAge = 180\r\n        maxAge = 240\r\n    elseif animalType == AnimalType.CHICKEN then\r\n        -- chicken old age min: 5y (60m)\r\n        -- chicken old age max: 8y (96m)\r\n        minAge = 60\r\n        maxAge = 96\r\n    end\r\n\r\n    if age < minAge then\r\n        return\r\n    end\r\n\r\n    deathChance = 0.7 - ((maxAge - age) / 100)\r\n    if math.random() <= deathChance then\r\n        numAnimalsToDispose = math.random((0.61 - ((maxAge - age) / 100)) * numAnimals)\r\n        if numAnimalsToDispose < 1 then\r\n            numAnimalsToDispose = 1\r\n        end\r\n\r\n        if numAnimalsToDispose > numAnimals then\r\n            numAnimalsToDispose = numAnimals\r\n        end\r\n\r\n        RealisticLivestock.KillAnimals(spec, cluster, numAnimalsToDispose)\r\n\r\n        local animalTypeText = \"\"\r\n        local animalType = spec.animalTypeIndex\r\n\r\n        if animalType == AnimalType.PIG then\r\n            animalTypeText = \"pigs\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"pig\" end\r\n        end\r\n\r\n\r\n        if cluster.subType == \"COW_WATERBUFFALO\" then\r\n            animalTypeText = \"buffalos\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"buffalo\" end\r\n        elseif animalType == AnimalType.COW then\r\n            animalTypeText = \"cows\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"cow\" end\r\n        end\r\n\r\n\r\n        if cluster.subType == \"GOAT\" then\r\n            animalTypeText = \"goats\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"goat\" end\r\n        elseif animalType == AnimalType.SHEEP then\r\n            animalTypeText = \"sheep\"\r\n        end\r\n\r\n        if animalType == AnimalType.HORSE then\r\n            animalTypeText = \"horses\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"horse\" end\r\n        end\r\n\r\n        if animalType == AnimalType.CHICKEN then\r\n            animalTypeText = \"chickens\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"chicken\" end\r\n        end\r\n\r\n        msgText = numAnimalsToDispose .. \" \" .. animalTypeText .. \" died due to old age\"\r\n\r\n        if numAnimalsToDispose >= 1 then g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText) end\r\n    end\r\n\r\nend\r\n\r\n\r\n-- Animals can die randomly regardless of health such as due to broken legs - will be sold at a reduced price (lower quality meat)\r\n\r\nfunction RealisticLivestock.CalculateRandomMonthlyAnimalDeaths(spec, cluster, isServer)\r\n\r\n    if cluster.numAnimals <= 0 then\r\n        return\r\n    end\r\n\r\n    local animalType = spec.animalTypeIndex\r\n    local numAnimalsToDispose = 0\r\n    local animalsCanBeSold = true\r\n    local numAnimals = cluster.numAnimals\r\n    local deathChance = 0.01\r\n    local temp = spec.minTemp\r\n\r\n    if animalType == AnimalType.COW then\r\n        deathChance = 0.018\r\n        if cluster.age < 6 then\r\n            deathChance = 0.028\r\n        elseif cluster.age < 18 then\r\n            deathChance = 0.02\r\n        end\r\n    elseif animalType == AnimalType.SHEEP then\r\n        deathChance = 0.012\r\n        if cluster.age < 3 then\r\n            deathChance = 0.023\r\n        elseif cluster.age < 8 then\r\n            deathChance = 0.015\r\n        end\r\n    elseif animalType == AnimalType.HORSE then\r\n        deathChance = 0.013\r\n    elseif animalType == AnimalType.PIG then\r\n        deathChance = 0.005\r\n        if cluster.age < 3 then\r\n            deathChance = 0.038\r\n        elseif cluster.age < 6 then\r\n            deathChance = 0.012\r\n        end\r\n    elseif animalType == AnimalType.CHICKEN then\r\n        if cluster.age < 6 then\r\n            deathChance = 0.003\r\n        else\r\n            deathChance = 0.004\r\n        end\r\n        animalsCanBeSold = false\r\n    end\r\n\r\n    -- animals are more likely to die in cold weather, especially young animals due to ice, pneumonia etc\r\n\r\n    if temp ~= nil and temp < 10 and temp >= 0 then\r\n        deathChance = deathChance * (1 + (1 - (temp / 10)))\r\n    elseif temp ~= nil and temp < 0 then\r\n        deathChance = deathChance * (1 + (1 - (temp / 8)))\r\n    end\r\n\r\n    if math.random() <= deathChance then\r\n        numAnimalsToDispose = 1\r\n        if numAnimals >= 10 and math.random() >= 0.92 then\r\n            numAnimalsToDispose = math.max(math.random(2, math.floor(numAnimals / 3)), 4)\r\n        end\r\n    end\r\n\r\n    if numAnimalsToDispose >= 1 then\r\n        RealisticLivestock.KillAnimals(spec, cluster, numAnimalsToDispose)\r\n        local totalAnimalPrice = 0\r\n        if animalsCanBeSold then\r\n            local subType = g_currentMission.animalSystem:getSubTypeByIndex(cluster:getSubTypeIndex())\r\n            local farmIndex = spec:getOwnerFarmId()\r\n            local animalPrice = subType.sellPrice:get(cluster.age) * 0.2\r\n            totalAnimalPrice = animalPrice * numAnimalsToDispose\r\n            local farm = g_farmManager:getFarmById(farmIndex)\r\n\r\n            if isServer then\r\n                g_currentMission:addMoneyChange(totalAnimalPrice, farmIndex, MoneyType.SOLD_ANIMALS, true)\r\n            else\r\n                g_client:getServerConnection():sendEvent(MoneyChangeEvent.new(totalAnimalPrice, MoneyType.SOLD_ANIMALS, farmIndex))\r\n            end\r\n\r\n            if farm ~= nil then\r\n                farm:changeBalance(totalAnimalPrice, MoneyType.SOLD_ANIMALS)\r\n            end\r\n\r\n            print(numAnimalsToDispose .. \" for £\" .. animalPrice .. \" each.\")\r\n        end\r\n\r\n        local animalTypeText = \"\"\r\n        local animalType = spec.animalTypeIndex\r\n\r\n        if animalType == AnimalType.PIG and cluster.age < 6 then\r\n            animalTypeText = \"piglets\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"piglet\" end\r\n        elseif animalType == AnimalType.PIG then\r\n            animalTypeText = \"pigs\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"pig\" end\r\n        end\r\n\r\n\r\n        if cluster.subType == \"COW_WATERBUFFALO\" then\r\n            animalTypeText = \"buffalos\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"buffalo\" end\r\n        elseif animalType == AnimalType.COW and cluster.age < 12 then\r\n            animalTypeText = \"calves\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"calf\" end\r\n        elseif animalType == AnimalType.COW then\r\n            animalTypeText = \"cows\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"cow\" end\r\n        end\r\n\r\n\r\n        if cluster.subType == \"GOAT\" then\r\n            animalTypeText = \"goats\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"goat\" end\r\n        elseif animalType == AnimalType.SHEEP and cluster.age < 6 then\r\n            animalTypeText = \"lambs\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"lamb\" end\r\n        elseif animalType == AnimalType.SHEEP then\r\n            animalTypeText = \"sheep\"\r\n        end\r\n\r\n        if animalType == AnimalType.HORSE and cluster.age < 12 then\r\n            animalTypeText = \"foals\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"foal\" end\r\n        elseif animalType == AnimalType.HORSE then\r\n            animalTypeText = \"horses\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"horse\" end\r\n        end\r\n\r\n        if animalType == AnimalType.CHICKEN and cluster.age < 6 then\r\n            animalTypeText = \"chicks\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"chick\" end\r\n        elseif animalType == AnimalType.CHICKEN then\r\n            animalTypeText = \"chickens\"\r\n            if numAnimalsToDispose == 1 then animalTypeText = \"chicken\" end\r\n        end\r\n\r\n        msgText = numAnimalsToDispose .. \" \" .. animalTypeText .. \" died due to accidents\"\r\n        if animalsCanBeSold then msgText = msgText .. \", sold for £\" .. math.floor(totalAnimalPrice) end\r\n\r\n        if numAnimalsToDispose >= 1 then g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText) end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\n-- check if given animal pen has a viable male animal for reproduction\r\n\r\nfunction RealisticLivestock.hasMaleAnimalInPen(spec, subT, female)\r\n\r\n    if spec == nil then return false end\r\n\r\n    local clusterSystem = spec.clusterSystem or spec\r\n    if clusterSystem == nil or clusterSystem.getAnimals == nil or clusterSystem:getAnimals() == nil or female.genetics.fertility <= 0 then return false end\r\n\r\n    local animals = clusterSystem:getAnimals()\r\n    local animalSystem = g_currentMission.animalSystem\r\n    local animalType = female == nil and spec.animalTypeIndex or female.animalTypeIndex\r\n    local fatherId = (female ~= nil and female.fatherId ~= \"-1\") and female.fatherId or \"-2\"\r\n\r\n    for _, animal in pairs(animals) do\r\n\r\n        if animal.isCastrated or animal.genetics.fertility <= 0 then continue end\r\n\r\n        local s = animalSystem:getSubTypeByIndex(animal:getSubTypeIndex())\r\n        if s.reproductionMinAgeMonth == nil or s.reproductionMinAgeMonth > animal.age then continue end\r\n\r\n        if animal:getIdentifiers() == fatherId then continue end\r\n\r\n        if subT == \"COW_WATERBUFFALO\" then\r\n            if s.name == \"BULL_WATERBUFFALO\" and animal.age < 132 then return true end\r\n        elseif subT == \"GOAT\" then\r\n            if s.name == \"RAM_GOAT\" and animal.age < 72 then return true end\r\n        elseif s.name ~= \"RAM_GOAT\" and s.name ~= \"BULL_WATERBUFFALO\" then\r\n            if animal.gender == \"male\" and ((animalType == AnimalType.COW and animal.age < 132) or (animalType == AnimalType.SHEEP and animal.age < 72) or (animalType == AnimalType.HORSE and animal.age < 300) or animalType == AnimalType.CHICKEN or (animalType == AnimalType.PIG and animal.age < 48)) then return true end\r\n        end\r\n\r\n    end\r\n\r\n    return false\r\n\r\nend\r\n\r\n\r\n-- Monthly Animal Update Call\r\n\r\n\r\nfunction RealisticLivestock.onPeriodChanged(self, func)\r\n\r\n    if self.isServer then\r\n\r\n        local minTemp =  math.floor(g_currentMission.environment.weather.temperatureUpdater.currentMin)\r\n\r\n        local spec = self.spec_husbandryAnimals\r\n        local clusters = spec.clusterSystem:getClusters()\r\n        local totalNumAnimals = self:getNumOfAnimals()\r\n        local freeSlots = math.max(spec.maxNumAnimals - totalNumAnimals, 0)\r\n        local animalSystem = g_currentMission.animalSystem\r\n\r\n        for _, cluster in ipairs(clusters) do\r\n\r\n            if cluster.monthsSinceLastBirth == nil then\r\n                cluster.monthsSinceLastBirth = 0\r\n            end\r\n\r\n            if cluster.isParent == nil then\r\n                cluster.isParent = false\r\n            end\r\n\r\n            cluster:onPeriodChanged()\r\n            cluster.monthsSinceLastBirth = cluster.monthsSinceLastBirth + 1\r\n\r\n            local numNewAnimals = cluster:updateReproduction()\r\n\r\n            if cluster.monthsSinceLastBirth <= 2 then cluster.reproduction = 0 end\r\n\r\n\r\n            local index = cluster:getSubTypeIndex()\r\n\r\n            local subTypeFull = animalSystem:getSubTypeByIndex(index)\r\n            local reproductionDuration = subTypeFull.reproductionDurationMonth\r\n\r\n            if cluster.gender == \"female\" and reproductionDuration ~= nil then\r\n                if cluster.reproduction > 0 and cluster.reproduction <= 100 / reproductionDuration and not RealisticLivestock.hasMaleAnimalInPen(spec, subTypeFull.name) then cluster.reproduction = 0 end\r\n            end\r\n\r\n            if numNewAnimals > 0 then\r\n                numNewAnimals = math.min(freeSlots, numNewAnimals)\r\n\r\n                if numNewAnimals > 0 then\r\n                    RealisticLivestock:updateReproduction(spec, cluster, numNewAnimals, freeSlots, self.isServer)\r\n                end\r\n\r\n            end\r\n\r\n            RealisticLivestock.CalculateRandomMonthlyAnimalDeaths(spec, cluster, self.isServer)\r\n            RealisticLivestock.CalculateOldAgeMonthlyAnimalDeaths(spec, cluster)\r\n            RealisticLivestock.CalculateLowHealthMonthlyAnimalDeaths(spec, cluster)\r\n\r\n        end\r\n\r\n        spec.minTemp = minTemp\r\n\r\n        self:raiseActive()\r\n    end\r\n\r\nend\r\n\r\n\r\n--PlaceableHusbandryAnimals.onPeriodChanged = Utils.overwrittenFunction(PlaceableHusbandryAnimals.onPeriodChanged, RealisticLivestock.onPeriodChanged)\r\n\r\n\r\nfunction RealisticLivestock:updateInfo(superFunc, infoTable)\r\n    --superFunc(self, infoTable)\r\n\r\n    local spec = self.spec_husbandryAnimals\r\n    --local health = 0\r\n    --local numAnimals = 0\r\n    local lactatingAnimals = 0\r\n    local clusters = spec.clusterSystem:getClusters()\r\n    local numClusters = #clusters\r\n    if numClusters > 0 then\r\n        for _, cluster in ipairs(clusters) do\r\n            --health = health + cluster.health\r\n            --numAnimals = numAnimals + cluster.numAnimals\r\n            if spec.animalTypeIndex == AnimalType.COW and cluster.isLactating ~= nil and cluster.isLactating then\r\n                lactatingAnimals = lactatingAnimals + cluster.numAnimals\r\n            end\r\n        end\r\n\r\n        --health = health / numClusters\r\n    end\r\n\r\n    --spec.infoNumAnimals.text = string.format(\"%d\", numAnimals)\r\n    --spec.infoHealth.text = string.format(\"%d %%\", health)\r\n    --table.insert(infoTable, spec.infoNumAnimals)\r\n    --table.insert(infoTable, spec.infoHealth)\r\n\r\n    local milkSpec = self.spec_husbandryMilk\r\n\r\n    if spec.animalTypeIndex == AnimalType.COW and milkSpec ~= nil then\r\n        if spec.infoLactatingAnimals == nil then\r\n            spec.infoLactatingAnimals = {title=\"Lactating animals\", text=\"\"}\r\n        end\r\n        spec.infoLactatingAnimals.text = string.format(\"%d\", lactatingAnimals)\r\n        table.insert(infoTable, spec.infoLactatingAnimals)\r\n    end\r\nend\r\n\r\n--PlaceableHusbandryAnimals.updateInfo = Utils.appendedFunction(PlaceableHusbandryAnimals.updateInfo, RealisticLivestock.updateInfo)\r\n\r\n\r\nfunction RealisticLivestock.addAnimals(self, superFunc, subTypeIndex, numAnimals, age)\r\n    local mission = g_currentMission\r\n    local animalSystem = mission.animalSystem\r\n    local cluster = animalSystem:createClusterFromSubTypeIndex(subTypeIndex)\r\n    cluster.gender = animalSystem.subTypes[subTypeIndex].gender\r\n    cluster.lactatingAnimals = 0\r\n    cluster.monthsSinceLastBirth = 0\r\n    cluster.isParent = false\r\n    local puberty = animalSystem.subTypes[subTypeIndex].reproductionMinAgeMonth\r\n\r\n    if puberty ~= nil then\r\n        if age >= puberty then\r\n            cluster.health = 100\r\n        else\r\n            cluster.health = (age / puberty) * 100\r\n        end\r\n    end\r\n\r\n    if cluster:getSupportsMerging() then\r\n        cluster.numAnimals = numAnimals\r\n        cluster.age = age\r\n        cluster.subTypeIndex = subTypeIndex\r\n        self:addCluster(cluster)\r\n    else\r\n        for i=1, numAnimals do\r\n            cluster = animalSystem:createClusterFromSubTypeIndex(subTypeIndex)\r\n            cluster.numAnimals = 1\r\n            cluster.age = age\r\n            self:addCluster(cluster)\r\n        end\r\n    end\r\nend\r\n\r\n--PlaceableHusbandryAnimals.addAnimals = Utils.overwrittenFunction(PlaceableHusbandryAnimals.addAnimals, RealisticLivestock.addAnimals)\r\n\r\n\r\n-- Saving and Loading\r\n\r\n\r\nfunction RealisticLivestock:saveHusbandryToXMLFile(superFunc, xmlFile, key, usedModNames)\r\n    superFunc(self, xmlFile, key, usedModNames)\r\n    if self.spec_husbandryAnimals.minTemp == nil then self.spec_husbandryAnimals.minTemp = 15 end\r\n    xmlFile:setInt(key .. \"#minTemp\", self.spec_husbandryAnimals.minTemp)\r\nend\r\n\r\nPlaceableHusbandryAnimals.saveToXMLFile = Utils.overwrittenFunction(PlaceableHusbandryAnimals.saveToXMLFile, RealisticLivestock.saveHusbandryToXMLFile)\r\n\r\nfunction RealisticLivestock:loadHusbandryFromXMLFile(superFunc, xmlFile, key)\r\n    local r = superFunc(self, xmlFile, key)\r\n\r\n    self.minTemp = xmlFile:getInt(key .. \"#minTemp\")\r\n\r\n    if self.minTemp == nil then\r\n        self.minTemp = 15\r\n    end\r\n\r\n    return r\r\nend\r\n\r\nPlaceableHusbandryAnimals.loadFromXMLFile = Utils.overwrittenFunction(PlaceableHusbandryAnimals.loadFromXMLFile, RealisticLivestock.loadHusbandryFromXMLFile)"
  },
  {
    "path": "src/RealisticLivestock_Animal.lua",
    "content": "Animal = {}\r\nlocal Animal_mt = Class(Animal)\r\n\r\n\r\nfunction Animal.new(age, health, monthsSinceLastBirth, gender, subTypeIndex, reproduction, isParent, isPregnant, isLactating, clusterSystem, id, motherId, fatherId, pos, name, dirt, fitness, riding, farmId, weight, genetics, impregnatedBy, variation, children, monitor, isCastrated, diseases, recentlyBoughtByAI, marks, insemination)\r\n\r\n    local self = setmetatable({}, Animal_mt)\r\n\r\n    self.input, self.output = {}, {}\r\n\r\n    self.isCastrated = isCastrated or false\r\n\r\n    self.clusterSystem = clusterSystem\r\n\r\n    self.insemination = insemination\r\n\r\n    self.recentlyBoughtByAI = false or recentlyBoughtByAI\r\n    self.children = children or {}\r\n    self.age = age or 0\r\n    self.health = health or 0\r\n    self.monthsSinceLastBirth = monthsSinceLastBirth or 0\r\n    self.gender = gender or \"female\"\r\n    self.subTypeIndex = subTypeIndex or 1\r\n    self.subType = g_currentMission.animalSystem:getSubTypeByIndex(self.subTypeIndex).name or \"COW_SWISS_BROWN\"\r\n    self.reproduction = reproduction or 0\r\n    self.isParent = isParent or false\r\n    self.isPregnant = isPregnant or false\r\n    self.isLactating = isLactating or false\r\n    self.isDirty = false\r\n    self.isIndividual = true\r\n    self.name = nil\r\n    self.isDead = false\r\n    self.isSold = false\r\n    self.weight = weight or nil\r\n    self.marks = marks or self:getDefaultMarks()\r\n\r\n    self.variation = variation or nil\r\n\r\n    self.genetics = genetics\r\n    self.impregnatedBy = impregnatedBy\r\n\r\n    self.animalTypeIndex = g_currentMission.animalSystem:getTypeIndexBySubTypeIndex(self.subTypeIndex)\r\n    local subType = g_currentMission.animalSystem:getSubTypeByIndex(self.subTypeIndex)\r\n    local targetWeight = subType.targetWeight\r\n\r\n    self.breed = subType.breed or \"UNKNOWN\"\r\n\r\n    if genetics == nil then\r\n    \r\n        self.genetics = {}\r\n\r\n        local healthChance = math.random()\r\n\r\n        if healthChance < 0.05 then\r\n            self.genetics.health = math.random(25, 35) / 100\r\n        elseif healthChance < 0.25 then\r\n            self.genetics.health = math.random(35, 90) / 100\r\n        elseif healthChance > 0.95 then\r\n            self.genetics.health = math.random(165, 175) / 100\r\n        elseif healthChance > 0.75 then\r\n            self.genetics.health = math.random(110, 165) / 100\r\n        else\r\n            self.genetics.health = math.random(90, 110) / 100\r\n        end\r\n\r\n\r\n        local fertilityChance = math.random()\r\n\r\n        if fertilityChance < 0.001 then\r\n            self.genetics.fertility = 0\r\n        elseif fertilityChance < 0.05 then\r\n            self.genetics.fertility = math.random(25, 35) / 100\r\n        elseif fertilityChance < 0.25 then\r\n            self.genetics.fertility = math.random(35, 90) / 100\r\n        elseif fertilityChance > 0.95 then\r\n            self.genetics.fertility = math.random(165, 175) / 100\r\n        elseif fertilityChance > 0.75 then\r\n            self.genetics.fertility = math.random(110, 165) / 100\r\n        else\r\n            self.genetics.fertility = math.random(90, 110) / 100\r\n        end\r\n\r\n\r\n        if self.animalTypeIndex == AnimalType.COW or self.animalTypeIndex == AnimalType.SHEEP or self.animalTypeIndex == AnimalType.CHICKEN then\r\n\r\n            local productivityChance = math.random()\r\n\r\n            if productivityChance < 0.05 then\r\n                self.genetics.productivity = math.random(25, 35) / 100\r\n            elseif productivityChance < 0.25 then\r\n                self.genetics.productivity = math.random(35, 90) / 100\r\n            elseif productivityChance > 0.95 then\r\n                self.genetics.productivity = math.random(165, 175) / 100\r\n            elseif productivityChance > 0.75 then\r\n                self.genetics.productivity = math.random(110, 165) / 100\r\n            else\r\n                self.genetics.productivity = math.random(90, 110) / 100\r\n            end\r\n\r\n        end\r\n\r\n\r\n        local meatQualityChance = math.random()\r\n\r\n        if meatQualityChance < 0.05 then\r\n            self.genetics.quality = math.random(25, 35) / 100\r\n        elseif meatQualityChance < 0.25 then\r\n            self.genetics.quality = math.random(35, 90) / 100\r\n        elseif meatQualityChance > 0.95 then\r\n            self.genetics.quality = math.random(165, 175) / 100\r\n        elseif meatQualityChance > 0.75 then\r\n            self.genetics.quality = math.random(110, 165) / 100\r\n        else\r\n            self.genetics.quality = math.random(90, 110) / 100\r\n        end\r\n        \r\n\r\n        local metabolismChance = math.random()\r\n\r\n        if metabolismChance < 0.05 then\r\n            self.genetics.metabolism = math.random(25, 35) / 100\r\n        elseif metabolismChance < 0.25 then\r\n            self.genetics.metabolism = math.random(35, 90) / 100\r\n        elseif metabolismChance > 0.95 then\r\n            self.genetics.metabolism = math.random(165, 175) / 100\r\n        elseif metabolismChance > 0.75 then\r\n            self.genetics.metabolism = math.random(110, 165) / 100\r\n        else\r\n            self.genetics.metabolism = math.random(90, 110) / 100\r\n        end\r\n\r\n    end\r\n\r\n\r\n    if self.weight == nil then\r\n\r\n        local minWeight = subType.minWeight\r\n        local maxWeight = subType.maxWeight\r\n\r\n        local weightPerMonth = (targetWeight - minWeight) / (subType.reproductionMinAgeMonth * 1.5)\r\n        self.weight = math.clamp((minWeight + (weightPerMonth * math.clamp(self.age, 0, 20))) * (math.random(85, 115) / 100), minWeight, maxWeight)\r\n\r\n    end\r\n\r\n\r\n    self.targetWeight = targetWeight + (((targetWeight * self.genetics.metabolism) - targetWeight) / 2.5)\r\n\r\n    self.farmId = farmId or nil\r\n\r\n    if self.clusterSystem ~= nil then\r\n\r\n        if id == nil then\r\n\r\n            local ownerFarmId = clusterSystem.owner.ownerFarmId\r\n            local farm = g_farmManager.farmIdToFarm[ownerFarmId]\r\n\r\n\r\n            if farm == nil then\r\n                id = \"1\"\r\n            else\r\n                id = farm.stats:getNextAnimalId(g_currentMission.animalSystem:getSubTypeByIndex(self.subTypeIndex).typeIndex)\r\n\r\n                local farmHerdId = farm.stats.statistics.farmId\r\n                if farmHerdId == nil then\r\n                    farmHerdId = math.random(100000, 999999)\r\n                    farm.stats.statistics.farmId = farmHerdId\r\n                end\r\n\r\n                self.farmId = tostring(farmHerdId)\r\n\r\n                id = tostring(id)\r\n                local idLen = string.len(id)\r\n\r\n                if idLen < 5 then\r\n                    if idLen == 1 then\r\n                        id = \"1000\" .. id\r\n                    elseif idLen == 2 then\r\n                        id = \"100\" .. id\r\n                    elseif idLen == 3 then\r\n                        id = \"10\" .. id\r\n                    elseif idLen == 4 then\r\n                        id = \"1\" .. id\r\n                    end\r\n                end\r\n\r\n                local concatenated = farmHerdId .. id\r\n                local checkDigit = (tonumber(concatenated)::number % 7) + 1\r\n                id = checkDigit .. id\r\n            end\r\n        end\r\n\r\n        if farmId == nil then\r\n            local farm = g_farmManager.farmIdToFarm[clusterSystem.owner.ownerFarmId]\r\n            if farm == nil then\r\n                self.farmId = \"1\"\r\n            else\r\n                local farmHerdId = farm.stats.statistics.farmId\r\n                if farmHerdId == nil then\r\n                    farmHerdId = math.random(100000, 999999)\r\n                    farm.stats.statistics.farmId = farmHerdId\r\n                end\r\n\r\n                self.farmId = tostring(farmHerdId)\r\n            end\r\n        end\r\n\r\n    end\r\n\r\n    self.uniqueId = id\r\n    self.id = \"0-0\"\r\n    self.idFull = \"0-0\"\r\n\r\n    self.motherId = motherId or \"-1\"\r\n    self.fatherId = fatherId or \"-1\"\r\n\r\n\r\n    -- for compatibility reasons with mods such as InfoDisplayExtension\r\n\r\n    self.numAnimals = 1\r\n    self.maxNumAnimals = 1\r\n\r\n    local reproductionText = g_i18n:getText(\"statistic_reproduction\")\r\n\r\n    self.infoReproduction = {\r\n        text = \"\",\r\n        title = reproductionText,\r\n        titleOrg = reproductionText\r\n    }\r\n    self.infoHealth = {\r\n        text = \"\",\r\n        title = g_i18n:getText(\"ui_horseHealth\")\r\n    }\r\n\r\n    self.name = name or nil\r\n\r\n\r\n    self.dirt = dirt or 0\r\n    self.fitness = fitness or 0\r\n    self.riding = riding or 0\r\n    if name == \"\" then name = nil end\r\n    self.name = name or ((string.contains(self.subType, \"HORSE\", true) or string.contains(self.subType, \"STALLION\", true)) and g_currentMission.animalNameSystem:getRandomName(self.gender) or nil)\r\n\r\n\r\n    self.pos = pos or nil\r\n    \r\n\r\n    if self.age >= 0 then\r\n\r\n        local environment = g_currentMission.environment\r\n\r\n        local currentMonth = environment.currentPeriod + 2\r\n        local currentYear = environment.currentYear\r\n\r\n        if currentMonth > 12 then currentMonth = currentMonth - 12 end\r\n\r\n        local birthYear = currentYear - math.floor(self.age / 12)\r\n        local birthMonth = currentMonth - (self.age % 12)\r\n\r\n        if birthMonth <= 0 then birthMonth = 12 + birthMonth end\r\n\r\n        local birthCountry = math.random() >= 0.01 and RealisticLivestock.getMapCountryIndex() or math.random(1, #RealisticLivestock.AREA_CODES)\r\n\r\n        self.birthday = {\r\n            [\"day\"] = math.random(1, RealisticLivestock.DAYS_PER_MONTH[birthMonth]),\r\n            [\"month\"] = birthMonth,\r\n            [\"year\"] = birthYear,\r\n            [\"country\"] = birthCountry,\r\n            [\"lastAgeMonth\"] = currentMonth\r\n        }\r\n\r\n    end\r\n\r\n    self.diseases = diseases or {}\r\n\r\n    self:updateInput()\r\n    self:updateOutput(g_currentMission.environment.weather.temperatureUpdater.currentMin or 20)\r\n\r\n    self.monitor = monitor or { [\"active\"] = false, [\"removed\"] = false, [\"fee\"] = 5 }\r\n\r\n    local animalType = g_currentMission.animalSystem.types[self.animalTypeIndex]\r\n\r\n    self.monitor.fee = animalType == nil and 5 or math.max(animalType.navMeshAgentAttributes.height * animalType.navMeshAgentAttributes.radius * 15, 0.25)\r\n\r\n    return self\r\n\r\nend\r\n\r\nfunction Animal:delete()\r\n    local clusterSystem = self.clusterSystem or nil\r\n\r\n    if clusterSystem ~= nil then\r\n\r\n        for i, animal in pairs(clusterSystem.animals) do\r\n            if animal == self then\r\n                table.remove(clusterSystem.animals, i)\r\n                break\r\n            end\r\n        end\r\n\r\n    end\r\n\r\n    self = nil\r\n\r\nend\r\n\r\n\r\nfunction Animal:setClusterSystem(clusterSystem)\r\n    self.clusterSystem = clusterSystem\r\n    if clusterSystem ~= nil then self.sale = nil end\r\nend\r\n\r\n\r\nfunction Animal:getSupportsMerging()\r\n    return false\r\nend\r\n\r\n\r\nfunction Animal.loadFromXMLFile(xmlFile, key, clusterSystem, isLegacy)\r\n\r\n    local subTypeIndex\r\n    \r\n    if isLegacy then\r\n        subTypeIndex = xmlFile:getInt(key .. \"#subType\", 3)\r\n    else\r\n        local subTypeName = xmlFile:getString(key .. \"#subType\", \"COW_HOLSTEIN\")\r\n        subTypeIndex = g_currentMission.animalSystem:getSubTypeIndexByName(subTypeName)\r\n    end\r\n\r\n    if subTypeIndex == nil then return nil end\r\n\r\n    local age = xmlFile:getInt(key .. \"#age\")\r\n    local health = xmlFile:getFloat(key .. \"#health\")\r\n    local monthsSinceLastBirth = xmlFile:getInt(key .. \"#monthsSinceLastBirth\")\r\n    local gender = xmlFile:getString(key .. \"#gender\")\r\n    local reproduction = xmlFile:getFloat(key .. \"#reproduction\", 0)\r\n    local isParent = xmlFile:getBool(key .. \"#isParent\")\r\n    local isPregnant = xmlFile:getBool(key .. \"#isPregnant\")\r\n    local isLactating = xmlFile:getBool(key .. \"#isLactating\")\r\n    local recentlyBoughtByAI = xmlFile:getBool(key .. \"#recentlyBoughtByAI\", false)\r\n    local id = xmlFile:getString(key .. \"#id\", nil)\r\n    local farmId = xmlFile:getString(key .. \"#farmId\", nil)\r\n    local motherId = xmlFile:getString(key .. \"#motherId\", nil)\r\n    local fatherId = xmlFile:getString(key .. \"#fatherId\", nil)\r\n    local weight = xmlFile:getFloat(key .. \"#weight\", nil)\r\n    local variation = xmlFile:getInt(key .. \"#variation\", nil)\r\n\r\n    local marks = Animal.getDefaultMarks()\r\n\r\n    xmlFile:iterate(key .. \".marks.mark\", function(_, markKey)\r\n    \r\n        local mark = xmlFile:getString(markKey .. \"#key\", \"PLAYER\")\r\n        marks[mark].active = xmlFile:getBool(markKey .. \"#active\", false)\r\n    \r\n    end)\r\n\r\n    if subTypeIndex == nil then\r\n        local subTypeName = xmlFile:getString(key .. \"#subType\", nil)\r\n        if subTypeName == nil then return nil end\r\n        subTypeIndex = g_currentMission.animalSystem:getSubTypeIndexByName(subTypeName)\r\n    end\r\n\r\n\r\n    local name = xmlFile:getString(key .. \"#name\", nil)\r\n    local dirt = xmlFile:getFloat(key .. \"#dirt\", nil)\r\n    local fitness = xmlFile:getFloat(key .. \"#fitness\", nil)\r\n    local riding = xmlFile:getFloat(key .. \"#riding\", nil)\r\n\r\n    local pos = nil\r\n\r\n    local children = {}\r\n\r\n    xmlFile:iterate(key .. \".children.child\", function (_, childrenKey)\r\n\r\n        local childUniqueId = xmlFile:getString(childrenKey .. \"#uniqueId\", nil)\r\n        local childFarmId = xmlFile:getString(childrenKey .. \"#farmId\", nil)\r\n        local child = {\r\n            farmId = childFarmId,\r\n            uniqueId = childUniqueId\r\n        }\r\n        table.insert(children, child)\r\n\r\n    end)\r\n\r\n\r\n    local pregnancy\r\n\r\n    if xmlFile:hasProperty(key .. \".pregnancy\") then\r\n\r\n        pregnancy = { [\"pregnancies\"] = {} }\r\n        local pregnancyKey = key .. \".pregnancy\"\r\n\r\n        pregnancy.expected = {\r\n            [\"day\"] = xmlFile:getInt(pregnancyKey .. \"#day\", 1),\r\n            [\"month\"] = xmlFile:getInt(pregnancyKey .. \"#month\", 1),\r\n            [\"year\"] = xmlFile:getInt(pregnancyKey .. \"#year\", 1)\r\n        }\r\n\r\n        pregnancy.duration = xmlFile:getInt(pregnancyKey .. \"#duration\", 1)\r\n\r\n        xmlFile:iterate(pregnancyKey .. \".pregnancies.pregnancy\", function (_, pregnanciesKey)\r\n\r\n            local child = Animal.loadFromXMLFile(xmlFile, pregnanciesKey, nil, isLegacy)\r\n\r\n            table.insert(pregnancy.pregnancies, child)\r\n\r\n        end)\r\n\r\n    end\r\n\r\n\r\n    local birthdayDay = xmlFile:getInt(key .. \".birthday#day\", nil)\r\n    local birthdayMonth = xmlFile:getInt(key .. \".birthday#month\", nil)\r\n    local birthdayYear = xmlFile:getInt(key .. \".birthday#year\", nil)\r\n    local birthdayCountry = xmlFile:getInt(key .. \".birthday#country\", nil)\r\n    local lastAgeMonth = xmlFile:getInt(key .. \".birthday#lastAgeMonth\", 0)\r\n\r\n\r\n    local birthday\r\n\r\n    if birthdayDay ~= nil and birthdayMonth ~= nil and birthdayYear ~= nil and birthdayCountry ~= nil then\r\n        birthday = {\r\n            [\"day\"] = birthdayDay,\r\n            [\"month\"] = birthdayMonth,\r\n            [\"year\"] = birthdayYear,\r\n            [\"country\"] = birthdayCountry,\r\n            [\"lastAgeMonth\"] = lastAgeMonth\r\n        }\r\n    end\r\n\r\n    \r\n\r\n\r\n    --local impregnatedById = xmlFile:getString(key .. \".impregnatedBy#uniqueId\", nil)\r\n    --local impregnatedByMetabolism = xmlFile:getFloat(key .. \".impregnatedBy#metabolism\", nil)\r\n    --local impregnatedByMeatQuality = xmlFile:getFloat(key .. \".impregnatedBy#quality\", nil)\r\n    --local impregnatedByProductivity = xmlFile:getFloat(key .. \".impregnatedBy#productivity\", nil)\r\n    --local impregnatedByHealth = xmlFile:getFloat(key .. \".impregnatedBy#health\", nil)\r\n    --local impregnatedByFertility = xmlFile:getFloat(key .. \".impregnatedBy#fertility\", nil)\r\n\r\n    local impregnatedBy\r\n\r\n    if xmlFile:hasProperty(key .. \".impregnatedBy\") then\r\n    \r\n        impregnatedBy = {\r\n            [\"uniqueId\"] = xmlFile:getString(key .. \".impregnatedBy#uniqueId\", nil),\r\n            [\"metabolism\"] = xmlFile:getFloat(key .. \".impregnatedBy#metabolism\", nil),\r\n            [\"productivity\"] = xmlFile:getFloat(key .. \".impregnatedBy#productivity\", nil),\r\n            [\"quality\"] = xmlFile:getFloat(key .. \".impregnatedBy#quality\", nil),\r\n            [\"health\"] = xmlFile:getFloat(key .. \".impregnatedBy#health\", nil),\r\n            [\"fertility\"] = xmlFile:getFloat(key .. \".impregnatedBy#fertility\", nil)\r\n        }\r\n\r\n    end\r\n\r\n\r\n    --local metabolism = xmlFile:getFloat(key .. \".genetics#metabolism\", nil)\r\n    --local productivity = xmlFile:getFloat(key .. \".genetics#productivity\", nil)\r\n    --local quality = xmlFile:getFloat(key .. \".genetics#quality\", nil)\r\n    --local healthGenetics = xmlFile:getFloat(key .. \".genetics#health\", nil)\r\n    --local fertility = xmlFile:getFloat(key .. \".genetics#fertility\", nil)\r\n    \r\n    local genetics\r\n\r\n    if xmlFile:hasProperty(key .. \".genetics\") then\r\n\r\n        genetics = {\r\n            [\"metabolism\"] = xmlFile:getFloat(key .. \".genetics#metabolism\", nil),\r\n            [\"productivity\"] = xmlFile:getFloat(key .. \".genetics#productivity\", nil),\r\n            [\"quality\"] = xmlFile:getFloat(key .. \".genetics#quality\", nil),\r\n            [\"health\"] = xmlFile:getFloat(key .. \".genetics#health\", nil),\r\n            [\"fertility\"] = xmlFile:getFloat(key .. \".genetics#fertility\", nil)\r\n        }\r\n\r\n    end\r\n\r\n\r\n    local monitor = { [\"active\"] = xmlFile:getBool(key .. \".monitor#active\", false), [\"removed\"] = xmlFile:getBool(key .. \".monitor#removed\", false) }\r\n\r\n    local isCastrated = xmlFile:getBool(key .. \"#isCastrated\", false)\r\n\r\n    local diseases = {}\r\n\r\n    xmlFile:iterate(key .. \".diseases.disease\", function (_, diseaseKey)\r\n    \r\n        local diseaseType = g_diseaseManager:getDiseaseByTitle(xmlFile:getString(diseaseKey .. \"#title\"))\r\n        local disease = Disease.new(diseaseType)\r\n\r\n        disease:loadFromXMLFile(xmlFile, diseaseKey)\r\n\r\n        table.insert(diseases, disease)\r\n    \r\n    end)\r\n\r\n    \r\n    local insemination\r\n\r\n    if xmlFile:hasProperty(key .. \".insemination\") then\r\n\r\n        insemination = {\r\n            [\"country\"] = xmlFile:getInt(key .. \".insemination#country\"),\r\n            [\"farmId\"] = xmlFile:getString(key .. \".insemination#farmId\"),\r\n            [\"uniqueId\"] = xmlFile:getString(key .. \".insemination#uniqueId\"),\r\n            [\"name\"] = xmlFile:getString(key .. \".insemination#name\"),\r\n            [\"subTypeIndex\"] = xmlFile:getInt(key .. \".insemination#subTypeIndex\"),\r\n            [\"genetics\"] = {},\r\n            [\"success\"] = xmlFile:getFloat(key .. \".insemination#success\")\r\n        }\r\n\r\n        insemination.genetics.metabolism = xmlFile:getFloat(key .. \".insemination.genetics#metabolism\")\r\n        insemination.genetics.health = xmlFile:getFloat(key .. \".insemination.genetics#health\")\r\n        insemination.genetics.fertility = xmlFile:getFloat(key .. \".insemination.genetics#fertility\")\r\n        insemination.genetics.quality = xmlFile:getFloat(key .. \".insemination.genetics#quality\")\r\n        insemination.genetics.productivity = xmlFile:getFloat(key .. \".insemination.genetics#productivity\")\r\n\r\n    end\r\n\r\n\r\n\r\n    local animal = Animal.new(age, health, monthsSinceLastBirth, gender, subTypeIndex, reproduction, isParent, isPregnant, isLactating, clusterSystem, id, motherId, fatherId, pos, name, dirt, fitness, riding, farmId, weight, genetics, impregnatedBy, variation, children, monitor, isCastrated, diseases, recentlyBoughtByAI, marks, insemination)\r\n    --local animal = Animal.new(age, health, monthsSinceLastBirth, gender, subTypeIndex, reproduction, isParent, isPregnant, isLactating, clusterSystem, id, motherId, fatherId, impregnatedById, pos, name, dirt, fitness, riding, farmId, weight, metabolism, impregnatedByMetabolism, impregnatedByProductivity, productivity, quality, impregnatedByMeatQuality, impregnatedByHealth, impregnatedByFertility, healthGenetics, fertility, variation, children)\r\n\r\n    animal:setBirthday(birthday)\r\n    \r\n    if pregnancy ~= nil and #pregnancy.pregnancies > 0 then\r\n        animal.pregnancy = pregnancy\r\n    elseif reproduction > 0 then\r\n\r\n        if animal.clusterSystem ~= nil then\r\n\r\n            local childNum = animal:generateRandomOffspring()\r\n\r\n            if childNum > 0 then\r\n\r\n                local month = g_currentMission.environment.currentPeriod + 2\r\n                if month > 12 then month = month - 12 end\r\n                local year = g_currentMission.environment.currentYear\r\n\r\n                animal:createPregnancy(childNum, month, year)\r\n\r\n            else\r\n\r\n                animal.reproduction = 0\r\n                animal.isPregnant = false\r\n\r\n            end\r\n\r\n        else\r\n            \r\n            animal.reproduction = 0\r\n            animal.isPregnant = false\r\n\r\n        end\r\n\r\n    end\r\n\r\n    return animal\r\n\r\nend\r\n\r\n\r\nfunction Animal:saveToXMLFile(xmlFile, key)\r\n\r\n    xmlFile:setInt(key .. \"#age\", self.age)\r\n    xmlFile:setFloat(key .. \"#health\", self.health)\r\n    xmlFile:setInt(key .. \"#monthsSinceLastBirth\", self.monthsSinceLastBirth)\r\n    xmlFile:setInt(key .. \"#numAnimals\", 1)\r\n    xmlFile:setString(key .. \"#gender\", self.gender)\r\n    xmlFile:setString(key .. \"#subType\", self.subType)\r\n    xmlFile:setFloat(key .. \"#reproduction\", self.reproduction)\r\n    xmlFile:setBool(key .. \"#isParent\", self.isParent)\r\n    xmlFile:setBool(key .. \"#isPregnant\", self.isPregnant)\r\n    xmlFile:setBool(key .. \"#isLactating\", self.isLactating)\r\n    xmlFile:setBool(key .. \"#recentlyBoughtByAI\", self.recentlyBoughtByAI or false)\r\n    xmlFile:setString(key .. \"#id\", self.uniqueId)\r\n    if self.variation ~= nil then xmlFile:setInt(key .. \"#variation\", self.variation) end\r\n    xmlFile:setString(key .. \"#farmId\", self.farmId)\r\n    xmlFile:setString(key .. \"#motherId\", self.motherId)\r\n    xmlFile:setString(key .. \"#fatherId\", self.fatherId)\r\n    xmlFile:setFloat(key .. \"#weight\", self.weight)\r\n\r\n    local markI = 0\r\n    \r\n    for _, mark in pairs(self.marks) do\r\n\r\n        local markKey = string.format(\"%s.marks.mark(%s)\", key, markI)\r\n\r\n        xmlFile:setString(markKey .. \"#key\", mark.key)\r\n        xmlFile:setBool(markKey .. \"#active\", mark.active)\r\n\r\n        markI = markI + 1\r\n\r\n    end\r\n\r\n    if self.name ~= nil and self.name ~= \"\" then xmlFile:setString(key .. \"#name\", self.name) end\r\n    \r\n    if self.animalTypeIndex == AnimalType.HORSE then\r\n        xmlFile:setFloat(key .. \"#dirt\", self.dirt)\r\n        xmlFile:setFloat(key .. \"#fitness\", self.fitness)\r\n        xmlFile:setFloat(key .. \"#riding\", self.riding)\r\n    end\r\n\r\n    xmlFile:setSortedTable(key .. \".children.child\", self.children, function (index, child)\r\n        xmlFile:setString(index .. \"#uniqueId\", child.uniqueId)\r\n        xmlFile:setString(index .. \"#farmId\", child.farmId)\r\n    end)\r\n\r\n    if self.pregnancy ~= nil then\r\n\r\n        local pregnancy = self.pregnancy\r\n        local pregnancyKey = key .. \".pregnancy\"\r\n\r\n        xmlFile:setInt(pregnancyKey .. \"#day\", pregnancy.expected.day)\r\n        xmlFile:setInt(pregnancyKey .. \"#month\", pregnancy.expected.month)\r\n        xmlFile:setInt(pregnancyKey .. \"#year\", pregnancy.expected.year)\r\n        xmlFile:setInt(pregnancyKey .. \"#duration\", pregnancy.duration)\r\n\r\n        xmlFile:setSortedTable(pregnancyKey .. \".pregnancies.pregnancy\", pregnancy.pregnancies, function (index, child)\r\n        \r\n            xmlFile:setFloat(index .. \"#health\", child.health)\r\n            xmlFile:setString(index .. \"#gender\", child.gender)\r\n            xmlFile:setString(index .. \"#subType\", child.subType)\r\n            xmlFile:setString(index .. \"#motherId\", child.motherId)\r\n            xmlFile:setString(index .. \"#fatherId\", child.fatherId)\r\n\r\n            local pregnancyGenetics = child.genetics\r\n\r\n            if pregnancyGenetics ~= nil then\r\n\r\n                xmlFile:setFloat(index .. \".genetics#metabolism\", pregnancyGenetics.metabolism)\r\n                xmlFile:setFloat(index .. \".genetics#quality\", pregnancyGenetics.quality)\r\n                xmlFile:setFloat(index .. \".genetics#health\", pregnancyGenetics.health)\r\n                xmlFile:setFloat(index .. \".genetics#fertility\", pregnancyGenetics.fertility)\r\n                if pregnancyGenetics.productivity ~= nil then xmlFile:setFloat(index .. \".genetics#productivity\", pregnancyGenetics.productivity) end\r\n\r\n            end\r\n\r\n            xmlFile:setSortedTable(index .. \".diseases.disease\", child.diseases, function (diseaseKey, disease)\r\n                disease:saveToXMLFile(xmlFile, diseaseKey)\r\n            end)\r\n\r\n        end)\r\n\r\n    end\r\n\r\n    if self.impregnatedBy ~= nil then\r\n\r\n        xmlFile:setString(key .. \".impregnatedBy#uniqueId\", self.impregnatedBy.uniqueId)\r\n        xmlFile:setFloat(key .. \".impregnatedBy#metabolism\", self.impregnatedBy.metabolism)\r\n        xmlFile:setFloat(key .. \".impregnatedBy#quality\", self.impregnatedBy.quality)\r\n        xmlFile:setFloat(key .. \".impregnatedBy#health\", self.impregnatedBy.health)\r\n        xmlFile:setFloat(key .. \".impregnatedBy#fertility\", self.impregnatedBy.fertility)\r\n        if self.impregnatedBy.productivity ~= nil then xmlFile:setFloat(key .. \".impregnatedBy#productivity\", self.impregnatedBy.productivity) end\r\n    end\r\n\r\n    if self.genetics ~= nil then\r\n\r\n        xmlFile:setFloat(key .. \".genetics#metabolism\", self.genetics.metabolism)\r\n        xmlFile:setFloat(key .. \".genetics#quality\", self.genetics.quality)\r\n        xmlFile:setFloat(key .. \".genetics#health\", self.genetics.health)\r\n        xmlFile:setFloat(key .. \".genetics#fertility\", self.genetics.fertility)\r\n        if self.genetics.productivity ~= nil then xmlFile:setFloat(key .. \".genetics#productivity\", self.genetics.productivity) end\r\n    end\r\n\r\n    if self.birthday ~= nil then\r\n\r\n        xmlFile:setInt(key .. \".birthday#day\", self.birthday.day)\r\n        xmlFile:setInt(key .. \".birthday#month\", self.birthday.month)\r\n        xmlFile:setInt(key .. \".birthday#year\", self.birthday.year)\r\n        xmlFile:setInt(key .. \".birthday#country\", self.birthday.country)\r\n        xmlFile:setInt(key .. \".birthday#lastAgeMonth\", self.birthday.lastAgeMonth)\r\n\r\n    end\r\n\r\n    if self.insemination ~= nil then\r\n\r\n        local insemination = self.insemination\r\n\r\n        xmlFile:setInt(key .. \".insemination#country\", insemination.country)\r\n        xmlFile:setString(key .. \".insemination#farmId\", insemination.farmId)\r\n        xmlFile:setString(key .. \".insemination#uniqueId\", insemination.uniqueId)\r\n        xmlFile:setString(key .. \".insemination#name\", insemination.name)\r\n        xmlFile:setInt(key .. \".insemination#subTypeIndex\", insemination.subTypeIndex)\r\n        xmlFile:setFloat(key .. \".insemination#success\", insemination.success)\r\n        xmlFile:setFloat(key .. \".insemination.genetics#metabolism\", insemination.genetics.metabolism)\r\n        xmlFile:setFloat(key .. \".insemination.genetics#quality\", insemination.genetics.quality)\r\n        xmlFile:setFloat(key .. \".insemination.genetics#health\", insemination.genetics.health)\r\n        xmlFile:setFloat(key .. \".insemination.genetics#fertility\", insemination.genetics.fertility)\r\n        if insemination.genetics.productivity ~= nil then xmlFile:setFloat(key .. \".insemination.genetics#productivity\", insemination.genetics.productivity) end\r\n\r\n    end\r\n\r\n    xmlFile:setBool(key .. \".monitor#active\", self.monitor.active)\r\n    xmlFile:setBool(key .. \".monitor#removed\", self.monitor.removed)\r\n\r\n    if self.isCastrated then xmlFile:setBool(key .. \"#isCastrated\", true) end\r\n\r\n    for i, disease in pairs(self.diseases) do\r\n\r\n        disease:saveToXMLFile(xmlFile, key .. \".diseases.disease(\" .. (i - 1) .. \")\")\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction Animal:writeStream(streamId, connection)\r\n\r\n    streamWriteUInt8(streamId, self.subTypeIndex)\r\n    streamWriteUInt16(streamId, self.age)\r\n    streamWriteFloat32(streamId, self.health)\r\n    streamWriteFloat32(streamId, self.reproduction)\r\n    streamWriteUInt16(streamId, self.monthsSinceLastBirth)\r\n    streamWriteString(streamId, self.gender)\r\n\r\n    streamWriteBool(streamId, self.isParent)\r\n    streamWriteBool(streamId, self.isPregnant and self.pregnancy ~= nil)\r\n    streamWriteBool(streamId, self.isLactating)\r\n\r\n    streamWriteBool(streamId, self.recentlyBoughtByAI or false)\r\n\r\n    local numMarks = 0\r\n\r\n    for key, mark in pairs(self.marks) do numMarks = numMarks + 1 end\r\n\r\n    streamWriteUInt8(streamId, numMarks)\r\n    \r\n    for key, mark in pairs(self.marks) do\r\n\r\n        streamWriteString(streamId, key)\r\n        streamWriteBool(streamId, mark.active)\r\n\r\n    end\r\n\r\n    streamWriteString(streamId, self.uniqueId)\r\n    streamWriteString(streamId, self.farmId)\r\n    streamWriteUInt8(streamId, self.variation or 1)\r\n    streamWriteString(streamId, self.motherId or \"-1\")\r\n    streamWriteString(streamId, self.fatherId or \"-1\")\r\n    streamWriteFloat32(streamId, self.weight)\r\n    streamWriteFloat32(streamId, self.targetWeight)\r\n\r\n    streamWriteBool(streamId, self.name ~= nil and self.name ~= \"\")\r\n    \r\n    if self.name ~= nil and self.name ~= \"\" then streamWriteString(streamId, self.name) end\r\n\r\n    streamWriteFloat32(streamId, self.dirt or 0)\r\n    streamWriteFloat32(streamId, self.fitness or 0)\r\n    streamWriteFloat32(streamId, self.riding or 0)\r\n\r\n    if self.isPregnant and self.pregnancy ~= nil then\r\n\r\n        streamWriteBool(streamId, self.impregnatedBy ~= nil)\r\n\r\n        if self.impregnatedBy ~= nil then\r\n\r\n            local impregnatedBy = self.impregnatedBy\r\n\r\n            streamWriteString(streamId, impregnatedBy.uniqueId or \"-1\")\r\n            streamWriteFloat32(streamId, impregnatedBy.metabolism or 1)\r\n            streamWriteFloat32(streamId, impregnatedBy.productivity or 1)\r\n            streamWriteFloat32(streamId, impregnatedBy.quality or 1)\r\n            streamWriteFloat32(streamId, impregnatedBy.health or 1)\r\n            streamWriteFloat32(streamId, impregnatedBy.fertility or 1)\r\n\r\n        end\r\n\r\n        local pregnancy = self.pregnancy\r\n\r\n        streamWriteUInt8(streamId, pregnancy.expected.day)\r\n        streamWriteUInt8(streamId, pregnancy.expected.month)\r\n        streamWriteUInt8(streamId, pregnancy.expected.year)\r\n        streamWriteUInt8(streamId, pregnancy.duration)\r\n\r\n        streamWriteUInt8(streamId, pregnancy.pregnancies == nil and 0 or #pregnancy.pregnancies)\r\n\r\n        for _, child in pairs(pregnancy.pregnancies or {}) do\r\n\r\n            streamWriteFloat32(streamId, child.health)\r\n            streamWriteString(streamId, child.gender)\r\n            streamWriteUInt8(streamId, child.subTypeIndex)\r\n            streamWriteString(streamId, child.motherId)\r\n            streamWriteString(streamId, child.fatherId)\r\n\r\n            local genetics = child.genetics\r\n\r\n            streamWriteFloat32(streamId, genetics.metabolism)\r\n            streamWriteFloat32(streamId, genetics.health)\r\n            streamWriteFloat32(streamId, genetics.fertility)\r\n            streamWriteFloat32(streamId, genetics.quality)\r\n            streamWriteFloat32(streamId, genetics.productivity or 0)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    if self.isParent then\r\n\r\n        streamWriteUInt16(streamId, #self.children)\r\n\r\n        for _, child in pairs(self.children or {}) do\r\n            streamWriteString(streamId, child.uniqueId or \"\")\r\n            streamWriteString(streamId, child.farmId or \"\")\r\n        end\r\n\r\n    end\r\n\r\n    local birthday = self.birthday\r\n\r\n    streamWriteUInt8(streamId, birthday.day)\r\n    streamWriteUInt8(streamId, birthday.month)\r\n    streamWriteUInt8(streamId, birthday.year)\r\n    streamWriteUInt8(streamId, birthday.country)\r\n    streamWriteUInt8(streamId, birthday.lastAgeMonth)\r\n\r\n    local genetics, numGenetics = self.genetics, 0\r\n    \r\n    for trait, quality in pairs(genetics) do numGenetics = numGenetics + 1 end\r\n\r\n    streamWriteUInt8(streamId, numGenetics)\r\n\r\n    for trait, quality in pairs(genetics) do\r\n        streamWriteString(streamId, trait)\r\n        streamWriteFloat32(streamId, quality)\r\n    end\r\n\r\n    streamWriteBool(streamId, self.monitor.active)\r\n    streamWriteBool(streamId, self.monitor.removed)\r\n    streamWriteFloat32(streamId, self.monitor.fee or 5)\r\n\r\n    streamWriteBool(streamId, self.isCastrated or false)\r\n\r\n    streamWriteUInt8(streamId, #self.diseases)\r\n\r\n    for i = 1, #self.diseases do\r\n\r\n        self.diseases[i]:writeStream(streamId, connection)\r\n\r\n    end\r\n\r\n    streamWriteBool(streamId, self.insemination ~= nil)\r\n\r\n    if self.insemination ~= nil then\r\n\r\n        streamWriteUInt8(streamId, self.insemination.country)\r\n        streamWriteString(streamId, self.insemination.farmId)\r\n        streamWriteString(streamId, self.insemination.uniqueId)\r\n        streamWriteString(streamId, self.insemination.name)\r\n        streamWriteUInt8(streamId, self.insemination.subTypeIndex)\r\n        streamWriteFloat32(streamId, self.insemination.success)\r\n        streamWriteFloat32(streamId, self.insemination.genetics.metabolism)\r\n        streamWriteFloat32(streamId, self.insemination.genetics.health)\r\n        streamWriteFloat32(streamId, self.insemination.genetics.fertility)\r\n        streamWriteFloat32(streamId, self.insemination.genetics.quality)\r\n        streamWriteFloat32(streamId, self.insemination.genetics.productivity or 0)\r\n\r\n    end\r\n\r\n    return true\r\n\r\nend\r\n\r\n\r\n\r\nfunction Animal:readStream(streamId, connection)\r\n\r\n    self.subTypeIndex = streamReadUInt8(streamId)\r\n\r\n    self.subType = g_currentMission.animalSystem:getSubTypeByIndex(self.subTypeIndex).name\r\n    self.animalTypeIndex = g_currentMission.animalSystem:getTypeIndexBySubTypeIndex(self.subTypeIndex)\r\n\r\n    self.age = streamReadUInt16(streamId)\r\n    self.health = streamReadFloat32(streamId)\r\n    self.reproduction = streamReadFloat32(streamId)\r\n    self.monthsSinceLastBirth = streamReadUInt16(streamId)\r\n    self.gender = streamReadString(streamId)\r\n\r\n    self.isParent = streamReadBool(streamId)\r\n    self.isPregnant = streamReadBool(streamId)\r\n    self.isLactating = streamReadBool(streamId)\r\n\r\n    self.recentlyBoughtByAI = streamReadBool(streamId)\r\n    \r\n    local numMarks = streamReadUInt8(streamId)\r\n\r\n    for i = 1, numMarks do\r\n\r\n        local key = streamReadString(streamId)\r\n        local active = streamReadBool(streamId)\r\n\r\n        self.marks[key].active = active\r\n\r\n    end\r\n\r\n    self.uniqueId = streamReadString(streamId)\r\n    self.farmId = streamReadString(streamId)\r\n    self.variation = streamReadUInt8(streamId)\r\n    self.motherId = streamReadString(streamId)\r\n    self.fatherId = streamReadString(streamId)\r\n    self.weight = streamReadFloat32(streamId)\r\n    self.targetWeight = streamReadFloat32(streamId)\r\n    \r\n    local hasName = streamReadBool(streamId)\r\n    self.name = hasName and streamReadString(streamId) or nil\r\n\r\n    self.dirt = streamReadFloat32(streamId)\r\n    self.fitness = streamReadFloat32(streamId)\r\n    self.riding = streamReadFloat32(streamId)\r\n\r\n    if self.isPregnant then\r\n\r\n        if streamReadBool(streamId) then\r\n\r\n            local uniqueId = streamReadString(streamId)\r\n            local metabolism = streamReadFloat32(streamId)\r\n            local productivity = streamReadFloat32(streamId)\r\n            local quality = streamReadFloat32(streamId)\r\n            local health = streamReadFloat32(streamId)\r\n            local fertility = streamReadFloat32(streamId)\r\n\r\n            self.impregnatedBy = {\r\n                [\"uniqueId\"] = uniqueId,\r\n                [\"metabolism\"] = metabolism,\r\n                [\"productivity\"] = productivity,\r\n                [\"quality\"] = quality,\r\n                [\"health\"] = health,\r\n                [\"fertility\"] = fertility\r\n            }\r\n\r\n        end\r\n\r\n        local pregnancy = { [\"expected\"] = {}, [\"pregnancies\"] = {} }\r\n\r\n        pregnancy.expected.day = streamReadUInt8(streamId)\r\n        pregnancy.expected.month = streamReadUInt8(streamId)\r\n        pregnancy.expected.year = streamReadUInt8(streamId)\r\n        pregnancy.duration = streamReadUInt8(streamId)\r\n\r\n        local numChildren = streamReadUInt8(streamId)\r\n\r\n        for i = 1, numChildren do\r\n\r\n            local health = streamReadFloat32(streamId)\r\n            local gender = streamReadString(streamId)\r\n            local subTypeIndex = streamReadUInt8(streamId)\r\n            local motherId = streamReadString(streamId)\r\n            local fatherId = streamReadString(streamId)\r\n\r\n            local genetics = {}\r\n\r\n            genetics.metabolism = streamReadFloat32(streamId)\r\n            genetics.health = streamReadFloat32(streamId)\r\n            genetics.fertility = streamReadFloat32(streamId)\r\n            genetics.quality = streamReadFloat32(streamId)\r\n\r\n            local productivity = streamReadFloat32(streamId)\r\n\r\n            if productivity ~= nil then genetics.productivity = productivity end\r\n\r\n            local child = Animal.new(0, health, 0, gender, subTypeIndex, 0, false, false, false, nil, nil, motherId, fatherId, nil, nil, nil, nil, nil, nil, nil, genetics)\r\n\r\n            table.insert(pregnancy.pregnancies, child)\r\n\r\n        end\r\n\r\n        self.pregnancy = pregnancy\r\n\r\n    end\r\n\r\n    if self.isParent then\r\n\r\n        local children = {}\r\n        local numChildren = streamReadUInt16(streamId)\r\n\r\n        for i = 1, numChildren do\r\n\r\n            table.insert(children, {\r\n                [\"uniqueId\"] = streamReadString(streamId),\r\n                [\"farmId\"] = streamReadString(streamId)\r\n            })\r\n\r\n        end\r\n\r\n        self.children = children\r\n\r\n    end\r\n\r\n    self.birthday = {\r\n        [\"day\"] = streamReadUInt8(streamId),\r\n        [\"month\"] = streamReadUInt8(streamId),\r\n        [\"year\"] = streamReadUInt8(streamId),\r\n        [\"country\"] = streamReadUInt8(streamId),\r\n        [\"lastAgeMonth\"] = streamReadUInt8(streamId)\r\n    }\r\n\r\n    self.genetics = {}\r\n    local numGenetics = streamReadUInt8(streamId)\r\n\r\n    for i = 1, numGenetics do\r\n        local trait = streamReadString(streamId)\r\n        local quality = streamReadFloat32(streamId)\r\n        self.genetics[trait] = quality\r\n    end\r\n\r\n    self.monitor = {\r\n        [\"active\"] = streamReadBool(streamId),\r\n        [\"removed\"] = streamReadBool(streamId),\r\n        [\"fee\"] = streamReadFloat32(streamId)\r\n    }\r\n\r\n    self.isCastrated = streamReadBool(streamId)\r\n\r\n    local numDiseases = streamReadUInt8(streamId)\r\n    local diseases = {}\r\n\r\n    for i = 1, numDiseases do\r\n\r\n        local diseaseType = g_diseaseManager:getDiseaseByTitle(streamReadString(streamId))\r\n        local disease = Disease.new(diseaseType)\r\n\r\n        disease:readStream(streamId, connection)\r\n\r\n        table.insert(diseases, disease)\r\n\r\n    end\r\n\r\n    self.diseases = diseases\r\n\r\n    local hasInsemination = streamReadBool(streamId)\r\n    local insemination\r\n\r\n    if hasInsemination then\r\n\r\n        insemination = {\r\n            [\"country\"] = streamReadUInt8(streamId),\r\n            [\"farmId\"] = streamReadString(streamId),\r\n            [\"uniqueId\"] = streamReadString(streamId),\r\n            [\"name\"] = streamReadString(streamId),\r\n            [\"subTypeIndex\"] = streamReadUInt8(streamId),\r\n            [\"genetics\"] = {},\r\n            [\"success\"] =streamReadFloat32(streamId)\r\n        }\r\n\r\n        insemination.genetics.metabolism = streamReadFloat32(streamId)\r\n        insemination.genetics.health = streamReadFloat32(streamId)\r\n        insemination.genetics.fertility = streamReadFloat32(streamId)\r\n        insemination.genetics.quality = streamReadFloat32(streamId)\r\n        insemination.genetics.productivity = streamReadFloat32(streamId)\r\n\r\n        if insemination.genetics.productivity == 0 then insemination.genetics.productivity = nil end\r\n\r\n    end\r\n\r\n    self.insemination = insemination\r\n\r\n    return true\r\n\r\nend\r\n\r\n\r\nfunction Animal:writeStreamIdentifiers(streamId, connection)\r\n\r\n    streamWriteString(streamId, self.uniqueId)\r\n    streamWriteString(streamId, self.farmId)\r\n    streamWriteUInt8(streamId, self.birthday.country)\r\n    streamWriteUInt8(streamId, self.animalTypeIndex)\r\n\r\n    return true\r\n\r\nend\r\n\r\n\r\nfunction Animal.readStreamIdentifiers(streamId, connection)\r\n\r\n    local uniqueId = streamReadString(streamId)\r\n    local farmId = streamReadString(streamId)\r\n    local country = streamReadUInt8(streamId)\r\n    local animalTypeIndex = streamReadUInt8(streamId)\r\n\r\n    return {\r\n        [\"uniqueId\"] = uniqueId,\r\n        [\"farmId\"] = farmId,\r\n        [\"country\"] = country,\r\n        [\"animalTypeIndex\"] = animalTypeIndex\r\n    }\r\n\r\nend\r\n\r\n\r\nfunction Animal:writeStreamUnborn(streamId, connection)\r\n\r\n    streamWriteUInt8(streamId, self.subTypeIndex)\r\n\r\n    streamWriteFloat32(streamId, self.health)\r\n    streamWriteString(streamId, self.gender)\r\n\r\n    streamWriteString(streamId, self.motherId or \"-1\")\r\n    streamWriteString(streamId, self.fatherId or \"-1\")\r\n    streamWriteFloat32(streamId, self.targetWeight)\r\n\r\n    local genetics, numGenetics = self.genetics, 0\r\n    \r\n    for trait, quality in pairs(genetics) do numGenetics = numGenetics + 1 end\r\n\r\n    streamWriteUInt8(streamId, numGenetics)\r\n\r\n    for trait, quality in pairs(genetics) do\r\n        streamWriteString(streamId, trait)\r\n        streamWriteFloat32(streamId, quality)\r\n    end\r\n\r\n    streamWriteUInt8(streamId, #self.diseases)\r\n\r\n    for i = 1, #self.diseases do\r\n\r\n        self.diseases[i]:writeStream(streamId, connection)\r\n\r\n    end\r\n\r\n    return true\r\n\r\nend\r\n\r\n\r\n\r\nfunction Animal:readStreamUnborn(streamId, connection)\r\n\r\n    self.subTypeIndex = streamReadUInt8(streamId)\r\n\r\n    self.subType = g_currentMission.animalSystem:getSubTypeByIndex(self.subTypeIndex).name\r\n    self.animalTypeIndex = g_currentMission.animalSystem:getTypeIndexBySubTypeIndex(self.subTypeIndex)\r\n\r\n    self.health = streamReadFloat32(streamId)\r\n    self.gender = streamReadString(streamId)\r\n\r\n    self.motherId = streamReadString(streamId)\r\n    self.fatherId = streamReadString(streamId)\r\n    self.targetWeight = streamReadFloat32(streamId)\r\n\r\n    self.genetics = {}\r\n    local numGenetics = streamReadUInt8(streamId)\r\n\r\n    for i = 1, numGenetics do\r\n        local trait = streamReadString(streamId)\r\n        local quality = streamReadFloat32(streamId)\r\n        self.genetics[trait] = quality\r\n    end\r\n\r\n    local numDiseases = streamReadUInt8(streamId)\r\n    local diseases = {}\r\n\r\n    for i = 1, numDiseases do\r\n\r\n        local diseaseType = g_diseaseManager:getDiseaseByTitle(streamReadString(streamId))\r\n        local disease = Disease.new(diseaseType)\r\n\r\n        disease:readStream(streamId, connection)\r\n\r\n        table.insert(diseases, disease)\r\n\r\n    end\r\n\r\n    self.diseases = diseases\r\n\r\n    return true\r\n\r\nend\r\n\r\n\r\nfunction Animal:clone()\r\n\r\n    local impregnatedBy = self.impregnatedBy or nil\r\n    \r\n    --local newAnimal = self.new(self.age, self.health, self.monthsSinceLastBirth, self.gender, self.subTypeIndex, self.reproduction, self.isParent, self.isPregnant, self.isLactating, self.clusterSystem, self.uniqueId, self.motherId, self.fatherId, impregnatedBy ~= nil and impregnatedBy.uniqueId or nil, self.pos or nil, self.name or nil, self.dirt or nil, self.fitness or nil, self.riding or nil, self.farmId, self.weight, self.metabolism, impregnatedBy ~= nil and impregnatedBy.metabolism or nil, impregnatedBy ~= nil and impregnatedBy.productivity or nil, self.genetics.productivity or nil, self.genetics.quality, impregnatedBy ~= nil and impregnatedBy.quality or nil, impregnatedBy ~= nil and impregnatedBy.health or nil, impregnatedBy ~= nil and impregnatedBy.fertility or nil, self.genetics.health, self.genetics.fertility, self.variation, self.children)\r\n    local newAnimal = self.new(self.age, self.health, self.monthsSinceLastBirth, self.gender, self.subTypeIndex, self.reproduction, self.isParent, self.isPregnant, self.isLactating, self.clusterSystem, self.uniqueId, self.motherId, self.fatherId, self.pos, self.name, self.dirt, self.fitness, self.riding, self.farmId, self.weight, self.genetics, self.impregnatedBy, self.variation, self.children, self.monitor, self.isCastrated, self.diseases, self.recentlyBoughtByAI, self.marks, self.insemination)\r\n\r\n    --if self.impregnatedBy ~= nil then\r\n        --newAnimal.impregnatedBy = {\r\n            --uniqueId = self.impregnatedBy.uniqueId,\r\n            --metabolism = self.impregnatedBy.metabolism,\r\n            --quality = self.impregnatedBy.quality,\r\n            --health = self.impregnatedBy.health,\r\n            --fertility = self.impregnatedBy.fertility\r\n        --}\r\n    --end\r\n\r\n    newAnimal:setBirthday(self.birthday)\r\n    \r\n    if self.pregnancy ~= nil then newAnimal.pregnancy = self.pregnancy end\r\n\r\n    return newAnimal\r\n\r\nend\r\n\r\n\r\nfunction Animal:setBirthday(birthday)\r\n    \r\n    if birthday ~= nil then self.birthday = birthday end\r\n\r\nend\r\n\r\nfunction Animal:getBirthday()\r\n\r\n    return self.birthday\r\n\r\nend\r\n\r\n\r\nfunction Animal:setGenetics(genetics)\r\n\r\n    self.genetics = genetics\r\n\r\nend\r\n\r\n\r\nfunction Animal:getGenetics()\r\n\r\n    return self.genetics\r\n\r\nend\r\n\r\n\r\nfunction Animal:setUniqueId(farmId)\r\n\r\n    if self.clusterSystem == nil then\r\n    \r\n        if farmId == nil then return end\r\n\r\n        if type(farmId) == \"string\" then farmId = tonumber(farmId) end\r\n\r\n        local id = g_currentMission.animalSystem:getNextAnimalIdForFarm(self.birthday.country, self.animalTypeIndex, farmId)\r\n\r\n        id = tostring(id)\r\n        local idLen = string.len(id)\r\n\r\n        if idLen < 5 then\r\n            if idLen == 1 then\r\n                id = \"1000\" .. id\r\n            elseif idLen == 2 then\r\n                id = \"100\" .. id\r\n            elseif idLen == 3 then\r\n                id = \"10\" .. id\r\n            elseif idLen == 4 then\r\n                id = \"1\" .. id\r\n            end\r\n        end\r\n\r\n        local concatenated = farmId .. id\r\n        local checkDigit = (tonumber(concatenated)::number % 7) + 1\r\n        id = checkDigit .. id\r\n\r\n        self.farmId = tostring(farmId)\r\n        self.uniqueId = id\r\n\r\n        return\r\n    \r\n    end\r\n\r\n    local ownerFarmId = self.clusterSystem.owner.ownerFarmId\r\n\r\n    if ownerFarmId == nil then\r\n        self.uniqueId, self.farmId = \"1\", \"1\"\r\n        return\r\n    end\r\n\r\n    local farm = g_farmManager.farmIdToFarm[ownerFarmId]\r\n\r\n\r\n    if farm == nil then\r\n\r\n        self.uniqueId, self.farmId = \"1\", \"1\"\r\n\r\n    else\r\n\r\n        id = farm.stats:getNextAnimalId(g_currentMission.animalSystem:getSubTypeByIndex(self.subTypeIndex).typeIndex)\r\n\r\n        local farmHerdId = farm.stats.statistics.farmId\r\n        if farmHerdId == nil then\r\n            farmHerdId = math.random(100000, 999999)\r\n            farm.stats.statistics.farmId = farmHerdId\r\n        end\r\n\r\n        id = tostring(id)\r\n        local idLen = string.len(id)\r\n\r\n        if idLen < 5 then\r\n            if idLen == 1 then\r\n                id = \"1000\" .. id\r\n            elseif idLen == 2 then\r\n                id = \"100\" .. id\r\n            elseif idLen == 3 then\r\n                id = \"10\" .. id\r\n            elseif idLen == 4 then\r\n                id = \"1\" .. id\r\n            end\r\n        end\r\n\r\n        local concatenated = farmHerdId .. id\r\n        local checkDigit = (tonumber(concatenated)::number % 7) + 1\r\n        id = checkDigit .. id\r\n\r\n        self.farmId = tostring(farmHerdId)\r\n        self.uniqueId = id\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction Animal:getHash()\r\n    return (100 + self.age) + (1000 * (100 + self.health)) + (1000000 * (100 + self.reproduction)) + (1000000000 * (100 + self.subTypeIndex))\r\nend\r\n\r\n\r\n\r\nfunction Animal:changeNumAnimals(delta)\r\n\r\n    local oldNum = self.numAnimals\r\n    self.numAnimals = math.clamp(math.floor(self.numAnimals + delta), 0, 1)\r\n    self:setDirty()\r\n    return delta - (self.numAnimals - oldNum)\r\n\r\nend\r\n\r\n\r\nfunction Animal:setDirty()\r\n    self.isDirty = true\r\n    if self.clusterSystem ~= nil then self.clusterSystem:setDirty() end\r\nend\r\n\r\n\r\n\r\nfunction Animal:getRidableFilename()\r\n    return self:getSubType().rideableFilename or nil\r\nend\r\n\r\n\r\nfunction Animal:getNumAnimals()\r\n    return self.numAnimals\r\nend\r\n\r\nfunction Animal:getSubTypeIndex()\r\n    return self.subTypeIndex\r\nend\r\n\r\nfunction Animal:getSubType()\r\n    return g_currentMission.animalSystem:getSubTypeByName(self.subType)\r\nend\r\n\r\nfunction Animal:increaseAge()\r\n    self.age = self.age + 1\r\nend\r\n\r\nfunction Animal:getAge()\r\n    return self.age\r\nend\r\n\r\n\r\nfunction Animal:getName()\r\n    return self.name or \"\"\r\nend\r\n\r\n\r\nfunction Animal:setName(name)\r\n    self.name = name\r\nend\r\n\r\n\r\nfunction Animal:getTranportationFee(factor)\r\n    return g_currentMission.animalSystem:getAnimalTransportFee(self.subTypeIndex, self.age) * factor\r\nend\r\n\r\n\r\nfunction Animal:getCanBeSold()\r\n    return self.isDead == false\r\nend\r\n\r\n\r\nfunction Animal:addInfos(infos)\r\n\r\n    local subType = self:getSubType()\r\n\r\n    local hasMonitor = self.monitor.active or self.monitor.removed\r\n    local healthFactor = self:getHealthFactor()\r\n\r\n    if hasMonitor then\r\n\r\n        self.infoHealth.value = healthFactor\r\n        self.infoHealth.ratio = healthFactor\r\n        self.infoHealth.valueText = string.format(\"%d %%\", g_i18n:formatNumber(healthFactor * 100, 0))\r\n\r\n        table.insert(infos, self.infoHealth)\r\n\r\n    end\r\n\r\n    if self:getSupportsReproduction() then\r\n        local reproductionFactor = self:getReproductionFactor()\r\n        self.infoReproduction.value = reproductionFactor\r\n        self.infoReproduction.ratio = reproductionFactor\r\n        self.infoReproduction.valueText = string.format(\"%d %%\", g_i18n:formatNumber(reproductionFactor * 100, 0))\r\n        self.infoReproduction.disabled = not self:getCanReproduce()\r\n        self.infoReproduction.title = self.infoReproduction.titleOrg\r\n\r\n        if self.infoReproduction.disabled then\r\n            local attributeText, valueText = nil\r\n\r\n            if self.age < subType.reproductionMinAgeMonth then\r\n                attributeText = g_i18n:getText(\"rl_ui_tooYoung\")\r\n                valueText = g_i18n:formatNumMonth(subType.reproductionMinAgeMonth)\r\n            elseif self.isParent and self.monthsSinceLastBirth <= 2 then\r\n                attributeText = g_i18n:getText(\"rl_ui_recoveringLastBirth\")\r\n                valueText = g_i18n:formatNumMonth(3 - self.monthsSinceLastBirth)\r\n            elseif not RealisticLivestock.hasMaleAnimalInPen(self.clusterSystem, subType.name, self) and self.reproduction == 0 then\r\n                attributeText = g_i18n:getText(\"rl_ui_noMaleAnimal\")\r\n                valueText = \"0\"\r\n            elseif healthFactor < subType.reproductionMinHealth then\r\n                attributeText = g_i18n:getText(\"rl_ui_unhealthy\")\r\n                valueText = string.format(\"%d %%\", subType.reproductionMinHealth)\r\n            end\r\n\r\n            self.infoReproduction.title = self.infoReproduction.title .. string.format(\" (%s < %s)\", attributeText, valueText)\r\n        end\r\n\r\n        table.insert(infos, self.infoReproduction)\r\n    end\r\n\r\n    if hasMonitor then\r\n\r\n        if self.infoWeight == nil then\r\n            self.infoWeight = {\r\n                text = g_i18n:getText(\"rl_ui_weight\"),\r\n                title = g_i18n:getText(\"rl_ui_weight\")\r\n            }\r\n        end\r\n\r\n\r\n        self.infoWeight.value = 1\r\n        self.infoWeight.ratio = self.weight / self.targetWeight\r\n        self.infoWeight.valueText = string.format(\"%.2f\", self.weight) .. \"kg / \" .. string.format(\"%.2f\", self.targetWeight) .. \"kg\"\r\n\r\n        table.insert(infos, self.infoWeight)\r\n\r\n    end\r\n\r\n\r\n    if self.gender ~= nil and self.gender == \"female\" then\r\n\r\n        if self.infoPregnant == nil then\r\n            self.infoPregnant = {\r\n                text = g_i18n:getText(\"rl_ui_pregnant\"),\r\n                title = g_i18n:getText(\"rl_ui_pregnant\")\r\n            }\r\n        end\r\n\r\n\r\n        self.infoPregnant.value = 1\r\n        self.infoPregnant.ratio = self.isPregnant and 1 or 0\r\n        self.infoPregnant.valueText = self.isPregnant and g_i18n:getText(\"rl_ui_yes\") or g_i18n:getText(\"rl_ui_no\")\r\n\r\n        table.insert(infos, self.infoPregnant)\r\n\r\n        local pregnancy = self.pregnancy\r\n\r\n        if pregnancy ~= nil and pregnancy.pregnancies and #pregnancy.pregnancies > 0 then\r\n\r\n            if self.infoPregnancyExpecting == nil then\r\n                self.infoPregnancyExpecting = {\r\n                    text = g_i18n:getText(\"rl_ui_pregnancyExpecting\"),\r\n                    title = g_i18n:getText(\"rl_ui_pregnancyExpecting\"),\r\n                    value = 1,\r\n                    ratio = 1\r\n                }\r\n            end\r\n\r\n            if self.infoPregnancyExpected == nil then\r\n                self.infoPregnancyExpected = {\r\n                    text = g_i18n:getText(\"rl_ui_pregnancyExpected\"),\r\n                    title = g_i18n:getText(\"rl_ui_pregnancyExpected\"),\r\n                    value = 1,\r\n                    ratio = 1\r\n                }\r\n            end\r\n\r\n            self.infoPregnancyExpecting.valueText = string.format(\"%s %s\", #pregnancy.pregnancies, g_i18n:getText(\"rl_ui_pregnancy\" .. (#pregnancy.pregnancies == 1 and \"Baby\" or \"Babies\")))\r\n            self.infoPregnancyExpected.valueText = string.format(\"%s/%s/%s\", pregnancy.expected.day, pregnancy.expected.month, pregnancy.expected.year + RealisticLivestock.START_YEAR.FULL)\r\n\r\n            table.insert(infos, self.infoPregnancyExpecting)\r\n            table.insert(infos, self.infoPregnancyExpected)\r\n\r\n        end\r\n\r\n        if self.isLactating ~= nil and hasMonitor and self.age > 12 and self.clusterSystem ~= nil and self.clusterSystem.owner.spec_husbandryMilk ~= nil then\r\n\r\n            if self.infoLactation == nil then\r\n                self.infoLactation = {\r\n                    text = g_i18n:getText(\"rl_ui_lactating\"),\r\n                    title = g_i18n:getText(\"rl_ui_lactating\")\r\n                }\r\n            end\r\n\r\n            self.infoLactation.value = 1\r\n            self.infoLactation.ratio = self.isLactating and 1 or 0\r\n            self.infoLactation.valueText = self.isLactating and g_i18n:getText(\"rl_ui_yes\") or g_i18n:getText(\"rl_ui_no\")\r\n\r\n            table.insert(infos, self.infoLactation)\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n    if self.animalTypeIndex == AnimalType.HORSE then\r\n\r\n        if self.infoFitness == nil then\r\n                self.infoFitness = {\r\n                    text = \"\",\r\n                    title = g_i18n:getText(\"ui_horseFitness\")\r\n                }\r\n        end\r\n\r\n        local fitness = self:getFitnessFactor()\r\n\r\n        self.infoFitness.value = fitness\r\n        self.infoFitness.ratio = fitness\r\n        self.infoFitness.valueText = string.format(\"%d %%\", g_i18n:formatNumber(fitness * 100, 0))\r\n\r\n        table.insert(infos, self.infoFitness)\r\n\r\n\r\n        if self.infoRiding == nil then\r\n                self.infoRiding = {\r\n                    text = \"\",\r\n                    title = g_i18n:getText(\"ui_horseDailyRiding\")\r\n                }\r\n        end\r\n\r\n        local riding = self:getRidingFactor()\r\n\r\n        self.infoRiding.value = riding\r\n        self.infoRiding.ratio = riding\r\n        self.infoRiding.valueText = string.format(\"%d %%\", g_i18n:formatNumber(riding * 100, 0))\r\n\r\n        table.insert(infos, self.infoRiding)\r\n\r\n\r\n        if Platform.gameplay.needHorseCleaning then\r\n\r\n            if self.infoCleanliness == nil then\r\n                self.infoCleanliness = {\r\n                    text = \"\",\r\n                    title = g_i18n:getText(\"statistic_cleanliness\")\r\n                }\r\n            end\r\n\r\n            local cleanliness = 1 - self:getDirtFactor()\r\n\r\n            self.infoCleanliness.value = cleanliness\r\n            self.infoCleanliness.ratio = cleanliness\r\n            self.infoCleanliness.valueText = string.format(\"%d %%\", g_i18n:formatNumber(cleanliness * 100, 0))\r\n\r\n            table.insert(infos, self.infoCleanliness)\r\n\r\n        end\r\n    end\r\n\r\n\r\nend\r\n\r\n\r\nfunction Animal:showInfo(box)\r\n\r\n    local index = self:getSubTypeIndex()\r\n    local subType = self:getSubType()\r\n    local name = subType.name\r\n\r\n    local yesText = g_i18n:getText(\"rl_ui_yes\")\r\n    local noText = g_i18n:getText(\"rl_ui_no\")\r\n\r\n    local fillTypeTitle = g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex)\r\n\r\n    box:addLine(g_i18n:getText(\"infohud_type\"), fillTypeTitle)\r\n    if self:getName() ~= \"\" then box:addLine(g_i18n:getText(\"infohud_name\"), self:getName()) end\r\n    box:addLine(g_i18n:getText(\"rl_ui_uniqueId\"), self.uniqueId)\r\n    box:addLine(g_i18n:getText(\"rl_ui_farmId\"), self.farmId)\r\n    box:addLine(g_i18n:getText(\"infohud_age\"), RealisticLivestock.formatAge(self.age))\r\n\r\n    if self.birthday ~= nil then\r\n\r\n        local birthday = self.birthday\r\n        box:addLine(g_i18n:getText(\"rl_ui_birthday\"), string.format(\"%d/%d/%d\", birthday.day, birthday.month, RealisticLivestock.START_YEAR.FULL + birthday.year))\r\n\r\n    end\r\n\r\n    box:addLine(g_i18n:getText(\"rl_ui_gender\"), self.gender == \"male\" and g_i18n:getText(\"rl_ui_male\") or g_i18n:getText(\"rl_ui_female\"))\r\n\r\n\r\n    if string.contains(self.subType, \"HORSE\", true) or string.contains(self.subType, \"STALLION\", true) then\r\n        box:addLine(g_i18n:getText(\"infohud_riding\"), string.format(\"%d%%\", self.riding))\r\n        box:addLine(g_i18n:getText(\"infohud_fitness\"), string.format(\"%d%%\", self.fitness))\r\n        if Platform.gameplay.needHorseCleaning then box:addLine(g_i18n:getText(\"statistic_cleanliness\"), string.format(\"%d%%\", 100 - self.dirt)) end\r\n    end\r\n\r\n    if self.gender ~= nil and self.gender == \"female\" and subType.supportsReproduction then\r\n\r\n        box:addLine(g_i18n:getText(\"infohud_reproduction\"), string.format(\"%d%%\", self.reproduction))\r\n\r\n\r\n        local pregnancy = self.pregnancy\r\n\r\n        if pregnancy ~= nil and pregnancy.pregnancies and #pregnancy.pregnancies > 0 then\r\n\r\n            box:addLine(g_i18n:getText(\"rl_ui_pregnancyExpecting\"), string.format(\"%s %s\", #pregnancy.pregnancies, g_i18n:getText(\"rl_ui_pregnancy\" .. (#pregnancy.pregnancies == 1 and \"Baby\" or \"Babies\"))))\r\n            box:addLine(g_i18n:getText(\"rl_ui_pregnancyExpected\"), string.format(\"%s/%s/%s\", pregnancy.expected.day, pregnancy.expected.month, pregnancy.expected.year + RealisticLivestock.START_YEAR.FULL))\r\n\r\n        end\r\n\r\n\r\n        local healthFactor = self:getHealthFactor()\r\n        local text = yesText\r\n\r\n        if self.age < subType.reproductionMinAgeMonth then\r\n            text = g_i18n:getText(\"rl_ui_tooYoungBracketed\")\r\n        elseif self.isParent and self.monthsSinceLastBirth <= 2 then\r\n            text = g_i18n:getText(\"rl_ui_recoveringLastBirthBracketed\")\r\n        elseif self.clusterSystem ~= nil and not RealisticLivestock.hasMaleAnimalInPen(self.clusterSystem.owner.spec_husbandryAnimals, name, self) and not self.isPregnant then\r\n            text = g_i18n:getText(\"rl_ui_noMaleAnimalBracketed\")\r\n        elseif healthFactor < subType.reproductionMinHealth then\r\n            text = g_i18n:getText(\"rl_ui_unhealthyBracketed\")\r\n        end\r\n\r\n        box:addLine(g_i18n:getText(\"rl_ui_canReproduce\"), text)\r\n\r\n        if self.age >= subType.reproductionMinAgeMonth then box:addLine(g_i18n:getText(\"rl_ui_pregnant\"), self.isPregnant and yesText or noText) end\r\n\r\n        if self.isPregnant then box:addLine(g_i18n:getText(\"rl_ui_impregnatedBy\"), (self.impregnatedBy ~= nil and self.impregnatedBy.uniqueId ~= \"-1\") and self.impregnatedBy.uniqueId or g_i18n:getText(\"rl_ui_unknown\")) end\r\n    elseif self.gender ~= nil and self.gender == \"male\" and subType.reproductionMinAgeMonth ~= nil and self.age >= subType.reproductionMinAgeMonth then\r\n        local monotonicHour = g_currentMission.environment:getMonotonicHour()\r\n        if self.numImpregnatableAnimals == nil or (self.lastNumImpregnatableAnimalsUpdate ~= nil and monotonicHour >= self.lastNumImpregnatableAnimalsUpdate + 1) then\r\n            self.lastNumImpregnatableAnimalsUpdate = monotonicHour\r\n            self.numImpregnatableAnimals = self:getNumberOfImpregnatableFemalesForMale()\r\n        end\r\n\r\n        box:addLine(g_i18n:getText(\"rl_ui_maleNumImpregnatable\"), string.format(\"%s\", self.numImpregnatableAnimals or 0))\r\n    end\r\n\r\n    box:addLine(g_i18n:getText(\"rl_ui_value\"), g_i18n:formatMoney(self:getSellPrice(), 2, true, true))\r\n\r\n    if self.isCastrated then box:addLine(g_i18n:getText(\"rl_ui_castrated\"), g_i18n:getText(\"rl_ui_yes\")) end\r\n\r\nend\r\n\r\n\r\nfunction Animal:showGeneticsInfo(box)\r\n\r\n    local genetics = self.genetics\r\n    local metabolism = genetics.metabolism\r\n    local typeIndex = self.animalTypeIndex\r\n\r\n\r\n    local overallGenetics = metabolism + genetics.quality + genetics.health + genetics.fertility + (genetics.productivity ~= nil and genetics.productivity or 0)\r\n    local bestGenetics = 1.75 + 1.75 + 1.75 + 1.75 + (genetics.productivity ~= nil and 1.75 or 0)\r\n    local qualityText = \"extremelyBad\"\r\n    local geneticsFactor = overallGenetics / bestGenetics\r\n\r\n    if geneticsFactor >= 0.95 then\r\n        qualityText = \"extremelyGood\"\r\n    elseif geneticsFactor >= 0.8 then\r\n        qualityText = \"veryGood\"\r\n    elseif geneticsFactor >= 0.65 then\r\n        qualityText = \"good\"\r\n    elseif geneticsFactor >= 0.35 then\r\n        qualityText = \"average\"\r\n    elseif geneticsFactor >= 0.2 then\r\n        qualityText = \"bad\"\r\n    elseif geneticsFactor >= 0.05 then\r\n        qualityText = \"veryBad\"\r\n    end\r\n\r\n    box:addLine(\"rl_ui_overall\", \"rl_ui_genetics_\" .. qualityText)\r\n\r\n    if metabolism >= 1.65 then\r\n        qualityText = \"extremelyHigh\"\r\n    elseif metabolism >= 1.4 then\r\n        qualityText = \"veryHigh\"\r\n    elseif metabolism >= 1.1 then\r\n        qualityText = \"high\"\r\n    elseif metabolism >= 0.9 then\r\n        qualityText = \"average\"\r\n    elseif metabolism >= 0.7 then\r\n        qualityText = \"low\"\r\n    elseif metabolism >= 0.35 then\r\n        qualityText = \"veryLow\"\r\n    else\r\n        qualityText = \"extremelyLow\"\r\n    end\r\n\r\n    box:addLine(g_i18n:getText(\"rl_ui_metabolism\"), \"rl_ui_genetics_\" .. qualityText)\r\n\r\n    local health = genetics.health\r\n\r\n    if health >= 1.65 then\r\n        qualityText = \"extremelyHigh\"\r\n    elseif health >= 1.4 then\r\n        qualityText = \"veryHigh\"\r\n    elseif health >= 1.1 then\r\n        qualityText = \"high\"\r\n    elseif health >= 0.9 then\r\n        qualityText = \"average\"\r\n    elseif health >= 0.7 then\r\n        qualityText = \"low\"\r\n    elseif health >= 0.35 then\r\n        qualityText = \"veryLow\"\r\n    else\r\n        qualityText = \"extremelyLow\"\r\n    end\r\n\r\n    box:addLine(g_i18n:getText(\"rl_ui_health\"), \"rl_ui_genetics_\" .. qualityText)\r\n\r\n    local fertility = genetics.fertility\r\n\r\n    if fertility >= 1.65 then\r\n        qualityText = \"extremelyHigh\"\r\n    elseif fertility >= 1.4 then\r\n        qualityText = \"veryHigh\"\r\n    elseif fertility >= 1.1 then\r\n        qualityText = \"high\"\r\n    elseif fertility >= 0.9 then\r\n        qualityText = \"average\"\r\n    elseif fertility >= 0.7 then\r\n        qualityText = \"low\"\r\n    elseif fertility >= 0.35 then\r\n        qualityText = \"veryLow\"\r\n    elseif fertility > 0 then\r\n        qualityText = \"extremelyLow\"\r\n    else\r\n        qualityText = \"infertile\"\r\n    end\r\n\r\n    box:addLine(g_i18n:getText(\"rl_ui_fertility\"), \"rl_ui_genetics_\" .. qualityText)\r\n\r\n    local meat = genetics.quality\r\n\r\n    if meat >= 1.65 then\r\n        qualityText = \"extremelyHigh\"\r\n    elseif meat >= 1.4 then\r\n        qualityText = \"veryHigh\"\r\n    elseif meat >= 1.1 then\r\n        qualityText = \"high\"\r\n    elseif meat >= 0.9 then\r\n        qualityText = \"average\"\r\n    elseif meat >= 0.7 then\r\n        qualityText = \"low\"\r\n    elseif meat >= 0.35 then\r\n        qualityText = \"veryLow\"\r\n    else\r\n        qualityText = \"extremelyLow\"\r\n    end\r\n\r\n    box:addLine(g_i18n:getText(\"rl_ui_meat\"), \"rl_ui_genetics_\" .. qualityText)\r\n\r\n    if genetics.productivity ~= nil then\r\n\r\n        local productivity = genetics.productivity\r\n\r\n        if productivity >= 1.65 then\r\n            qualityText = \"extremelyHigh\"\r\n        elseif productivity >= 1.4 then\r\n            qualityText = \"veryHigh\"\r\n        elseif productivity >= 1.1 then\r\n            qualityText = \"high\"\r\n        elseif productivity >= 0.9 then\r\n            qualityText = \"average\"\r\n        elseif productivity >= 0.7 then\r\n            qualityText = \"low\"\r\n        elseif productivity >= 0.35 then\r\n            qualityText = \"veryLow\"\r\n        else\r\n            qualityText = \"extremelyLow\"\r\n        end\r\n\r\n        if typeIndex == AnimalType.COW then box:addLine(g_i18n:getText(\"rl_ui_milk\"), \"rl_ui_genetics_\" .. qualityText) end\r\n        if typeIndex == AnimalType.SHEEP then box:addLine(g_i18n:getText(\"rl_ui_wool\"), \"rl_ui_genetics_\" .. qualityText) end\r\n        if typeIndex == AnimalType.CHICKEN then box:addLine(g_i18n:getText(\"rl_ui_eggs\"), \"rl_ui_genetics_\" .. qualityText) end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction Animal:addGeneticsInfo()\r\n\r\n    local texts = {}\r\n\r\n    local genetics = self.genetics\r\n    if genetics == nil then return {} end\r\n\r\n    local text = {}\r\n\r\n    local metabolism = genetics.metabolism\r\n    local overallGenetics = metabolism + genetics.quality + genetics.health + genetics.fertility + (genetics.productivity ~= nil and genetics.productivity or 0)\r\n    local bestGenetics = 1.75 + 1.75 + 1.75 + 1.75 + (genetics.productivity ~= nil and 1.75 or 0)\r\n    local qualityText = \"extremelyBad\"\r\n    local geneticsFactor = overallGenetics / bestGenetics\r\n\r\n    if geneticsFactor >= 0.95 then\r\n        qualityText = \"extremelyGood\"\r\n    elseif geneticsFactor >= 0.8 then\r\n        qualityText = \"veryGood\"\r\n    elseif geneticsFactor >= 0.6 then\r\n        qualityText = \"good\"\r\n    elseif geneticsFactor >= 0.4 then\r\n        qualityText = \"average\"\r\n    elseif geneticsFactor >= 0.2 then\r\n        qualityText = \"bad\"\r\n    elseif geneticsFactor >= 0.05 then\r\n        qualityText = \"veryBad\"\r\n    end\r\n\r\n    text = {\r\n        title = g_i18n:getText(\"rl_ui_overall\"),\r\n        text = \"rl_ui_genetics_\" .. qualityText\r\n    }\r\n\r\n    table.insert(texts, text)\r\n\r\n    if metabolism >= 1.65 then\r\n        qualityText = \"extremelyHigh\"\r\n    elseif metabolism >= 1.4 then\r\n        qualityText = \"veryHigh\"\r\n    elseif metabolism >= 1.1 then\r\n        qualityText = \"high\"\r\n    elseif metabolism >= 0.9 then\r\n        qualityText = \"average\"\r\n    elseif metabolism >= 0.7 then\r\n        qualityText = \"low\"\r\n    elseif metabolism >= 0.35 then\r\n        qualityText = \"veryLow\"\r\n    else\r\n        qualityText = \"extremelyLow\"\r\n    end\r\n\r\n    text = {\r\n        title = g_i18n:getText(\"rl_ui_metabolism\"),\r\n        text = \"rl_ui_genetics_\" .. qualityText\r\n    }\r\n\r\n    table.insert(texts, text)\r\n\r\n    local health = genetics.health\r\n\r\n    if health >= 1.65 then\r\n        qualityText = \"extremelyHigh\"\r\n    elseif health >= 1.4 then\r\n        qualityText = \"veryHigh\"\r\n    elseif health >= 1.1 then\r\n        qualityText = \"high\"\r\n    elseif health >= 0.9 then\r\n        qualityText = \"average\"\r\n    elseif health >= 0.7 then\r\n        qualityText = \"low\"\r\n    elseif health >= 0.35 then\r\n        qualityText = \"veryLow\"\r\n    else\r\n        qualityText = \"extremelyLow\"\r\n    end\r\n\r\n    text = {\r\n        title = g_i18n:getText(\"rl_ui_health\"),\r\n        text = \"rl_ui_genetics_\" .. qualityText\r\n    }\r\n\r\n    table.insert(texts, text)\r\n\r\n    local fertility = genetics.fertility\r\n\r\n    if fertility >= 1.65 then\r\n        qualityText = \"extremelyHigh\"\r\n    elseif fertility >= 1.4 then\r\n        qualityText = \"veryHigh\"\r\n    elseif fertility >= 1.1 then\r\n        qualityText = \"high\"\r\n    elseif fertility >= 0.9 then\r\n        qualityText = \"average\"\r\n    elseif fertility >= 0.7 then\r\n        qualityText = \"low\"\r\n    elseif fertility >= 0.35 then\r\n        qualityText = \"veryLow\"\r\n    elseif fertility > 0 then\r\n        qualityText = \"extremelyLow\"\r\n    else\r\n        qualityText = \"infertile\"\r\n    end\r\n\r\n    text = {\r\n        title = g_i18n:getText(\"rl_ui_fertility\"),\r\n        text = \"rl_ui_genetics_\" .. qualityText\r\n    }\r\n\r\n    table.insert(texts, text)\r\n\r\n    local meat = genetics.quality\r\n\r\n    if meat >= 1.65 then\r\n        qualityText = \"extremelyHigh\"\r\n    elseif meat >= 1.4 then\r\n        qualityText = \"veryHigh\"\r\n    elseif meat >= 1.1 then\r\n        qualityText = \"high\"\r\n    elseif meat >= 0.9 then\r\n        qualityText = \"average\"\r\n    elseif meat >= 0.7 then\r\n        qualityText = \"low\"\r\n    elseif meat >= 0.35 then\r\n        qualityText = \"veryLow\"\r\n    else\r\n        qualityText = \"extremelyLow\"\r\n    end\r\n\r\n    text = {\r\n        title = g_i18n:getText(\"rl_ui_meat\"),\r\n        text = \"rl_ui_genetics_\" .. qualityText\r\n    }\r\n\r\n    table.insert(texts, text)\r\n\r\n    if genetics.productivity ~= nil then\r\n\r\n        local productivity = genetics.productivity\r\n\r\n        if productivity >= 1.65 then\r\n            qualityText = \"extremelyHigh\"\r\n        elseif productivity >= 1.4 then\r\n            qualityText = \"veryHigh\"\r\n        elseif productivity >= 1.1 then\r\n            qualityText = \"high\"\r\n        elseif productivity >= 0.9 then\r\n            qualityText = \"average\"\r\n        elseif productivity >= 0.7 then\r\n            qualityText = \"low\"\r\n        elseif productivity >= 0.35 then\r\n            qualityText = \"veryLow\"\r\n        else\r\n            qualityText = \"extremelyLow\"\r\n        end\r\n\r\n        local productivityTitle = \"\"\r\n        if self.animalTypeIndex == AnimalType.COW then productivityTitle = g_i18n:getText(\"rl_ui_milk\") end\r\n        if self.animalTypeIndex == AnimalType.SHEEP then productivityTitle = g_i18n:getText(\"rl_ui_wool\") end\r\n        if self.animalTypeIndex == AnimalType.CHICKEN then productivityTitle = g_i18n:getText(\"rl_ui_eggs\") end\r\n\r\n        text = {\r\n            title = productivityTitle,\r\n            text = \"rl_ui_genetics_\" .. qualityText\r\n        }\r\n\r\n        table.insert(texts, text)\r\n\r\n    end\r\n\r\n    return texts\r\n\r\nend\r\n\r\n\r\nfunction Animal:showMonitorInfo(box)\r\n\r\n    if not self.monitor.active and not self.monitor.removed then return end\r\n\r\n    local daysPerMonth = g_currentMission.environment.daysPerPeriod\r\n\r\n    box:addLine(g_i18n:getText(\"rl_ui_monitorFee\"), string.format(g_i18n:getText(\"rl_ui_feePerMonth\"), g_i18n:formatMoney(self.monitor.fee, 2, true, true)))\r\n    box:addLine(g_i18n:getText(\"infohud_health\"), string.format(\"%d%%\", self.health))\r\n\r\n    if self.clusterSystem ~= nil and self.clusterSystem.owner.spec_husbandryMilk ~= nil and self.gender ~= nil and self.gender == \"female\" and self.age >= 12 then\r\n        if self.isLactating ~= nil then box:addLine(g_i18n:getText(\"rl_ui_lactating\"), self.isLactating and g_i18n:getText(\"rl_ui_yes\") or g_i18n:getText(\"rl_ui_no\")) end\r\n    end\r\n\r\n    box:addLine(g_i18n:getText(\"rl_ui_weight\"), string.format(\"%.2f\", self.weight) .. \"kg\")\r\n    box:addLine(g_i18n:getText(\"rl_ui_targetWeight\"), string.format(\"%.2f\", self.targetWeight) .. \"kg\")\r\n    box:addLine(g_i18n:getText(\"rl_ui_valuePerKilo\"), g_i18n:formatMoney(self:getSellPrice() / self.weight, 2, true, true))\r\n\r\n    for fillType, amount in pairs(self.input) do\r\n\r\n        box:addLine(g_i18n:getText(\"rl_ui_input_\" .. fillType), string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (amount * 24) / daysPerMonth))\r\n\r\n    end\r\n\r\n    for fillType, amount in pairs(self.output) do\r\n\r\n        local outputText = fillType\r\n\r\n        if fillType == \"pallets\" then\r\n\r\n            if self.animalTypeIndex == AnimalType.COW then outputText = \"pallets_milk\" end\r\n\r\n            if self.animalTypeIndex == AnimalType.SHEEP then outputText = self.subType == \"GOAT\" and \"pallets_goatMilk\" or \"pallets_wool\" end\r\n\r\n            if self.animalTypeIndex == AnimalType.CHICKEN then outputText = \"pallets_eggs\" end\r\n\r\n        end\r\n\r\n        box:addLine(g_i18n:getText(\"rl_ui_output_\" .. outputText), string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (amount * 24) / daysPerMonth))\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction Animal:showDiseasesInfo(box)\r\n\r\n    for _, disease in pairs(self.diseases) do disease:showInfo(box) end\r\n\r\nend\r\n\r\n\r\nfunction Animal:getFillTypeTitle()\r\n    return g_fillTypeManager:getFillTypeTitleByIndex(self:getSubType().fillTypeIndex)\r\nend\r\n\r\n\r\n\r\nfunction Animal:getHealthFactor()\r\n    return self.health /100\r\nend\r\n\r\nfunction Animal:getReproductionFactor()\r\n    return self.reproduction / 100\r\nend\r\n\r\nfunction Animal:getSupportsReproduction()\r\n    return self:getSubType().supportsReproduction\r\nend\r\n\r\nfunction Animal:changeReproduction(delta)\r\n\r\n    local old = self.reproduction\r\n    self.reproduction = math.clamp(math.floor(self.reproduction + math.max(delta, 1)), 0, 100)\r\n\r\n    if math.abs(self.reproduction - old) > 0 then\r\n        --self:setDirty()\r\n    end\r\n\r\nend\r\n\r\nfunction Animal:getReproductionDelta()\r\n\r\n    local duration\r\n\r\n    if self.pregnancy ~= nil then duration = self.pregnancy.duration end\r\n\r\n    if duration == nil then\r\n\r\n        local subType = self:getSubType()\r\n        duration = subType.reproductionDurationMonth\r\n\r\n    end\r\n\r\n    if duration > 0 then\r\n        return math.floor((100 / duration) / g_currentMission.environment.daysPerPeriod)\r\n    end\r\n\r\n    return 0\r\nend\r\n\r\nfunction Animal:getCanReproduce()\r\n\r\n    if self.isPregnant or self.pregnancy ~= nil then return true end\r\n\r\n    local subType = self:getSubType()\r\n\r\n    if not subType.supportsReproduction or self.clusterSystem == nil then return false end\r\n\r\n    local canReproduce = RealisticLivestock.hasMaleAnimalInPen(self.clusterSystem.owner.spec_husbandryAnimals, self.subType, self) and (self.monthsSinceLastBirth > 2 or not self.isParent)\r\n\r\n    if self:getHealthFactor() >= subType.reproductionMinHealth then\r\n        canReproduce = canReproduce and self.age >= subType.reproductionMinAgeMonth\r\n    else\r\n        canReproduce = false\r\n    end\r\n\r\n    return canReproduce\r\n\r\nend\r\n\r\n\r\nfunction Animal:updateHealth(foodFactor)\r\n\r\n    local subType = self:getSubType()\r\n    local healthThresholdFactor = subType.healthThresholdFactor\r\n    local healthGenetics = self.genetics.health\r\n\r\n    local factor, delta = nil\r\n\r\n    if healthThresholdFactor < foodFactor then\r\n        factor = (foodFactor - healthThresholdFactor) / (1 - healthThresholdFactor)\r\n        delta = subType.healthIncreaseHour\r\n    else\r\n        factor = foodFactor / healthThresholdFactor - 1\r\n        delta = subType.healthDecreaseHour\r\n    end\r\n\r\n    local healthDelta = delta * factor * healthGenetics\r\n\r\n    if healthDelta ~= 0 then self.health = math.clamp(math.floor(self.health + healthDelta), 0, 100) end\r\n\r\n    self:updateWeight(foodFactor)\r\n\r\nend\r\n\r\n\r\nfunction Animal:updateWeight(foodFactor)\r\n\r\n    local subType = self:getSubType()\r\n    local minWeight = subType.minWeight\r\n    local targetWeight = self.targetWeight\r\n    local weight = self.weight\r\n    local metabolism = self.genetics.metabolism\r\n    local adultMonth = subType.reproductionMinAgeMonth * 1.5\r\n\r\n    local baseIncrease = ((targetWeight - minWeight) / adultMonth) / 24\r\n    local increase = baseIncrease * (self.gender == \"female\" and 0.6 or 1.0) * (1 + ((adultMonth - self.age) / 75)) * math.min(foodFactor * 1.25, 1)\r\n\r\n    if increase < 0  then metabolism = 1 + (1 - metabolism) end\r\n\r\n    increase = increase * metabolism\r\n\r\n    if self.isCastrated then increase = increase * 1.15 end\r\n\r\n    if self.clusterSystem ~= nil and self.clusterSystem.owner ~= nil and self.clusterSystem.owner.spec_husbandryMilk ~= nil and self.isLactating then increase = increase * 0.75 end\r\n\r\n    local decrease = 0\r\n    if weight > targetWeight then decrease = (weight - targetWeight) / (metabolism * 25) end\r\n\r\n    if foodFactor == 0 then\r\n        if weight < targetWeight then\r\n            decrease = (targetWeight - weight) / ((1 - (metabolism - 1)) * 150)\r\n        elseif weight > targetWeight then\r\n            decrease = decrease + ((weight - targetWeight) / ((1 - (metabolism - 1)) * 150))\r\n        end\r\n    end\r\n\r\n    self.weight = math.max(self.weight + increase - decrease, 0.001)\r\n\r\n    local minWeightForAge = minWeight * (math.min(self.age, subType.reproductionMinAgeMonth * 1.5) + 0.5) * 0.5\r\n    if self.weight < minWeightForAge then self.health = math.clamp(self.health - (((minWeightForAge - self.weight) / minWeightForAge) * 0.2), 0, 100) end\r\n\r\nend\r\n\r\n\r\nfunction Animal:onPeriodChanged()\r\n\r\n    self.monthsSinceLastBirth = self.monthsSinceLastBirth + 1\r\n\r\n    local totalTreatmentCost = 0\r\n\r\n    for i = #self.diseases, 1, -1 do\r\n\r\n        local died, treatmentCost = self.diseases[i]:onPeriodChanged(self, self.deathEnabled)\r\n        totalTreatmentCost = totalTreatmentCost + treatmentCost\r\n        \r\n        if died then return totalTreatmentCost end\r\n\r\n    end\r\n\r\n    return totalTreatmentCost\r\n\r\nend\r\n\r\n\r\nfunction Animal:onDayChanged(spec, isServer, day, month, year, currentDayInPeriod, daysPerPeriod, isSaleAnimal)\r\n\r\n    if g_server ~= nil then g_diseaseManager:onDayChanged(self) end\r\n\r\n    self:setRecentlyBoughtByAI(false)\r\n    \r\n    local birthday = self.birthday\r\n\r\n    if day == nil then\r\n\r\n        local environment = g_currentMission.environment\r\n        month = environment.currentPeriod + 2\r\n        currentDayInPeriod = environment.currentDayInPeriod\r\n\r\n        if month > 12 then month = month - 12 end\r\n\r\n        daysPerPeriod = environment.daysPerPeriod\r\n        day = 1 + math.floor((currentDayInPeriod - 1) * (RealisticLivestock.DAYS_PER_MONTH[month] / daysPerPeriod))\r\n        year = environment.currentYear\r\n\r\n    end\r\n\r\n\r\n    if birthday ~= nil and birthday.lastAgeMonth ~= month then\r\n\r\n        if birthday.day <= day or currentDayInPeriod == daysPerPeriod then\r\n            self:increaseAge()\r\n            self.birthday.lastAgeMonth = month\r\n        end\r\n\r\n    elseif birthday == nil and day == 1 then\r\n\r\n        self:increaseAge()\r\n\r\n    end\r\n\r\n\r\n    local children = 0\r\n    local deadAnimals = 0\r\n    local childrenSold = 0\r\n    local childrenSoldAmount = 0\r\n\r\n\r\n    if self.animalTypeIndex == AnimalType.HORSE and not isSaleAnimal then\r\n\r\n        local ridingFactor = self:getRidingFactor()\r\n\t    local ridingThresholdFactor = self:getSubType().ridingThresholdFactor\r\n\t    local factor, delta\r\n\r\n\t    if ridingThresholdFactor < ridingFactor then\r\n\t\t    factor = (ridingFactor - ridingThresholdFactor) / (1 - ridingThresholdFactor)\r\n\t\t    delta = 25\r\n\t    else\r\n\t\t    factor = ridingFactor / ridingThresholdFactor - 1\r\n\t\t    delta = 10\r\n\t    end\r\n\r\n\t    self:changeFitness(delta * factor * g_currentMission.environment.timeAdjustment)\r\n\t    self:resetRiding()\r\n\t    self:changeDirt(10)\r\n    \r\n    end\r\n\r\n\r\n    local insemination = self.insemination\r\n\r\n    if insemination ~= nil and g_server ~= nil then\r\n\r\n        local fertility = self.genetics.fertility\r\n        local childNum = self:generateRandomOffspring()\r\n\r\n        if childNum > 0 and math.random() >= (2 - fertility) * 0.25 and math.random() <= insemination.success * (math.random(80, 120) / 100) then\r\n\r\n            self:addMessage(\"INSEMINATION_SUCCESS\")\r\n            g_server:broadcastEvent(AnimalInseminationResultEvent.new(self.clusterSystem.owner, self, true))\r\n\r\n            self:createPregnancy(childNum, month, year, {\r\n                [\"uniqueId\"] = string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[insemination.country].code, insemination.farmId, insemination.uniqueId),\r\n                [\"metabolism\"] = insemination.genetics.metabolism,\r\n                [\"quality\"] = insemination.genetics.quality,\r\n                [\"health\"] = insemination.genetics.health,\r\n                [\"fertility\"] = insemination.genetics.fertility,\r\n                [\"productivity\"] = insemination.genetics.productivity\r\n            })\r\n\r\n        else\r\n\r\n            self:addMessage(\"INSEMINATION_FAIL\")\r\n            g_server:broadcastEvent(AnimalInseminationResultEvent.new(self.clusterSystem.owner, self, true))\r\n\r\n        end\r\n\r\n    end\r\n\r\n    self.insemination = nil\r\n\r\n\r\n    if isSaleAnimal or self.clusterSystem ~= nil then\r\n\r\n        if self.reproduction > 0 and (self.pregnancy == nil or self.pregnancy.pregnancies == nil) then\r\n\r\n            self.pregnancy = nil\r\n            self.reproduction = 0\r\n\r\n        end\r\n\r\n        if self.isPregnant then\r\n\r\n            self:changeReproduction(self:getReproductionDelta())\r\n\r\n            if self.reproduction >= 100 and g_server ~= nil and self.pregnancy ~= nil and spec ~= nil then\r\n\r\n                if self.impregnatedBy == nil then\r\n                    self.impregnatedBy = {\r\n                        uniqueId = \"-1\",\r\n                        metabolism = self.genetics.metabolism,\r\n                        quality = self.genetics.quality,\r\n                        health = self.genetics.health,\r\n                        fertility = self.genetics.fertility,\r\n                        productivity = self.genetics.productivity or nil\r\n                    }\r\n                end\r\n\r\n                if self.impregnatedBy.uniqueId == nil then self.impregnatedBy.uniqueId = \"-1\" end\r\n                if self.impregnatedBy.metabolism == nil then self.impregnatedBy.metabolism = self.genetics.metabolism end\r\n                if self.impregnatedBy.quality == nil then self.impregnatedBy.quality = self.genetics.meatQuality end\r\n                if self.impregnatedBy.health == nil then self.impregnatedBy.health = self.genetics.health end\r\n                if self.impregnatedBy.fertility == nil then self.impregnatedBy.fertility = self.genetics.fertility end\r\n\r\n                self.isLactating = false\r\n                self.isPregnant = false\r\n\r\n                local parentDied = false\r\n\r\n                children, parentDied, childrenSold, childrenSoldAmount = self:reproduce(spec, day, month, year, isSaleAnimal)\r\n\r\n                self.reproduction = 0\r\n                    \r\n                if parentDied then deadAnimals = 1 end\r\n                self.impregnatedBy = nil\r\n                self.pregnancy = nil\r\n\r\n            end\r\n\r\n        elseif g_server ~= nil and not isSaleAnimal and self:getCanReproduce() then\r\n\r\n            local fertility = self.genetics.fertility\r\n            local childNum = self:generateRandomOffspring()\r\n\r\n            if math.random() >= (2 - fertility) * 0.5 and childNum > 0 then self:createPregnancy(childNum, month, year) end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    local lowHealthDeath, oldDeath, randomDeath, randomDeathMoney = 0, 0, 0, 0\r\n\r\n    if self.deathEnabled and g_server ~= nil and (self.clusterSystem == nil or self.clusterSystem.owner:getOwnerFarmId() ~= FarmManager.INVALID_FARM_ID) then\r\n\r\n        lowHealthDeath = self:CalculateLowHealthMonthlyAnimalDeaths()\r\n        if lowHealthDeath == 0 then oldDeath = self:CalculateOldAgeMonthlyAnimalDeaths() end\r\n        if spec ~= nil and lowHealthDeath == 0 and oldDeath == 0 then randomDeath, randomMoney = self:CalculateRandomMonthlyAnimalDeaths(spec) end\r\n\r\n        if lowHealthDeath > 0 or oldDeath > 0 or randomDeath > 0 then g_server:broadcastEvent(AnimalDeathEvent.new(self.clusterSystem ~= nil and self.clusterSystem.owner or nil, self)) end\r\n\r\n    end\r\n\r\n    return children, deadAnimals, childrenSold, childrenSoldAmount, lowHealthDeath, oldDeath, randomDeath, randomDeathMoney\r\n\r\nend\r\n\r\n\r\nfunction Animal:createPregnancy(childNum, month, year, father)\r\n\r\n    local fertility = self.genetics.fertility\r\n\r\n    self.isPregnant = true\r\n\r\n    if father == nil then\r\n        \r\n        father = {\r\n            uniqueId = \"-1\",\r\n            metabolism = 1.0,\r\n            quality = 1.0,\r\n            health = 1.0,\r\n            fertility = 1.0,\r\n            productivity = 1.0\r\n        }\r\n\r\n        local fatherSubTypeIndex\r\n\r\n        for _, animal in pairs(self.clusterSystem:getAnimals()) do\r\n\r\n            if animal.gender ~= \"male\" or animal.isCastrated or animal.genetics.fertility <= 0 or animal:getIdentifiers() == self.fatherId then continue end\r\n\r\n            if animal.subType == \"BULL_WATERBUFFALO\" and self.subType ~= \"COW_WATERBUFFALO\" then continue end\r\n            if animal.subType == \"RAM_GOAT\" and self.subType ~= \"GOAT\" then continue end\r\n            if self.subType == \"COW_WATERBUFFALO\" and animal.subType ~= \"BULL_WATERBUFFALO\" then continue end\r\n            if self.subType == \"GOAT\" and animal.subType ~= \"RAM_GOAT\" then continue end\r\n\r\n            local animalType = animal.animalTypeIndex\r\n\r\n\r\n            local animalSubType = animal:getSubType()\r\n            local maxFertilityMonth = (animalType == AnimalType.COW and 132) or (animalType == AnimalType.SHEEP and 72) or (animalType == AnimalType.HORSE and 300) or (animalType == AnimalType.CHICKEN and 1000) or (animalType == AnimalType.PIG and 48) or 120\r\n            maxFertilityMonth = maxFertilityMonth * animal.genetics.fertility\r\n\r\n            if animalSubType.reproductionMinAgeMonth ~= nil and animal:getAge() >= animalSubType.reproductionMinAgeMonth and animal:getAge() < maxFertilityMonth then\r\n\r\n                fatherSubTypeIndex = animal.subTypeIndex\r\n\r\n                father.uniqueId = animal:getIdentifiers()\r\n                father.metabolism = animal.genetics.metabolism\r\n                father.quality = animal.genetics.quality\r\n                father.health = animal.genetics.health\r\n                father.fertility = animal.genetics.fertility\r\n                father.productivity = animal.genetics.productivity or nil\r\n                father.animal = animal\r\n\r\n                break\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    self.impregnatedBy = father\r\n    self.reproduction = 0\r\n\r\n    self:changeReproduction(self:getReproductionDelta())\r\n\r\n    local genetics = self.genetics\r\n\r\n    local motherMetabolism = genetics.metabolism\r\n    local fatherMetabolism = father.metabolism\r\n    local minMetabolism = motherMetabolism >= fatherMetabolism and fatherMetabolism or motherMetabolism\r\n    local maxMetabolism = motherMetabolism < fatherMetabolism and fatherMetabolism or motherMetabolism\r\n    if maxMetabolism == minMetabolism then maxMetabolism = maxMetabolism + 0.01 end\r\n\r\n    local motherMeat = genetics.quality\r\n    local fatherMeat = father.quality\r\n    local minMeat = motherMeat >= fatherMeat and fatherMeat or motherMeat\r\n    local maxMeat = motherMeat < fatherMeat and fatherMeat or motherMeat\r\n    if maxMeat == minMeat then maxMeat = maxMeat + 0.01 end\r\n\r\n    local motherHealth = genetics.health\r\n    local fatherHealth = father.health\r\n    local minHealth = motherHealth >= fatherHealth and fatherHealth or motherHealth\r\n    local maxHealth = motherHealth < fatherHealth and fatherHealth or motherHealth\r\n    if maxHealth == minHealth then maxHealth = maxHealth + 0.01 end\r\n\r\n    local motherFertility = genetics.fertility\r\n    local fatherFertility = father.fertility\r\n    local minFertility = motherFertility >= fatherFertility and fatherFertility or motherFertility\r\n    local maxFertility = motherFertility < fatherFertility and fatherFertility or motherFertility\r\n    if maxFertility == minFertility then maxFertility = maxFertility + 0.01 end\r\n\r\n    local motherProductivity\r\n    local fatherProductivity\r\n    local minProductivity\r\n    local maxProductivity\r\n\r\n    if genetics.productivity ~= nil then\r\n        motherProductivity = genetics.productivity\r\n        fatherProductivity = father.productivity or 1\r\n        minProductivity = motherProductivity >= fatherProductivity and fatherProductivity or motherProductivity\r\n        maxProductivity = motherProductivity < fatherProductivity and fatherProductivity or motherProductivity\r\n        if maxProductivity == minProductivity then maxProductivity = maxProductivity + 0.01 end\r\n    end\r\n\r\n    local mDiseases, fDiseases = self.diseases, father.animal ~= nil and father.animal.diseases or {}\r\n\r\n    local diseases = {}\r\n\r\n    for _, disease in pairs(mDiseases) do table.insert(diseases, { [\"parent\"] = father.animal, [\"disease\"] = disease }) end\r\n\r\n    for _, disease in pairs(fDiseases) do\r\n        \r\n        local hasDisease = false\r\n\r\n        for _, mDisease in pairs(mDiseases) do\r\n            if mDisease.type.title == disease.type.title then\r\n                hasDisease = true\r\n                break\r\n            end\r\n        end\r\n\r\n        if not hasDisease then table.insert(diseases, { [\"parent\"] = self, [\"disease\"] = disease }) end\r\n\r\n    end\r\n\r\n\r\n    local children = {}\r\n    local hasMale, hasFemale = false, false\r\n\r\n\r\n    for i = 1, childNum do\r\n\r\n\r\n        local gender = math.random() >= 0.5 and \"male\" or \"female\"\r\n        local subTypeIndex\r\n\r\n        if fatherSubTypeIndex ~= nil and math.random() >= 0.5 then\r\n\r\n            subTypeIndex = fatherSubTypeIndex + (gender == \"male\" and 0 or -1)\r\n\r\n        else\r\n\r\n            subTypeIndex = self.subTypeIndex + (gender == \"male\" and 1 or 0)\r\n\r\n        end\r\n\r\n\r\n        local child = Animal.new(-1, 100, 0, gender, subTypeIndex, 0, false, false, false, nil, nil, self:getIdentifiers(), father.uniqueId)\r\n                        \r\n        local metabolism = math.random(minMetabolism * 100, maxMetabolism * 100) / 100\r\n        local quality = math.random(minMeat * 100, maxMeat * 100) / 100\r\n        local healthGenetics = math.random(minHealth * 100, maxHealth * 100) / 100\r\n\r\n        local fertility = 0\r\n        \r\n        if math.random() > 0.001 then fertility = math.random(minFertility * 100, maxFertility * 100) / 100 end\r\n\r\n\r\n        local productivity = nil\r\n                        \r\n        if genetics.productivity ~= nil then productivity = math.random(minProductivity * 100, maxProductivity * 100) / 100 end\r\n\r\n\r\n        child:setGenetics({\r\n            [\"metabolism\"] = metabolism,\r\n            [\"quality\"] = quality,\r\n            [\"health\"] = healthGenetics,\r\n            [\"fertility\"] = fertility,\r\n            [\"productivity\"] = productivity\r\n        })\r\n        \r\n        \r\n        for _, disease in pairs(diseases) do\r\n\r\n            disease.disease:affectReproduction(child, disease.parent)\r\n\r\n        end\r\n\r\n\r\n        table.insert(children, child)\r\n\r\n        if gender == \"male\" then\r\n            hasMale = true\r\n        else\r\n            hasFemale = true\r\n        end\r\n\r\n    end\r\n\r\n    if self.animalTypeIndex == AnimalType.COW and hasMale and hasFemale then\r\n\r\n        for _, child in pairs(children) do\r\n\r\n            if child.gender == \"female\" and math.random() >= 0.03 then child.genetics.fertility = 0 end\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n    local reproductionDuration = self:getSubType().reproductionDurationMonth\r\n                    \r\n    if math.random() >= 0.99 then\r\n\r\n        if math.random() >= 0.95 then\r\n            reproductionDuration = reproductionDuration + (math.random() >= 0.75 and -2 or 2)\r\n        else\r\n            reproductionDuration = reproductionDuration + (math.random() >= 0.85 and -1 or 1)\r\n        end\r\n\r\n        reproductionDuration = math.clamp(reproductionDuration, 2, 12)\r\n\r\n    end\r\n\r\n    local expectedYear = year + math.floor(reproductionDuration / 12)\r\n    local expectedMonth = month + (reproductionDuration % 12)\r\n\r\n    while expectedMonth > 12 do\r\n        expectedMonth = expectedMonth - 12\r\n        expectedYear = expectedYear + 1\r\n    end\r\n\r\n    local expectedDay = math.random(1, RealisticLivestock.DAYS_PER_MONTH[expectedMonth])\r\n\r\n\r\n    self.pregnancy = {\r\n        [\"duration\"] = reproductionDuration,\r\n        [\"expected\"] = {\r\n            [\"day\"] = expectedDay,\r\n            [\"month\"] = expectedMonth,\r\n            [\"year\"] = expectedYear\r\n        },\r\n        [\"pregnancies\"] = children\r\n    }\r\n\r\n    g_server:broadcastEvent(AnimalPregnancyEvent.new(self.clusterSystem ~= nil and self.clusterSystem.owner or nil, self))\r\n\r\nend\r\n\r\n\r\nfunction Animal:getAnimalTypeIndex()\r\n\r\n    return g_currentMission.animalSystem:getTypeIndexBySubTypeIndex(self.subTypeIndex)\r\n\r\nend\r\n\r\n\r\nfunction Animal:generateRandomOffspring()\r\n\r\n    local animalSystem = g_currentMission.animalSystem\r\n    local animalType = animalSystem:getTypeByIndex(self.animalTypeIndex)\r\n\r\n    local fertility = self.genetics.fertility\r\n\r\n    local fertilityValue = fertility * (animalType.fertility:get(self.age) / 100)\r\n\r\n    if math.random() >= fertilityValue then return 0 end\r\n\r\n    local factor = 0.75 + fertility / 4\r\n\r\n    if math.random() >= 0.25 then return animalType.pregnancy.average end\r\n\r\n    local amount = animalType.pregnancy.get(math.random() * factor)\r\n\r\n    return amount\r\n\r\nend\r\n\r\n\r\nlocal function sortChildSellPrices(a, b)\r\n\r\n    return a.sellPrice > b.sellPrice\r\n\r\nend\r\n\r\n\r\nfunction Animal:reproduce(spec, day, month, year, isSaleAnimal)\r\n\r\n    if self.pregnancy == nil or self.pregnancy.pregnancies == nil then return 0, false, 0, 0 end\r\n\r\n    local pregnancies = self.pregnancy.pregnancies\r\n    local freeSlots = isSaleAnimal and 100 or (spec.maxNumAnimals - spec:getNumOfAnimals())\r\n    local childNum = #pregnancies\r\n    local animalsToSell = 0\r\n    local subType = self:getSubType()\r\n    local animalType = self:getAnimalTypeIndex()\r\n    local parentDied = false\r\n\r\n    if freeSlots - childNum < 0 then\r\n        animalsToSell = childNum - freeSlots\r\n    end\r\n\r\n    self.monthsSinceLastBirth = 0\r\n\r\n    if childNum > 0 then\r\n        self.isParent = true\r\n        if animalType == AnimalType.COW or self.subType == \"GOAT\" then self.isLactating = true end\r\n    end\r\n\r\n    childNum = childNum - animalsToSell\r\n\r\n        \r\n    local fatherFull\r\n\r\n    if not isSaleAnimal and self.impregnatedBy ~= nil and self.impregnatedBy.uniqueId ~= nil and self.impregnatedBy.uniqueId ~= \"-1\" then\r\n\r\n        local placeables = g_currentMission.placeableSystem.placeables\r\n\r\n        for _, placeable in ipairs(placeables) do\r\n\r\n            if placeable.spec_husbandryAnimals == nil and placeable.spec_livestockTrailer == nil then continue end\r\n\r\n            local clusterSystem = nil\r\n\r\n            if placeable.spec_husbandryAnimals ~= nil then\r\n                clusterSystem = placeable.spec_husbandryAnimals.clusterSystem\r\n            elseif placeable.spec_livestockTrailer ~= nil then\r\n                clusterSystem = placeable.spec_livestockTrailer.clusterSystem\r\n            end\r\n\r\n            if clusterSystem == nil then continue end\r\n\r\n            local animals = clusterSystem:getAnimals()\r\n            for _, animal in ipairs(animals) do\r\n                if animal:getIdentifiers() ~= self.impregnatedBy.uniqueId then continue end\r\n\r\n                fatherFull = animal\r\n                break\r\n            end\r\n\r\n            if fatherFull ~= nil then break end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    if fatherFull ~= nil then fatherFull.isParent = true end\r\n\r\n\r\n    local sellPrices = {}\r\n    local childrenToRemove = {}\r\n    local birthday = self.pregnancy.expected\r\n    local country = isSaleAnimal and self.birthday.country or RealisticLivestock.getMapCountryIndex()\r\n\r\n\r\n    for i, child in pairs(pregnancies) do\r\n        \r\n        local genetics = child.genetics\r\n        local weightChance = math.random() * genetics.metabolism\r\n        local minWeight = child:getSubType().minWeight\r\n        local weight = minWeight + 0.5\r\n\r\n        if weightChance < 0.05 then\r\n            weight = weight * (math.random(70, 90) / 100)\r\n        elseif weightChance <= 0.95 then\r\n            weight = weight * (math.random(90, 110) / 100)\r\n        else\r\n            weight = weight * (math.random(110, 130) / 100)\r\n        end\r\n\r\n        if self.deathEnabled and math.random() >= genetics.health * (weight / minWeight) * 1.15 then\r\n\r\n            childNum = childNum - 1\r\n            animalsToSell = animalsToSell - 1\r\n\r\n            table.insert(childrenToRemove, i)\r\n\r\n            child.isDead = true\r\n\r\n            continue\r\n\r\n        end\r\n\r\n        child.weight = weight\r\n        child.age = 0\r\n\r\n        child:setBirthday({[\"day\"] = day, [\"month\"] = month, [\"year\"] = year, [\"country\"] = country, [\"lastAgeMonth\"] = month})\r\n\r\n        if not isSaleAnimal then\r\n            child:setClusterSystem(self.clusterSystem)\r\n            child:setUniqueId()\r\n        else\r\n            child:setUniqueId(self.farmId)\r\n        end\r\n\r\n        local childInfo = {\r\n            farmId = child.farmId,\r\n            uniqueId = child.uniqueId\r\n        }\r\n\r\n        table.insert(self.children, childInfo)\r\n        if fatherFull ~= nil then table.insert(fatherFull.children, childInfo) end\r\n\r\n\r\n        table.insert(sellPrices, {\r\n            [\"index\"] = i,\r\n            [\"sellPrice\"] = child:getSellPrice()\r\n        })\r\n\r\n    end\r\n\r\n    if #childrenToRemove > 0 and math.random() >= 0.35 + self.genetics.health * 1.25 then parentDied = true end\r\n\r\n\r\n    table.sort(sellPrices, sortChildSellPrices)\r\n\r\n    local totalAnimalPrice = 0\r\n\r\n   \r\n    for i = 1, animalsToSell do\r\n\r\n        local childToSell = sellPrices[i]\r\n\r\n        if childToSell == nil or pregnancies[childToSell.index] == nil then break end\r\n\r\n        table.insert(childrenToRemove, childToSell.index)\r\n        totalAnimalPrice = totalAnimalPrice + childToSell.sellPrice\r\n\r\n    end\r\n\r\n    table.sort(childrenToRemove)\r\n\r\n    for i = #childrenToRemove, 1, -1 do\r\n\r\n        table.remove(pregnancies, childrenToRemove[i])\r\n\r\n    end\r\n\r\n    local animalSystem = g_currentMission.animalSystem\r\n\r\n    for _, child in pairs(pregnancies) do\r\n\r\n        if isSaleAnimal then\r\n            animalSystem:addExistingSaleAnimal(child)\r\n        else\r\n            self.clusterSystem:addCluster(child)\r\n        end\r\n\r\n    end\r\n\r\n\r\n    if not isSaleAnimal then\r\n        \r\n        local farmIndex = spec:getOwnerFarmId()\r\n        local animalTypeReal = animalSystem:getTypeByIndex(subType.typeIndex)\r\n        \r\n        if animalTypeReal.statsBreedingName ~= nil then\r\n            local stats = g_currentMission:farmStats(farmIndex)\r\n            stats:updateStats(animalTypeReal.statsBreedingName, childNum)\r\n        end\r\n\r\n    end\r\n\r\n\r\n    self.impregnatedBy = nil\r\n\r\n    g_server:broadcastEvent(AnimalBirthEvent.new(self.clusterSystem ~= nil and self.clusterSystem.owner or nil, self, pregnancies, parentDied))\r\n\r\n    if #pregnancies > 0 then\r\n\r\n        if #pregnancies == 1 then\r\n            self:addMessage(\"PREGNANCY_SINGLE\")\r\n        else\r\n            self:addMessage(\"PREGNANCY_MULTIPLE\", { #pregnancies })\r\n        end\r\n\r\n    end\r\n\r\n    if animalsToSell > 0 then self:addMessage(\"PREGNANCY_SOLD\", { animalsToSell, g_i18n:formatMoney(totalAnimalPrice, 2, true, true) }) end\r\n\r\n    if #childrenToRemove > 0 then self:addMessage(\"PREGNANCY_DIED\", { #childrenToRemove }) end\r\n\r\n    if parentDied then self:die(\"rl_death_pregnancy\") end\r\n\r\n\r\n    return childNum, parentDied, animalsToSell, totalAnimalPrice\r\n\r\n\r\n\r\nend\r\n\r\n\r\n\r\nfunction Animal:die(reason)\r\n\r\n    self.numAnimals = 0\r\n    self.isDead = true\r\n\r\n    if self.sale ~= nil then g_currentMission.animalSystem:removeSaleAnimal(self.animalTypeIndex, self.birthday.country, self.farmId, self.uniqueId) end\r\n    if self.isAIAnimal then g_currentMission.animalSystem:removeAIAnimal(self.animalTypeIndex, self.birthday.country, self.farmId, self.uniqueId) end\r\n\r\n    self:addMessage(\"DEATH\", { reason or \"rl_ui_unknownCauses\" })\r\n\r\n    if self.clusterSystem ~= nil then self.clusterSystem:addPendingRemoveCluster(self) end\r\n\r\nend\r\n\r\n\r\n\r\n\r\nfunction Animal:CalculateLowHealthMonthlyAnimalDeaths()\r\n\r\n    if self.numAnimals <= 0 or self.isDead then\r\n        return 0\r\n    end\r\n\r\n    local deathChance = 0.01\r\n    local health = self.health\r\n    local healthGenetics = self.genetics.health\r\n\r\n    if health >= 80 then\r\n        return 0\r\n    end\r\n\r\n    if self.age < 6 then health = health - 10 end\r\n    deathChance = (0.5 * (2 - healthGenetics)) - (health / 100)\r\n\r\n    if math.random() <= deathChance then\r\n        self:die(\"rl_death_health\")\r\n        return 1\r\n    end\r\n\r\n    return 0\r\n\r\nend\r\n\r\n\r\n\r\nfunction Animal:CalculateOldAgeMonthlyAnimalDeaths()\r\n\r\n    if self.numAnimals <= 0 or self.isDead then\r\n        return 0\r\n    end\r\n\r\n    local animalType = self.animalTypeIndex\r\n    local deathChance = 0.01\r\n    local age = self.age\r\n    local healthGenetics = self.genetics.health\r\n\r\n    local minAge = 20000\r\n    local maxAge = 30000\r\n\r\n    if animalType == AnimalType.COW then\r\n        -- cattle old age min: 15y (180m)\r\n        -- cattle old age max: 20y (240m)\r\n        minAge = 180\r\n        maxAge = 240\r\n    elseif animalType == AnimalType.SHEEP then\r\n        -- sheep old age min: 10y (120m)\r\n        -- sheep old age max: 12y (144m)\r\n        minAge = 120\r\n        maxAge = 144\r\n    elseif animalType == AnimalType.HORSE then\r\n        -- horse old age min: 25y (300m)\r\n        -- horse old age max: 30y (360m)\r\n        minAge = 300\r\n        maxAge = 360\r\n    elseif animalType == AnimalType.PIG then\r\n        -- pig old age min: 15y (180m)\r\n        -- pig old age max: 20y (240m)\r\n        minAge = 180\r\n        maxAge = 240\r\n    elseif animalType == AnimalType.CHICKEN then\r\n        -- chicken old age min: 5y (60m)\r\n        -- chicken old age max: 8y (96m)\r\n        minAge = 60\r\n        maxAge = 96\r\n    end\r\n\r\n    if age < minAge then\r\n        return 0\r\n    end\r\n\r\n    deathChance = 0.7 - ((maxAge - age) / 100)\r\n    if math.random() <= deathChance * (2 - healthGenetics) then\r\n        self:die(\"rl_death_age\")\r\n        return 1\r\n    end\r\n\r\n    return 0\r\n\r\nend\r\n\r\n\r\n-- Animals can die randomly regardless of health such as due to broken legs - will be sold at a reduced price (lower quality meat)\r\n\r\nfunction Animal:CalculateRandomMonthlyAnimalDeaths(spec)\r\n\r\n    if self.numAnimals <= 0 or self.isDead then\r\n        return 0, 0\r\n    end\r\n\r\n    local animalType = spec.animalTypeIndex\r\n    local animalsCanBeSold = true\r\n    local deathChance = 0.01\r\n    local temp = spec.minTemp\r\n\r\n    if animalType == AnimalType.COW then\r\n        deathChance = 0.002\r\n        if self.age < 6 then\r\n            deathChance = 0.0035\r\n        elseif self.age < 18 then\r\n            deathChance = 0.0024\r\n        end\r\n    elseif animalType == AnimalType.SHEEP then\r\n        deathChance = 0.003\r\n        if self.age < 3 then\r\n            deathChance = 0.0035\r\n        elseif self.age < 8 then\r\n            deathChance = 0.0032\r\n        end\r\n    elseif animalType == AnimalType.HORSE then\r\n        deathChance = 0.002\r\n    elseif animalType == AnimalType.PIG then\r\n        deathChance = 0.001\r\n        if self.age < 3 then\r\n            deathChance = 0.018\r\n        elseif self.age < 6 then\r\n            deathChance = 0.0075\r\n        end\r\n    elseif animalType == AnimalType.CHICKEN then\r\n        if self.age < 6 then\r\n            deathChance = 0.0012\r\n        else\r\n            deathChance = 0.0016\r\n        end\r\n        animalsCanBeSold = false\r\n    end\r\n\r\n    -- animals are more likely to die in cold weather, especially young animals due to ice, pneumonia etc\r\n\r\n    if temp ~= nil and temp < 10 and temp >= 0 then\r\n        deathChance = deathChance * (1 + (1 - (temp / 12)))\r\n    elseif temp ~= nil and temp < 0 then\r\n        deathChance = deathChance * (1 + (1 - (temp / 10)))\r\n    end\r\n\r\n    deathChance = deathChance * self.accidentsChance\r\n\r\n    if math.random() <= deathChance then\r\n        local animalPrice = 0\r\n        if animalsCanBeSold then animalPrice = self:getSellPrice() * 0.33 end\r\n\r\n        self:die(\"rl_death_accident\")\r\n        return 1, animalPrice\r\n    end\r\n\r\n    return 0, 0\r\n\r\nend\r\n\r\n\r\n\r\n\r\n\r\n-- ##################################\r\n\r\n--             HORSES\r\n\r\n-- ##################################\r\n\r\n\r\n\r\nfunction Animal:getHealthChangeFactor(foodFactor)\r\n    local fitnessFactor = self:getFitnessFactor()\r\n\r\n    if not Platform.gameplay.needHorseCleaning then\r\n        return 0.6 * foodFactor + 0.4 * fitnessFactor\r\n    end\r\n\r\n    local dirtFactor = 1 - self:getDirtFactor()\r\n    return 0.5 * foodFactor + 0.4 * fitnessFactor + 0.1 * dirtFactor\r\nend\r\n\r\n\r\nfunction Animal:getFitnessFactor()\r\n    return self.fitness / 100\r\nend\r\n\r\n\r\nfunction Animal:changeFitness(delta)\r\n    self.fitness = math.clamp(math.floor(self.fitness + delta), 0, 100)\r\nend\r\n\r\n\r\nfunction Animal:getRidingFactor()\r\n    return self.riding / 100\r\nend\r\n\r\n\r\nfunction Animal:setRiding(riding)\r\n    self.riding = riding\r\nend\r\n\r\n\r\nfunction Animal:resetRiding()\r\n    self.riding = 0\r\nend\r\n\r\n\r\nfunction Animal:changeRiding(delta)\r\n    self.riding = math.clamp(math.floor(self.riding + delta), 0, 100)\r\nend\r\n\r\n\r\nfunction Animal:getDirtFactor()\r\n    return self.dirt / 100\r\nend\r\n\r\n\r\nfunction Animal:changeDirt(delta)\r\n    self.dirt = math.clamp(math.floor(self.dirt + delta), 0, 100)\r\nend\r\n\r\n\r\nfunction Animal:getSellPrice()\r\n    local subType = self:getSubType()\r\n    local sellPrice = subType.sellPrice:get(self.age < 0 and 0 or self.age)\r\n\r\n    local weight = self.weight\r\n    local targetWeightForAge = ((self.targetWeight - subType.minWeight) / (subType.reproductionMinAgeMonth * 1.5)) * math.min(self.age + 1.5, subType.reproductionMinAgeMonth * 1.5) * 0.85\r\n\r\n    local weightFactor = 1 + ((weight - targetWeightForAge) / targetWeightForAge)\r\n\r\n    local meatFactor = self.genetics.quality\r\n\r\n    sellPrice = sellPrice + (sellPrice * 0.25 * (meatFactor - 1))\r\n\r\n    sellPrice = math.max(sellPrice + (((sellPrice * 0.6) / subType.targetWeight) * weight * (-1 + meatFactor)), 0.5)\r\n\r\n    if self.isCastrated then sellPrice = sellPrice + sellPrice * 0.15 end\r\n\r\n    for _, disease in pairs(self.diseases) do sellPrice = disease:modifyValue(sellPrice) end\r\n\r\n    if self.animalTypeIndex == AnimalType.HORSE then\r\n        return math.max(sellPrice * meatFactor * weightFactor * (0.3 + 0.5 * self:getHealthFactor() + 0.3 * self:getRidingFactor() + 0.2 * self:getFitnessFactor() - 0.2 * self:getDirtFactor()), sellPrice * 0.05)\r\n    end\r\n\r\n    return math.max(sellPrice * 0.6 + (sellPrice * 0.4 * weightFactor * (0.75 * self:getHealthFactor())) + sellPrice * (self.isLactating and 0.15 or 0) + sellPrice * (self.isPregnant and 0.25 or 0), sellPrice * 0.05)\r\nend\r\n\r\n\r\nfunction Animal:getDailyRidingTime()\r\n    return 300000\r\nend\r\n\r\n\r\nfunction Animal:getNumberOfImpregnatableFemalesForMale()\r\n\r\n    if self.gender == \"female\" or self.clusterSystem == nil then return 0 end\r\n\r\n    local subType = self:getSubType()\r\n    local animalType = self.animalTypeIndex\r\n\r\n    if (subType.reproductionMinAgeMonth ~= nil and subType.reproductionMinAgeMonth > self.age) or ((animalType == AnimalType.COW and self.age >= 132) or (animalType == AnimalType.SHEEP and self.age >= 72) or (animalType == AnimalType.HORSE and self.age >= 300) or (animalType == AnimalType.PIG and self.age >= 48)) then return 0 end\r\n\r\n    local i = 0\r\n    local id = self:getIdentifiers()\r\n\r\n    for _, animal in ipairs(self.clusterSystem:getAnimals()) do\r\n\r\n        if animal.gender == \"male\" or (animal.fatherId ~= nil and id == animal.fatherId) or animal.isPregnant then continue end\r\n        \r\n        local s = animal:getSubType()\r\n        if s.reproductionMinAgeMonth == nil or s.reproductionMinAgeMonth > animal.age then continue end\r\n\r\n        if subType.name == \"BULL_WATERBUFFALO\" then\r\n            if s.name == \"COW_WATERBUFFALO\" then i = i + 1 end\r\n        elseif subType.name == \"RAM_GOAT\" then\r\n            if s.name == \"GOAT\" then i = i + 1 end\r\n        elseif s.name ~= \"GOAT\" and s.name ~= \"COW_WATERBUFFALO\" then\r\n            i = i + 1\r\n        end\r\n\r\n    end\r\n\r\n    return i\r\n\r\nend\r\n\r\n\r\nfunction Animal.onSettingChanged(name, state)\r\n\r\n    Animal[name] = state\r\n\r\nend\r\n\r\n\r\nfunction Animal:updateInput()\r\n\r\n    local subType = self:getSubType()\r\n\r\n\r\n    for fillType, input in pairs(subType.input) do\r\n\r\n        local litersPerDay = input:get(self.age)\r\n\r\n        if fillType == \"food\" then\r\n\r\n            if self.isLactating then litersPerDay = litersPerDay * 1.25 end\r\n\r\n            if self.reproduction ~= nil and self.reproduction > 0 and self.pregnancy ~= nil and self.pregnancy.pregnancies ~= nil then\r\n                litersPerDay = litersPerDay * math.pow(1 + ((self.reproduction / 100) / 5), #self.pregnancy.pregnancies)\r\n            end\r\n\r\n            if self.genetics.metabolism ~= nil then litersPerDay = litersPerDay * self.genetics.metabolism end\r\n\r\n            litersPerDay = litersPerDay * (RealisticLivestock_PlaceableHusbandryFood.foodScale or 1)\r\n\r\n        end\r\n\r\n        if fillType == \"water\" then\r\n\r\n            local litersPerDay = input:get(self.age)\r\n\r\n            if self.isLactating then litersPerDay = litersPerDay * 1.5 end\r\n\r\n            if self.reproduction ~= nil and self.reproduction > 0 and self.pregnancy ~= nil and self.pregnancy.pregnancies ~= nil then\r\n                litersPerDay = litersPerDay * math.pow(1 + ((self.reproduction / 100) / 5), #self.pregnancy.pregnancies)\r\n            end\r\n\r\n        end\r\n\r\n        self.input[fillType] = litersPerDay / 24\r\n\r\n    end\r\n\r\n\r\n    if water ~= nil then\r\n\r\n        local litersPerDay = water:get(self.age)\r\n\r\n        if self.isLactating then litersPerDay = litersPerDay * 1.5 end\r\n\r\n        if self.reproduction ~= nil and self.reproduction > 0 and self.pregnancy ~= nil and self.pregnancy.pregnancies ~= nil then\r\n            litersPerDay = litersPerDay * math.pow(1 + ((self.reproduction / 100) / 5), #self.pregnancy.pregnancies)\r\n        end\r\n\r\n        self.input.water = litersPerDay / 24\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction Animal:updateOutput(temp)\r\n\r\n    local subType = self:getSubType()\r\n\r\n    for fillType, output in pairs(subType.output) do\r\n\r\n        local litersPerDay = 0\r\n        \r\n        if output.curve ~= nil then\r\n            litersPerDay = output.curve:get(self.age)\r\n        else\r\n            litersPerDay = output:get(self.age)\r\n        end\r\n\r\n\r\n\r\n        if fillType == \"pallets\" then\r\n\r\n            local fillTypeIndex = output.fillType\r\n            local productivity = self.genetics.productivity or 1\r\n\r\n            if fillTypeIndex == FillType.WOOL then\r\n\r\n                if temp < 12 then litersPerDay = 0 end\r\n\r\n            elseif fillTypeIndex == FillType.GOATMILK then\r\n\r\n                local monthsSinceLastBirth = self.monthsSinceLastBirth or 12\r\n                local factor = 0.8\r\n\r\n                if monthsSinceLastBirth >= 10 or not self.isLactating or not self.isParent then\r\n                    self.isLactating = false\r\n                    factor = 0\r\n                elseif monthsSinceLastBirth <= 3 then\r\n                    factor = factor + (monthsSinceLastBirth / 6)\r\n                else\r\n                    factor = factor + ((11 - monthsSinceLastBirth) / 15)\r\n                end\r\n\r\n                litersPerDay = litersPerDay * factor\r\n\r\n            end\r\n\r\n            litersPerDay = litersPerDay * productivity\r\n\r\n        end\r\n\r\n\r\n        if fillType == \"milk\" then\r\n\r\n            local monthsSinceLastBirth = self.monthsSinceLastBirth or 12\r\n            local factor = 0.8\r\n            local productivity = self.genetics.productivity or 1\r\n\r\n            if monthsSinceLastBirth >= 10 or not self.isLactating or not self.isParent then\r\n                self.isLactating = false\r\n                factor = 0\r\n            elseif monthsSinceLastBirth <= 3 then\r\n                factor = factor + (monthsSinceLastBirth / 6)\r\n            else\r\n                factor = factor + ((11 - monthsSinceLastBirth) / 15)\r\n            end\r\n\r\n            litersPerDay = litersPerDay * factor * productivity\r\n\r\n        end\r\n\r\n        for _, disease in pairs(self.diseases) do litersPerDay = disease:modifyOutput(fillType, litersPerDay) end\r\n\r\n        self.output[fillType] = litersPerDay / 24\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction Animal:getInput(inputType)\r\n\r\n    return self.input[inputType] or 0\r\n\r\nend\r\n\r\n\r\nfunction Animal:getOutput(outputType)\r\n\r\n    return self.output[outputType] or 0\r\n\r\nend\r\n\r\n\r\nfunction Animal:getHasName()\r\n\r\n    return self.name ~= nil and self.name ~= \"\"\r\n\r\nend\r\n\r\n\r\nfunction Animal:removeDisease(title)\r\n\r\n    for i, disease in pairs(self.diseases) do\r\n        if disease.type.title == title then\r\n            self:addMessage(\"DISEASE_CURED\", { disease.type.name })\r\n            table.remove(self.diseases, i)\r\n            return\r\n        end\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction Animal:addDisease(type, isCarrier, genes)\r\n\r\n    table.insert(self.diseases, Disease.new(type, isCarrier, genes))\r\n\r\n    self:addMessage(\"DISEASE_CONTRACTED\", { type.name })\r\n\r\nend\r\n\r\n\r\nfunction Animal:getDisease(title)\r\n\r\n    for _, disease in pairs(self.diseases) do\r\n\r\n        if disease.type.title == title then return disease end\r\n\r\n    end\r\n\r\n    return nil\r\n\r\nend\r\n\r\n\r\nfunction Animal:addMessage(id, args)\r\n\r\n    if self.clusterSystem == nil or self.clusterSystem.owner == nil or self.clusterSystem.owner.addRLMessage == nil then return end\r\n\r\n    self.clusterSystem.owner:addRLMessage(id, self:getIdentifiers(), args)\r\n\r\nend\r\n\r\n\r\nfunction Animal:getIdentifiers()\r\n\r\n    return string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[self.birthday.country].code, self.farmId, self.uniqueId)\r\n\r\nend\r\n\r\n\r\nfunction Animal:compareIdentifiers(identifiers)\r\n\r\n    return self:getIdentifiers() == identifiers\r\n\r\nend\r\n\r\n\r\nfunction Animal:setRecentlyBoughtByAI(value)\r\n\r\n    self.recentlyBoughtByAI = value\r\n\r\nend\r\n\r\n\r\nfunction Animal:getRecentlyBoughtByAI()\r\n\r\n    return self.recentlyBoughtByAI or false\r\n\r\nend\r\n\r\n\r\nfunction Animal:getMarked(key)\r\n\r\n    if key == nil then\r\n\r\n        for _, mark in pairs(self.marks) do\r\n            if mark.active then return true end\r\n        end\r\n\r\n        return false\r\n\r\n    end\r\n\r\n    return (self.marks[key].active) or false\r\n\r\nend\r\n\r\n\r\nfunction Animal:setMarked(key, active)\r\n\r\n    if key == nil then\r\n\r\n        for markKey, mark in pairs(self.marks) do self.marks[markKey].active = active end\r\n\r\n        return\r\n\r\n    end\r\n\r\n    self.marks[key].active = active\r\n    self:updateVisualMarker()\r\n\r\nend\r\n\r\n\r\nfunction Animal:getDefaultMarks()\r\n\r\n    return table.clone(RealisticLivestock.MARKS, 3)\r\n\r\nend\r\n\r\n\r\nfunction Animal:getHighestPriorityMark()\r\n\r\n    local highest\r\n\r\n    for key, mark in pairs(self.marks) do\r\n\r\n        if not mark.active then continue end\r\n\r\n        if highest == nil or highest.priority > mark.priority then highest = { [\"key\"] = key, [\"priority\"] = mark.priority } end\r\n\r\n    end\r\n\r\n    return highest.key\r\n\r\nend\r\n\r\n\r\nfunction Animal:getCanBeInseminatedByAnimal(animal)\r\n\r\n    if self.gender == \"male\" then return false, g_i18n:getText(\"rl_insemination_male\") end\r\n\r\n    if self.pregnancy ~= nil or self.isPregnant then return false, g_i18n:getText(\"rl_insemination_pregnant\") end\r\n\r\n    if self.animalTypeIndex ~= animal.typeIndex then return false, g_i18n:getText(\"rl_insemination_animalType\") end\r\n\r\n    if self.insemination ~= nil then return false, g_i18n:getText(\"rl_insemination_inseminated\") end\r\n\r\n    if self.age < self:getSubType().reproductionMinAgeMonth then return false, g_i18n:getText(\"rl_insemination_young\") end\r\n\r\n    if self.monthsSinceLastBirth <= 2 then return false, g_i18n:getText(\"rl_insemination_recovering\") end\r\n\r\n    if string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[animal.country].code, animal.farmId, animal.uniqueId) == self.fatherId then return false, g_i18n:getText(\"rl_insemination_father\") end\r\n\r\n    return true\r\n\r\nend\r\n\r\n\r\nfunction Animal:setInsemination(animal)\r\n\r\n    self.insemination = {\r\n        [\"country\"] = animal.country,\r\n        [\"farmId\"] = animal.farmId,\r\n        [\"uniqueId\"] = animal.uniqueId,\r\n        [\"genetics\"] = animal.genetics,\r\n        [\"name\"] = animal.name,\r\n        [\"subTypeIndex\"] = animal.subTypeIndex,\r\n        [\"success\"] = animal.success\r\n    }\r\n\r\nend\r\n\r\n\r\nfunction Animal:getHasAnyDisease()\r\n\r\n\treturn g_diseaseManager.diseasesEnabled and #self.diseases > 0\r\n\r\nend\r\n\r\n\r\nfunction Animal:createVisual(husbandryId, animalId)\r\n\r\n    self.visualAnimal = VisualAnimal.new(self, husbandryId, animalId)\r\n    self.visualAnimal:load()\r\n\r\nend\r\n\r\n\r\nfunction Animal:deleteVisual()\r\n\r\n    if self.visualAnimal ~= nil then self.visualAnimal:delete() end\r\n\r\n    self.visualAnimal = nil\r\n\r\nend\r\n\r\n\r\nfunction Animal:setVisualEarTagColours(leftTag, leftText, rightTag, rightText)\r\n\r\n    if self.visualAnimal ~= nil then self.visualAnimal:setEarTagColours(leftTag, leftText, rightTag, rightText) end\r\n\r\nend\r\n\r\n\r\nfunction Animal:updateVisualRightEarTag()\r\n\r\n    if self.visualAnimal ~= nil then self.visualAnimal:setRightEarTag() end\r\n\r\nend\r\n\r\n\r\nfunction Animal:updateVisualLeftEarTag()\r\n\r\n    if self.visualAnimal ~= nil then self.visualAnimal:setLeftEarTag() end\r\n\r\nend\r\n\r\n\r\nfunction Animal:updateVisualMonitor()\r\n\r\n    if self.visualAnimal ~= nil then self.visualAnimal:setMonitor() end\r\n\r\nend\r\n\r\n\r\nfunction Animal:updateVisualMarker()\r\n\r\n    if self.visualAnimal ~= nil then self.visualAnimal:setMarker() end\r\n\r\nend"
  },
  {
    "path": "src/RealisticLivestock_FSBaseMission.lua",
    "content": "RealisticLivestock_FSBaseMission = {}\r\nlocal modDirectory = g_currentModDirectory\r\nlocal modSettingsDirectory = g_currentModSettingsDirectory\r\n\r\n\r\nlocal function fixInGameMenu(frame, pageName, uvs, position, predicateFunc)\r\n\r\n\tlocal inGameMenu = g_gui.screenControllers[InGameMenu]\r\n\tposition = position or #inGameMenu.pagingElement.pages + 1\r\n\r\n\tfor k, v in pairs({pageName}) do\r\n\t\tinGameMenu.controlIDs[v] = nil\r\n\tend\r\n\r\n\tfor i = 1, #inGameMenu.pagingElement.elements do\r\n\t\tlocal child = inGameMenu.pagingElement.elements[i]\r\n\t\tif child == inGameMenu.pageAnimals then\r\n\t\t\tposition = i\r\n            break\r\n\t\tend\r\n\tend\r\n\t\r\n\tinGameMenu[pageName] = frame\r\n\tinGameMenu.pagingElement:addElement(inGameMenu[pageName])\r\n\r\n\tinGameMenu:exposeControlsAsFields(pageName)\r\n\r\n\tfor i = 1, #inGameMenu.pagingElement.elements do\r\n\t\tlocal child = inGameMenu.pagingElement.elements[i]\r\n\t\tif child == inGameMenu[pageName] then\r\n\t\t\ttable.remove(inGameMenu.pagingElement.elements, i)\r\n\t\t\ttable.insert(inGameMenu.pagingElement.elements, position, child)\r\n\t\t\tbreak\r\n\t\tend\r\n\tend\r\n\r\n\tfor i = 1, #inGameMenu.pagingElement.pages do\r\n\t\tlocal child = inGameMenu.pagingElement.pages[i]\r\n\t\tif child.element == inGameMenu[pageName] then\r\n\t\t\ttable.remove(inGameMenu.pagingElement.pages, i)\r\n\t\t\ttable.insert(inGameMenu.pagingElement.pages, position, child)\r\n\t\t\tbreak\r\n\t\tend\r\n\tend\r\n\r\n\tinGameMenu.pagingElement:updateAbsolutePosition()\r\n\tinGameMenu.pagingElement:updatePageMapping()\r\n\t\r\n\tinGameMenu:registerPage(inGameMenu[pageName], position, predicateFunc)\r\n\tinGameMenu:addPageTab(inGameMenu[pageName], modDirectory .. \"gui/icons.dds\", GuiUtils.getUVs(uvs))\r\n\r\n\tfor i = 1, #inGameMenu.pageFrames do\r\n\t\tlocal child = inGameMenu.pageFrames[i]\r\n\t\tif child == inGameMenu[pageName] then\r\n\t\t\ttable.remove(inGameMenu.pageFrames, i)\r\n\t\t\ttable.insert(inGameMenu.pageFrames, position, child)\r\n\t\t\tbreak\r\n\t\tend\r\n\tend\r\n\r\n\tinGameMenu:rebuildTabList()\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_FSBaseMission:onStartMission()\r\n\r\n    g_gui.guis.AnimalScreen:delete()\r\n    g_gui:loadGui(modDirectory .. \"gui/AnimalScreen.xml\", \"AnimalScreen\", g_animalScreen)\r\n\r\n    local xmlFile = XMLFile.loadIfExists(\"RealisticLivestock\", modSettingsDirectory .. \"Settings.xml\")\r\n    if xmlFile ~= nil then\r\n        local maxHusbandries = xmlFile:getInt(\"Settings.setting(0)#maxHusbandries\", 2)\r\n        RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES = maxHusbandries\r\n        xmlFile:delete()\r\n    end\r\n\r\n    AnimalAIDialog.register()\r\n    AnimalInfoDialog.register()\r\n    DiseaseDialog.register()\r\n    FileExplorerDialog.register()\r\n    ProfileDialog.register()\r\n    NameInputDialog.register()\r\n    EarTagColourPickerDialog.register()\r\n    AnimalFilterDialog.register()\r\n\r\n\tRLSettings.applyDefaultSettings()\r\n\r\n    local temp = self.environment.weather.temperatureUpdater.currentMin or 20\r\n\tlocal isServer = self:getIsServer() \r\n\r\n    for _, placeable in pairs(self.husbandrySystem.placeables) do\r\n\r\n        local animals = placeable:getClusters()\r\n\r\n        for _, animal in pairs(animals) do\r\n            animal:updateInput()\r\n            animal:updateOutput(temp)\r\n        end\r\n\r\n        if isServer then placeable:updateInputAndOutput(animals) end\r\n\r\n    end\r\n\r\n    local realisticLivestockFrame = RealisticLivestockFrame.new() \r\n\tg_gui:loadGui(modDirectory .. \"gui/RealisticLivestockFrame.xml\", \"RealisticLivestockFrame\", realisticLivestockFrame, true)\r\n\r\n    fixInGameMenu(realisticLivestockFrame, \"realisticLivestockFrame\", {260,0,256,256}, 4, function() return true end)\r\n\r\n    realisticLivestockFrame:initialize()\r\n\r\nend\r\n\r\nFSBaseMission.onStartMission = Utils.prependedFunction(FSBaseMission.onStartMission, RealisticLivestock_FSBaseMission.onStartMission)\r\n\r\n\r\nfunction RealisticLivestock_FSBaseMission:sendInitialClientState(connection, _, _)\r\n\r\n    local animalSystem = g_currentMission.animalSystem\r\n\r\n\tfor _, setting in pairs(RLSettings.SETTINGS) do\r\n\t\tif not setting.ignore then setting.state = setting.state or setting.default end\r\n\tend\r\n\r\n    connection:sendEvent(RL_BroadcastSettingsEvent.new())\r\n    connection:sendEvent(AnimalSystemStateEvent.new(animalSystem.countries, animalSystem.animals, animalSystem.aiAnimals))\r\n    connection:sendEvent(DewarManagerStateEvent.new())\r\n    connection:sendEvent(HusbandryMessageStateEvent.new(g_currentMission.husbandrySystem.placeables))\r\n\r\nend\r\n\r\nFSBaseMission.sendInitialClientState = Utils.prependedFunction(FSBaseMission.sendInitialClientState, RealisticLivestock_FSBaseMission.sendInitialClientState)\r\n\r\n\r\nfunction RealisticLivestock_FSBaseMission:onDayChanged()\r\n\r\n\tif not self:getIsServer() then return end\r\n\r\n\tlocal husbandrySystem = self.husbandrySystem\r\n\r\n\tfor _, farm in pairs(g_farmManager:getFarms()) do\r\n\r\n\t\tlocal husbandries = husbandrySystem:getPlaceablesByFarm(farm.farmId)\r\n\t\tlocal wages = 0\r\n\r\n\t\tfor _, husbandry in pairs(husbandries) do\r\n\r\n\t\t\tlocal aiManager = husbandry:getAIManager()\r\n\r\n\t\t\tif aiManager ~= nil then wages = wages + (aiManager.wage or 0) end\r\n\r\n\t\tend\r\n\r\n\t\tif wages > 0 then self:addMoney(-wages, farm.farmId, MoneyType.HERDSMAN_WAGES, true, true) end\r\n\r\n\tend\r\n\r\nend\r\n\r\nFSBaseMission.onDayChanged = Utils.appendedFunction(FSBaseMission.onDayChanged, RealisticLivestock_FSBaseMission.onDayChanged)"
  },
  {
    "path": "src/animals/husbandry/AnimalSystemStateEvent.lua",
    "content": "AnimalSystemStateEvent = {}\r\n\r\nlocal AnimalSystemStateEvent_mt = Class(AnimalSystemStateEvent, Event)\r\nInitEventClass(AnimalSystemStateEvent, \"AnimalSystemStateEvent\")\r\n\r\n\r\nfunction AnimalSystemStateEvent.emptyNew()\r\n    local self = Event.new(AnimalSystemStateEvent_mt)\r\n    return self\r\nend\r\n\r\n\r\nfunction AnimalSystemStateEvent.new(countries, animals, aiAnimals)\r\n\r\n    local self = AnimalSystemStateEvent.emptyNew()\r\n\r\n    self.countries, self.animals, self.aiAnimals = countries, animals, aiAnimals\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystemStateEvent:readStream(streamId, connection)\r\n\r\n    local numCountries = streamReadUInt8(streamId)\r\n    local countries = {}\r\n\r\n    for i = 1, numCountries do\r\n\r\n        local farms = {}\r\n        local numFarms = streamReadUInt8(streamId)\r\n\r\n        for j = 1, numFarms do\r\n\r\n            local semenPrice = streamReadFloat32(streamId)\r\n            local quality = streamReadFloat32(streamId)\r\n            local id = streamReadUInt32(streamId)\r\n            local numIds = streamReadUInt8(streamId)\r\n            local ids = {}\r\n\r\n            for k = 1, numIds do\r\n                local animalTypeIndex = streamReadUInt8(streamId)\r\n                local animalId = streamReadUInt32(streamId)\r\n                ids[animalTypeIndex] = animalId\r\n            end\r\n\r\n            table.insert(farms, {\r\n                [\"semenPrice\"] = semenPrice,\r\n                [\"quality\"] = quality,\r\n                [\"id\"] = id,\r\n                [\"ids\"] = ids\r\n            })\r\n\r\n        end\r\n\r\n        countries[i] = {\r\n            [\"farms\"] = farms\r\n        }\r\n\r\n    end\r\n\r\n    self.countries = countries\r\n\r\n\r\n    self.animals = {}\r\n    local numAnimals = streamReadUInt8(streamId)\r\n\r\n    for i = 1, numAnimals do\r\n\r\n        local animals = {}\r\n        local numSaleAnimals = streamReadUInt16(streamId)\r\n\r\n        for j = 1, numSaleAnimals do\r\n\r\n            local animal = Animal.new()\r\n            local success = animal:readStream(streamId, connection)\r\n            local day = streamReadUInt16(streamId)\r\n\r\n            animal.sale = {\r\n                [\"day\"] = day\r\n            }\r\n\r\n            table.insert(animals, animal)\r\n\r\n        end\r\n\r\n        self.animals[i] = animals\r\n\r\n    end\r\n\r\n\r\n    self.aiAnimals = {}\r\n    local numAIAnimals = streamReadUInt8(streamId)\r\n\r\n    for i = 1, numAIAnimals do\r\n\r\n        local animals = {}\r\n        local num = streamReadUInt16(streamId)\r\n\r\n        for j = 1, num do\r\n\r\n            local animal = Animal.new()\r\n            local success = animal:readStream(streamId, connection)\r\n\r\n            animal.isAIAnimal = true\r\n            animal.success = streamReadFloat32(streamId) or 0.65\r\n            animal.favouritedBy = {}\r\n\r\n            local numUsers = streamReadUInt8(streamId)\r\n\r\n            for k = 1, numUsers do\r\n\r\n                local userId = streamReadString(streamId)\r\n                local favourite = streamReadBool(streamId)\r\n\r\n                animal.favouritedBy[userId] = favourite\r\n\r\n            end\r\n\r\n            table.insert(animals, animal)\r\n\r\n        end\r\n\r\n        self.aiAnimals[i] = animals\r\n\r\n    end\r\n\r\n    self:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystemStateEvent:writeStream(streamId, connection)\r\n    \r\n    local countries = self.countries\r\n    streamWriteUInt8(streamId, #countries)\r\n\r\n    for i = 1, #countries do\r\n\r\n        local farms = countries[i].farms\r\n\r\n        streamWriteUInt8(streamId, #farms)\r\n\r\n        for _, farm in pairs(farms) do\r\n\r\n            streamWriteFloat32(streamId, farm.semenPrice)\r\n            streamWriteFloat32(streamId, farm.quality)\r\n            streamWriteUInt32(streamId, farm.id)\r\n\r\n            local ids, numIds = farm.ids, 0\r\n\r\n            for animalTypeIndex, id in pairs(ids) do numIds = numIds + 1 end\r\n\r\n            streamWriteUInt8(streamId, numIds)\r\n\r\n            for animalTypeIndex, id in pairs(ids) do\r\n                streamWriteUInt8(streamId, animalTypeIndex)\r\n                streamWriteUInt32(streamId, id)\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n    streamWriteUInt8(streamId, #self.animals)\r\n\r\n    for i = 1, #self.animals do\r\n\r\n        local animals = self.animals[i] or {}\r\n\r\n        streamWriteUInt16(streamId, #animals)\r\n\r\n        for _, animal in pairs(animals) do\r\n\r\n            local success = animal:writeStream(streamId, connection)\r\n            streamWriteUInt16(streamId, animal.sale.day)\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n    streamWriteUInt8(streamId, #self.aiAnimals)\r\n\r\n    for i = 1, #self.aiAnimals do\r\n\r\n        local animals = self.aiAnimals[i] or {}\r\n\r\n        streamWriteUInt16(streamId, #animals)\r\n\r\n        for _, animal in pairs(animals) do\r\n\r\n            local success = animal:writeStream(streamId, connection)\r\n\r\n            streamWriteFloat32(streamId, animal.success or 0.65)\r\n\r\n            local numUsers = 0\r\n\r\n            for userId, _ in pairs(animal.favouritedBy) do numUsers = numUsers + 1 end\r\n\r\n            streamWriteUInt8(streamId, numUsers)\r\n\r\n            for userId, favourite in pairs(animal.favouritedBy) do\r\n\r\n                streamWriteString(streamId, userId)\r\n                streamWriteBool(streamId, favourite)\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystemStateEvent:run(connection)\r\n\r\n    local animalSystem = g_currentMission.animalSystem\r\n\r\n    animalSystem.countries = self.countries\r\n    animalSystem.animals = self.animals\r\n    animalSystem.aiAnimals = self.aiAnimals\r\n\r\nend"
  },
  {
    "path": "src/animals/husbandry/RealisticLivestock_AnimalNameSystem.lua",
    "content": "RealisticLivestock_AnimalNameSystem = {}\r\nlocal modDirectory = g_currentModDirectory\r\n\r\nfunction RealisticLivestock_AnimalNameSystem:loadMapData(_, _, missionInfo)\r\n\r\n    self.names = {}\r\n    self.femaleNames = {}\r\n    self.maleNames = {}\r\n    self.descriptions = {}\r\n\r\n    local xmlFile = XMLFile.loadIfExists(\"animalNames\", modDirectory .. \"xml/animalNames.xml\")\r\n    if xmlFile == nil then return false end\r\n\r\n    xmlFile:iterate(\"animalNames.name\", function(_, key)\r\n\r\n        local name = xmlFile:getString(key .. \"#value\")\r\n        if name == nil then return false end\r\n\r\n        local gender = xmlFile:getString(key .. \"#gender\", nil)\r\n\r\n        if gender == \"male\" then\r\n            table.insert(self.maleNames, name)\r\n        elseif gender == \"female\" then\r\n            table.insert(self.femaleNames, name)\r\n        else\r\n            table.insert(self.femaleNames, name)\r\n            table.insert(self.maleNames, name)\r\n        end\r\n\r\n    end)\r\n\r\n    xmlFile:iterate(\"animalNames.description\", function(_, key)\r\n        local description = xmlFile:getString(key .. \"#value\")\r\n        table.insert(self.descriptions, description)\r\n    end)\r\n\r\n    xmlFile:delete()\r\n    return true\r\n\r\nend\r\n\r\nAnimalNameSystem.loadMapData = Utils.overwrittenFunction(AnimalNameSystem.loadMapData, RealisticLivestock_AnimalNameSystem.loadMapData)\r\n\r\n\r\nfunction RealisticLivestock_AnimalNameSystem:getRandomName(_, gender)\r\n\r\n    if gender == nil then gender = \"female\" end\r\n    local names = gender == \"male\" and self.maleNames or self.femaleNames\r\n\r\n    if names == nil or #names == 0 then return nil end\r\n    local description = \"\"\r\n\r\n    if self.descriptions ~= nil and #self.descriptions > 0 and math.random() >= 0.65 then description = self.descriptions[math.random(1, #self.descriptions)] .. \" \" end\r\n\r\n    return description .. names[math.random(1, #names)]\r\n\r\nend\r\n\r\nAnimalNameSystem.getRandomName = Utils.overwrittenFunction(AnimalNameSystem.getRandomName, RealisticLivestock_AnimalNameSystem.getRandomName)\r\n\r\n\r\nfunction AnimalNameSystem:getNamesAlphabetical(gender)\r\n\r\n    local names = table.clone(gender == \"female\" and self.femaleNames or self.maleNames)\r\n\r\n    table.sort(names, function(a, b) return a < b end)\r\n\r\n    return names\r\n\r\nend"
  },
  {
    "path": "src/animals/husbandry/RealisticLivestock_AnimalSystem.lua",
    "content": "RealisticLivestock_AnimalSystem = {}\r\n\r\nlocal modName = g_currentModName\r\nlocal modDirectory = g_currentModDirectory\r\n\r\n\r\ntable.insert(FinanceStats.statNames, \"monitorSubscriptions\")\r\nFinanceStats.statNameToIndex[\"monitorSubscriptions\"] = #FinanceStats.statNames\r\n\r\n\r\n\r\nAnimalSystem.BREED_TO_NAME = {\r\n    [\"HOLSTEIN\"] = \"Holstein\",\r\n    [\"SWISS_BROWN\"] = \"Swiss Brown\",\r\n    [\"ANGUS\"] = \"Angus\",\r\n    [\"LIMOUSIN\"] = \"Limousin\",\r\n    [\"HEREFORD\"] = \"Hereford\",\r\n    [\"HIGHLAND\"] = \"Highland\",\r\n    [\"WATER_BUFFALO\"] = \"Water Buffalo\",\r\n    [\"LANDRACE\"] = \"Landrace\",\r\n    [\"BLACK_PIED\"] = \"Black Pied\",\r\n    [\"BERKSHIRE\"] = \"Berkshire\",\r\n    [\"STEINSCHAF\"] = \"Steinschaf\",\r\n    [\"SWISS_MOUNTAIN\"] = \"Swiss Mountain\",\r\n    [\"BLACK_WELSH\"] = \"Black Welsh\",\r\n    [\"GOAT\"] = \"Goat\",\r\n    [\"GRAY\"] = \"Gray\",\r\n    [\"PINTO\"] = \"Pinto\",\r\n    [\"PALOMINO\"] = \"Palomino\",\r\n    [\"CHESTNUT\"] = \"Chestnut\",\r\n    [\"BAY\"] = \"Bay\",\r\n    [\"BLACK\"] = \"Black\",\r\n    [\"SEAL_BROWN\"] = \"Seal Brown\",\r\n    [\"DUN\"] = \"Dun\",\r\n    [\"CHICKEN\"] = \"Chicken\",\r\n    [\"OTHER\"] = \"Unknown\"\r\n}\r\n\r\n\r\nAnimalSystem.BREED_TO_MARKER_COLOUR = {\r\n    [\"HOLSTEIN\"] = { 1, 0, 0 },\r\n    [\"SWISS_BROWN\"] = { 1, 1, 0 },\r\n    [\"ANGUS\"] = { 1, 1, 1 },\r\n    [\"LIMOUSIN\"] = { 0, 0, 1 },\r\n    [\"HEREFORD\"] = { 0, 0, 1 },\r\n    [\"WATER_BUFFALO\"] = { 1, 1, 1 }\r\n}\r\n\r\n\r\nfunction RealisticLivestock_AnimalSystem:loadMapData(_, mapXml, mission, baseDirectory)\r\n\r\n    RLSettings.initialize()\r\n    RLSettings.validateCustomAnimalsConfiguration()\r\n\r\n    self.customEnvironment = modName\r\n\r\n    self.baseColours = {\r\n        [\"earTagLeft\"] = { 0.8, 0.7, 0 },\r\n        [\"earTagRight\"] = { 0.8, 0.7, 0 },\r\n        [\"earTagLeft_text\"] = { 0, 0, 0 },\r\n        [\"earTagRight_text\"] = { 0, 0, 0 }\r\n    }\r\n\r\n    local path = RLSettings.getAnimalsXMLPath() or (modDirectory .. \"xml/animals.xml\")\r\n\r\n    print(string.format(\"RealisticLivestock - using animals XML path \\'%s\\'\", path))\r\n\r\n    local xmlFile = XMLFile.load(\"animals\", path)\r\n\r\n    if xmlFile ~= nil then\r\n\r\n        local basePath = RLSettings.getAnimalsBasePath() or modDirectory\r\n\r\n        print(string.format(\"RealisticLivestock - using animals base path \\'%s\\'\", basePath))\r\n\r\n        self:loadAnimals(xmlFile, basePath)\r\n        xmlFile:delete()\r\n\r\n    end\r\n\r\n    self.customEnvironment = mission.customEnvironment\r\n\r\n    local baseFilename = getXMLString(mapXml, \"map.animals#filename\")\r\n\r\n\tif baseFilename == nil or baseFilename == \"\" then\r\n\r\n\t\tLogging.xmlInfo(mapXml, \"No animals xml given at \\'map.animals#filename\\'\")\r\n\r\n    elseif #self.types == 0 or not RLSettings.getOverrideVanillaAnimals() then\r\n\r\n\t    local baseXmlFile = XMLFile.load(\"animals\", Utils.getFilename(baseFilename, baseDirectory))\r\n\r\n\t    if baseXmlFile ~= nil then\r\n\t\t\r\n            self:loadAnimals(baseXmlFile, baseDirectory)\r\n            baseXmlFile:delete()\r\n\r\n\t    end\r\n\r\n    end\r\n\r\n    self.customEnvironment = modName\r\n\r\n    print(\"--------\", string.format(\"RealisticLivestock - loaded %s animals:\", #self.types))\r\n\r\n    for _, type in pairs(self.types) do\r\n        \r\n        print(\"\", string.format(\"- Animal Type: %s (%s subTypes)\", type.name, #type.subTypes))\r\n\r\n        for i, subTypeIndex in pairs(type.subTypes) do\r\n\r\n            print(string.format(\"|--- SubType (%s): %s (%s)\", i, self.subTypes[subTypeIndex].name, self.subTypes[subTypeIndex].gender))\r\n\r\n        end\r\n\r\n    end\r\n\r\n    print(\"\", \"--------\")\r\n\r\n    self:loadColourConfigurations()\r\n\r\n\treturn #self.types > 0\r\n\r\nend\r\n\r\nAnimalSystem.loadMapData = Utils.overwrittenFunction(AnimalSystem.loadMapData, RealisticLivestock_AnimalSystem.loadMapData)\r\n\r\n\r\nfunction RealisticLivestock_AnimalSystem:loadAnimals(_, xmlFile, directory)\r\n\r\n\tfor _, key in xmlFile:iterator(\"animals.animal\") do\r\n\r\n\t\tif #self.types >= 2 ^ AnimalSystem.SEND_NUM_BITS - 1 then\r\n\t\t\tLogging.xmlWarning(xmlFile, \"Maximum number of supported animal types reached. Ignoring remaining types\")\r\n\t\t\treturn\r\n\t\tend\r\n\r\n\t\tlocal rawName = xmlFile:getString(key .. \"#type\")\r\n\r\n\t\tif rawName == nil then\r\n\t\t\tLogging.xmlError(xmlFile, \"Missing animal type. \\'%s\\'\", key)\r\n\t\t\treturn\r\n\t\tend\r\n\r\n\t\tlocal name = rawName:upper()\r\n        local rawConfigFilename = xmlFile:getString(key .. \".configFilename\")\r\n\r\n\t\tif rawConfigFilename == nil then\r\n\t\t\tLogging.xmlError(xmlFile, \"Missing config file for animal type \\'%s\\'. \\'%s\\'\", name, key)\r\n\t\t\treturn\r\n\t\tend\r\n\r\n        local configFilename = Utils.getFilename(rawConfigFilename, directory)\r\n        local animalType\r\n\r\n\t\tif self.nameToTypeIndex[name] ~= nil then\r\n\r\n\t\t\tanimalType = self.nameToType[name]\r\n\r\n        else\r\n\r\n            local clusterClass = xmlFile:getString(key .. \"#clusterClass\")\r\n\r\n\t\t    if clusterClass == nil then\r\n\t\t\t    Logging.xmlError(xmlFile, \"Missing animal clusterClass for \\'%s\\'!\", key)\r\n\t\t\t    return\r\n\t\t    end\r\n\r\n\t\t    local statsBreedingName = xmlFile:getString(key .. \"#statsBreeding\")\r\n\t\t    local title = g_i18n:convertText(xmlFile:getString(key .. \"#groupTitle\"), self.customEnvironment)\r\n\t\t    local height = xmlFile:getFloat(key .. \".navMeshAgent#height\")\r\n\t\t    local radius = xmlFile:getFloat(key .. \".navMeshAgent#radius\")\r\n\t\t    local maxClimbMeters = xmlFile:getFloat(key .. \".navMeshAgent#maxClimbMeters\")\r\n\t\t    local maxSlope = math.rad(xmlFile:getFloat(key .. \".navMeshAgent#maxSlope\") or 15)\r\n\t\t    local sqmPerAnimal = xmlFile:getFloat(key .. \".pasture#sqmPerAnimal\", 100)\r\n            local averageBuyAge = xmlFile:getInt(key .. \"#averageBuyAge\", 12)\r\n            local maxBuyAge = xmlFile:getInt(key .. \"#maxBuyAge\", 60)\r\n\r\n            local averageChildren = xmlFile:getInt(key .. \".pregnancy#average\", 1)\r\n            local maxChildren = xmlFile:getInt(key .. \".pregnancy#max\", 3)\r\n\r\n            local pregnancy = {}\r\n            local totalChance = 0\r\n\r\n            for i = 0, averageChildren - 1 do\r\n\r\n                totalChance = totalChance + (i / averageChildren) / maxChildren\r\n\r\n                table.insert(pregnancy, totalChance)\r\n\r\n            end\r\n\r\n            totalChance = totalChance + 0.5\r\n            table.insert(pregnancy, totalChance)\r\n\r\n            for i = averageChildren + 1, maxChildren - 1 do\r\n\r\n                totalChance = totalChance + (1 - totalChance) * 0.8\r\n\r\n                table.insert(pregnancy, totalChance)\r\n\r\n            end\r\n\r\n            table.insert(pregnancy, 1)\r\n\r\n            local function pregnancyFunction(value)\r\n\r\n                for i = 0, #pregnancy - 1 do\r\n\r\n                    if pregnancy[i + 1] > value then return i end\r\n\r\n                end\r\n\r\n                return 0\r\n\r\n            end\r\n\r\n            local fertility = self:loadAnimCurve(xmlFile, key .. \".fertility\")\r\n\r\n            if fertility == nil then\r\n\r\n                fertility = AnimCurve.new(linearInterpolator1)\r\n\r\n                for i = 0, 120, 6 do\r\n\r\n                    fertility:addKeyframe({\r\n                        i <= 12 and 0 or (i <= 30 and (900 + i)) or (900 - i * 3),\r\n                        [\"time\"] = i\r\n                    })\r\n\r\n                end\r\n\r\n                fertility:addKeyframe({\r\n                    0,\r\n                    [\"time\"] = 121\r\n                })\r\n\r\n            end\r\n\r\n\t\t    animalType = {\r\n\t\t\t    [\"name\"] = name,\r\n\t\t\t    [\"groupTitle\"] = title,\r\n\t\t\t    [\"typeIndex\"] = #self.types + 1,\r\n\t\t\t    [\"configFilename\"] = configFilename,\r\n\t\t\t    [\"clusterClass\"] = clusterClass == \"AnimalCluster\" and AnimalCluster or AnimalClusterHorse,\r\n\t\t\t    [\"statsBreedingName\"] = statsBreedingName,\r\n\t\t\t    [\"navMeshAgentAttributes\"] = {\r\n\t\t\t\t    [\"height\"] = height,\r\n\t\t\t\t    [\"radius\"] = radius,\r\n\t\t\t\t    [\"maxClimbMeters\"] = maxClimbMeters,\r\n\t\t\t\t    [\"maxSlope\"] = maxSlope\r\n\t\t\t    },\r\n                [\"sqmPerAnimal\"] = sqmPerAnimal,\r\n\t\t\t    [\"subTypes\"] = {},\r\n                [\"animals\"] = {},\r\n                [\"averageBuyAge\"] = averageBuyAge,\r\n                [\"maxBuyAge\"] = maxBuyAge,\r\n                [\"colours\"] = {\r\n                    [\"earTagLeft\"] = { 0.8, 0.7, 0 },\r\n                    [\"earTagRight\"] = { 0.8, 0.7, 0 },\r\n                    [\"earTagLeft_text\"] = { 0, 0, 0 },\r\n                    [\"earTagRight_text\"] = { 0, 0, 0 }\r\n                },\r\n                [\"pregnancy\"] = {\r\n                    [\"get\"] = pregnancyFunction,\r\n                    [\"average\"] = averageChildren\r\n                },\r\n                [\"fertility\"] = fertility,\r\n                [\"breeds\"] = {}\r\n\t\t    }\r\n            \r\n\t\tend\r\n\r\n\t\tif self:loadAnimalConfig(animalType, directory, configFilename) then\r\n\r\n\t\t    if self:loadSubTypes(animalType, xmlFile, key, directory) then\r\n\r\n\t\t\t    if self.nameToType[name] == nil then\r\n\r\n                    table.insert(self.types, animalType)\r\n\t\t\t        self.nameToType[name] = animalType\r\n\t\t\t        self.nameToTypeIndex[name] = animalType.typeIndex\r\n\t\t\t        self.typeIndexToName[animalType.typeIndex] = name\r\n\r\n                end\r\n\r\n\t\t    end\r\n\r\n        end\r\n\r\n\tend\r\n\r\nend\r\n\r\nAnimalSystem.loadAnimals = Utils.overwrittenFunction(AnimalSystem.loadAnimals, RealisticLivestock_AnimalSystem.loadAnimals)\r\n\r\n\r\nfunction RealisticLivestock_AnimalSystem:loadAnimalConfig(_, animalType, directory, configFilename)\r\n\r\n    local xmlFile = XMLFile.load(\"animalsConfig\", configFilename)\r\n\r\n\tif xmlFile == nil then return false end\r\n\r\n\tfor _, key in xmlFile:iterator(\"animalHusbandry.animals.animal\") do\r\n\r\n        local filename = xmlFile:getString(key .. \".assets#filename\")\r\n        local filenamePosed = xmlFile:getString(key .. \".assets#filenamePosed\")\r\n\r\n\t\tlocal animal = {\r\n\t\t\t[\"filename\"] = Utils.getFilename(filename, directory),\r\n\t\t\t[\"filenamePosed\"] = Utils.getFilename(filenamePosed, directory)\r\n\t\t}\r\n\r\n        if not fileExists(animal.filename) and string.contains(filename, \"dataS\") then animal.filename = filename end\r\n        if not fileExists(animal.filenamePosed) and string.contains(filenamePosed, \"dataS\") then animal.filenamePosed = filenamePosed end\r\n\r\n\t\tif animal.filenamePosed == nil then\r\n\t\t\tLogging.xmlError(xmlFile, \"Missing \\'filenamePosed\\' for animal \\'%s\\'\", key)\r\n\t\t\tanimal.filenamePosed = animal.filename\r\n\t\tend\r\n\r\n\t\tanimal.variations = {}\r\n\r\n\t\tfor _, variationKey in xmlFile:iterator(key .. \".assets.texture\") do\r\n\r\n\t\t\tlocal variation = {}\r\n\r\n\t\t\tlocal numTilesU = xmlFile:getInt(variationKey .. \"#numTilesU\", 1)\r\n\t\t\tvariation.numTilesU = math.max(numTilesU, 1)\r\n\r\n\t\t\tlocal tileUIndex = xmlFile:getInt(variationKey .. \"#tileUIndex\", 0)\r\n\t\t\tvariation.tileUIndex = math.clamp(tileUIndex, 0, variation.numTilesU - 1)\r\n\r\n\t\t\tlocal numTilesV = xmlFile:getInt(variationKey .. \"#numTilesV\", 1)\r\n\t\t\tvariation.numTilesV = math.max(numTilesV, 1)\r\n\r\n\t\t\tlocal tileVIndex = xmlFile:getInt(variationKey .. \"#tileVIndex\", 0)\r\n\t\t\tvariation.tileVIndex = math.clamp(tileVIndex, 0, variation.numTilesV - 1)\r\n\r\n\t\t\tvariation.mirrorV = xmlFile:getBool(variationKey .. \"#mirrorV\", false)\r\n\t\t\tvariation.multi = xmlFile:getBool(variationKey .. \"#multi\", true)\r\n\r\n\t\t\ttable.insert(animal.variations, variation)\r\n\r\n\t\tend\r\n\r\n\t\ttable.insert(animalType.animals, animal)\r\n\r\n\tend\r\n\r\n\txmlFile:delete()\r\n\r\n\treturn true\r\n\r\nend\r\n\r\nAnimalSystem.loadAnimalConfig = Utils.overwrittenFunction(AnimalSystem.loadAnimalConfig, RealisticLivestock_AnimalSystem.loadAnimalConfig)\r\n\r\n\r\nfunction RealisticLivestock_AnimalSystem:loadSubTypes(_, animalType, xmlFile, key, directory)\r\n\r\n    for _, subTypeKey in xmlFile:iterator(key .. \".subType\") do\r\n\r\n\t\tlocal rawName = xmlFile:getString(subTypeKey .. \"#subType\")\r\n        local requiredDLC = xmlFile:getString(subTypeKey .. \"#requiredDLC\")\r\n\r\n        if requiredDLC == nil or g_modNameToDirectory[g_uniqueDlcNamePrefix .. requiredDLC] ~= nil then\r\n\r\n\t\t    if rawName == nil then\r\n\t\t\t    Logging.xmlError(xmlFile, \"Missing animal subtype. \\'%s\\'\", subTypeKey)\r\n\t\t\t    break\r\n\t\t    end\r\n\r\n\t\t    local name = rawName:upper()\r\n\r\n\t\t    if self.nameToSubTypeIndex[name] ~= nil then continue end\r\n\r\n\t\t    local fillTypeName = xmlFile:getString(subTypeKey .. \"#fillTypeName\")\r\n\t\t    local fillTypeIndex = g_fillTypeManager:getFillTypeIndexByName(fillTypeName)\r\n\r\n\t\t    if fillTypeIndex == nil then\r\n\t\t\t    Logging.xmlError(xmlFile, \"FillType \\'%s\\' for animal subtype \\'%s\\' not defined!\", fillTypeName, subTypeKey)\r\n\t\t\t    break\r\n\t\t    end\r\n\r\n\t\t    local subType = {\r\n\t\t\t    [\"name\"] = name,\r\n\t\t\t    [\"subTypeIndex\"] = #self.subTypes + 1,\r\n\t\t\t    [\"fillTypeIndex\"] = fillTypeIndex,\r\n\t\t\t    [\"typeIndex\"] = animalType.typeIndex,\r\n\t\t\t    [\"statsBreedingName\"] = xmlFile:getString(subTypeKey .. \"#statsBreeding\") or animalType.statsBreedingName\r\n\t\t    }\r\n\r\n\t\t    table.insert(animalType.subTypes, subType.subTypeIndex)\r\n\r\n\t\t    if self:loadSubType(animalType, subType, xmlFile, subTypeKey, directory) then\r\n\r\n\t\t\t    table.insert(self.subTypes, subType)\r\n\t\t\t    self.nameToSubType[name] = subType\r\n\t\t\t    self.nameToSubTypeIndex[name] = subType.subTypeIndex\r\n\t\t\t    self.fillTypeIndexToSubType[fillTypeIndex] = subType\r\n\r\n                local breed = xmlFile:getString(subTypeKey .. \"#breed\", name)\r\n                subType.breed = breed\r\n\r\n                if animalType.breeds[breed] == nil then animalType.breeds[breed] = {} end\r\n\r\n                table.insert(animalType.breeds[breed], subType)\r\n\r\n\t\t    end\r\n\r\n        end\r\n\r\n\tend\r\n\r\n\treturn true\r\n\r\nend\r\n\r\nAnimalSystem.loadSubTypes = Utils.overwrittenFunction(AnimalSystem.loadSubTypes, RealisticLivestock_AnimalSystem.loadSubTypes)\r\n\r\n\r\nfunction RealisticLivestock_AnimalSystem:loadSubType(superFunc, animalType, subType, xmlFile, key, directory)\r\n\r\n    local returnValue = superFunc(self, animalType, subType, xmlFile, key, directory)\r\n\r\n    local height, radius = animalType.navMeshAgentAttributes.height, animalType.navMeshAgentAttributes.radius\r\n\r\n    subType.gender = xmlFile:getString(key .. \"#gender\", \"female\")\r\n\r\n    if directory ~= modDirectory and subType.gender == \"female\" then subType.gender = (string.contains(subType.name, \"_MALE\") or string.contains(subType.name, \"BULL_\") or string.contains(subType.name, \"BOAR_\") or string.contains(subType.name, \"RAM_\") or string.contains(subType.name, \"BUCK_\") or string.contains(subType.name, \"STALLION_\") or string.contains(subType.name, \"ROOSTER_\")) and \"male\" or \"female\" end\r\n\r\n    subType.maxWeight = xmlFile:getFloat(key .. \"#maxWeight\", height * radius * 750)\r\n    subType.targetWeight = xmlFile:getFloat(key .. \"#targetWeight\", height * radius * 300)\r\n    subType.minWeight = xmlFile:getFloat(key .. \"#minWeight\", height * radius * 50)\r\n\r\n    for _, visual in pairs(subType.visuals) do\r\n\r\n        if visual.textureIndexes == nil then continue end\r\n\r\n        local visualAnimal = table.clone(visual.visualAnimal, 10)\r\n        visualAnimal.variations = {}\r\n\r\n        for _, textureIndex in pairs(visual.textureIndexes) do table.insert(visualAnimal.variations, visual.visualAnimal.variations[textureIndex]) end\r\n\r\n        if #visualAnimal.variations > 0 then visual.visualAnimal = visualAnimal end\r\n\r\n    end\r\n\r\n    return returnValue\r\n\r\nend\r\n\r\nAnimalSystem.loadSubType = Utils.overwrittenFunction(AnimalSystem.loadSubType, RealisticLivestock_AnimalSystem.loadSubType)\r\n\r\n\r\nfunction RealisticLivestock_AnimalSystem:loadVisualData(superFunc, animalType, xmlFile, key, baseDirectory)\r\n\r\n    local visualData = superFunc(self, animalType, xmlFile, key, baseDirectory)\r\n\r\n    if visualData == nil then return nil end\r\n\r\n    local earTagLeft = xmlFile:getString(key .. \"#earTagLeft\", nil)\r\n    local earTagRight = xmlFile:getString(key .. \"#earTagRight\", nil)\r\n    local noseRing = xmlFile:getString(key .. \"#noseRing\", nil)\r\n    local bumId = xmlFile:getString(key .. \"#bumId\", nil)\r\n    local monitor = xmlFile:getString(key .. \"#monitor\", nil)\r\n    local marker = xmlFile:getString(key .. \"#marker\", nil)\r\n\r\n    if earTagLeft ~= nil then visualData.earTagLeft = earTagLeft end\r\n    if earTagRight ~= nil then visualData.earTagRight = earTagRight end\r\n    if noseRing ~= nil then visualData.noseRing = noseRing end\r\n    if bumId ~= nil then visualData.bumId = bumId end\r\n    if monitor ~= nil then visualData.monitor = monitor end\r\n    if marker ~= nil then visualData.marker = marker end\r\n\r\n    if xmlFile:hasProperty(key .. \".textureIndexes\") then\r\n\r\n        visualData.textureIndexes = {}\r\n\r\n        xmlFile:iterate(key .. \".textureIndexes.value\", function(_, textureKey)\r\n\r\n            table.insert(visualData.textureIndexes, xmlFile:getInt(textureKey, 1))\r\n\r\n        end)\r\n\r\n    end\r\n\r\n    return visualData\r\n\r\nend\r\n\r\nAnimalSystem.loadVisualData = Utils.overwrittenFunction(AnimalSystem.loadVisualData, RealisticLivestock_AnimalSystem.loadVisualData)\r\n\r\n\r\nfunction AnimalSystem:initialiseCountries()\r\n\r\n    self.maxDealerAnimals = self.maxDealerAnimals or 40\r\n    self.countries = {}\r\n    self.animals = {}\r\n    self.aiAnimals = {}\r\n\r\n    for _, animalType in pairs(self.types) do\r\n        self.animals[animalType.typeIndex] = {}\r\n        self.aiAnimals[animalType.typeIndex] = {}\r\n    end\r\n\r\n\r\n    for countryIndex, country in pairs(RealisticLivestock.AREA_CODES) do\r\n\r\n        self.countries[countryIndex] = {\r\n            [\"index\"] = countryIndex,\r\n            [\"farms\"] = {}\r\n        }\r\n\r\n    end\r\n\r\n    MoneyType.MONITOR_SUBSCRIPTIONS = MoneyType.register(\"monitorSubscriptions\", \"rl_ui_monitorSubscriptions\")\r\n    MoneyType.LAST_ID = MoneyType.LAST_ID + 1\r\n\r\n    if self.isServer then g_messageCenter:subscribe(MessageType.HOUR_CHANGED, self.onHourChanged, self) end\r\n    g_messageCenter:subscribe(MessageType.DAY_CHANGED, self.onDayChanged, self)\r\n    g_messageCenter:subscribe(MessageType.PERIOD_CHANGED, self.onPeriodChanged, self)\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:validateFarms(hasData)\r\n\r\n    if self.countries == nil then self.countries = {} end\r\n\r\n    local animalTypeIndexes = {}\r\n\r\n    for _, animalType in pairs(self.types) do table.insert(animalTypeIndexes, animalType.typeIndex) end\r\n\r\n    \r\n    -- validate every country exists\r\n\r\n\r\n    for countryIndex, info in pairs(RealisticLivestock.AREA_CODES) do\r\n\r\n        if self.countries[countryIndex] == nil then\r\n\r\n            self.countries[countryIndex] = {\r\n                [\"index\"] = countryIndex,\r\n                [\"farms\"] = {}\r\n            }\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n    -- validate all countries have at least 20 unique farms\r\n\r\n    local mapCountryIndex = RealisticLivestock.getMapCountryIndex()\r\n\r\n\r\n    for _, country in pairs(self.countries) do\r\n\r\n        local farmIds = {}\r\n        local farmsRequireId = {}\r\n\r\n        if country.index == mapCountryIndex then\r\n\r\n            for i, farm in pairs(g_farmManager.farms) do\r\n\r\n                local statistics = farm.stats.statistics\r\n\r\n                if statistics.farmId ~= nil then table.insert(farmIds, statistics.farmId) end\r\n\r\n            end\r\n\r\n        end\r\n\r\n        local isFirstCreation = #country.farms == 0\r\n\r\n        if #country.farms < 20 then\r\n\r\n            for i = #country.farms + 1, 20 do\r\n\r\n                local farm = { [\"quality\"] = math.random(250, 1750) / 1000, [\"ids\"] = {} }\r\n\r\n                farm.semenPrice = (math.random(75, 125) / 100) * farm.quality\r\n\r\n                for i = 0, math.random(0, math.min(3, #animalTypeIndexes)) do\r\n\r\n                    --local randomProduce = math.random()\r\n                    --local baseChance = 1 / (5 - i)\r\n\r\n                    --if farm.cowId == nil and randomProduce <= baseChance then\r\n                    --    farm.cowId = 0\r\n                    --elseif farm.pigId == nil and randomProduce <= baseChance * (farm.cowId == nil and 2 or 1) then\r\n                    --    farm.pigId = 0\r\n                    --elseif farm.sheepId == nil and randomProduce <= baseChance * ((farm.cowId == nil and farm.pigId == nil and 3) or ((farm.cowId == nil or farm.pigId == nil) and 2) or 1) then\r\n                    --    farm.sheepId = 0\r\n                    --elseif farm.chickenId == nil and randomProduce <= baseChance * ((farm.cowId == nil and farm.pigId == nil and farm.sheepId == nil and 4) or (i == 1 and farm.horseId == nil and 3) or 2) then\r\n                    --    farm.chickenId = 0\r\n                    --else\r\n                    --    farm.horseId = 0\r\n                    --end\r\n\r\n                    local randomAnimalTypeIndex = animalTypeIndexes[math.random(1, #animalTypeIndexes)]\r\n                    local attempts = 0\r\n\r\n                    while farm.ids[randomAnimalTypeIndex] ~= nil do\r\n\r\n                        randomAnimalTypeIndex = animalTypeIndexes[math.random(1, #animalTypeIndexes)]\r\n                        attempts = attempts + 1\r\n\r\n                        if attempts > 20 then break end\r\n\r\n                    end\r\n\r\n                    farm.ids[randomAnimalTypeIndex] = 0\r\n\r\n                end\r\n\r\n                table.insert(country.farms, farm)\r\n\r\n            end\r\n\r\n            if isFirstCreation and country.index == mapCountryIndex then\r\n                \r\n                -- validate there is at least 1 farm that produces each animal type\r\n\r\n                for i = 1, #animalTypeIndexes do\r\n\r\n                    local randomFarmIndex = math.random(1, #country.farms)\r\n                    country.farms[randomFarmIndex].ids[i] = country.farms[randomFarmIndex].ids[i] or 0\r\n        \r\n                    --if i == 1 then country.farms[randomFarmIndex].cowId = country.farms[randomFarmIndex].cowId or 0 end\r\n                    --if i == 2 then country.farms[randomFarmIndex].pigId = country.farms[randomFarmIndex].pigId or 0 end\r\n                    --if i == 3 then country.farms[randomFarmIndex].sheepId = country.farms[randomFarmIndex].sheepId or 0 end\r\n                    --if i == 4 then country.farms[randomFarmIndex].chickenId = country.farms[randomFarmIndex].chickenId or 0 end\r\n                    --if i == 5 then country.farms[randomFarmIndex].horseId = country.farms[randomFarmIndex].horseId or 0 end\r\n\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n\r\n\r\n        for i, farm in pairs(country.farms) do\r\n            if farm.id ~= nil then\r\n                table.insert(farmIds, farm.id) \r\n            else\r\n                table.insert(farmsRequireId, i) \r\n            end\r\n        end\r\n\r\n\r\n        for _, farmIndex in pairs(farmsRequireId) do\r\n\r\n            local farmId = math.random(100000, 999999)\r\n\r\n            while table.find(farmIds, farmId) ~= nil do farmId = math.random(100000, 999999) end\r\n\r\n            country.farms[farmIndex].id = farmId\r\n            table.insert(farmIds, farmId)\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n\r\n    -- validate there are at least 25 animals of each type for sale\r\n\r\n    if not hasData then\r\n    \r\n        for animalTypeIndex, animals in pairs(self.animals) do\r\n\r\n            if #animals < self.maxDealerAnimals then\r\n\r\n                for i = #animals + 1, self.maxDealerAnimals do\r\n\r\n                    local animal = self:createNewSaleAnimal(animalTypeIndex)\r\n\r\n                    if animal ~= nil then table.insert(animals, animal) end\r\n\r\n                end\r\n\r\n            end\r\n\r\n            self.animals[animalTypeIndex] = animals\r\n\r\n        end\r\n    \r\n        for animalTypeIndex, animals in pairs(self.aiAnimals) do\r\n\r\n            if #animals < 15 then\r\n\r\n                for i = #animals + 1, 15 do\r\n\r\n                    local animal = self:createNewAIAnimal(animalTypeIndex)\r\n\r\n                    if animal ~= nil then table.insert(animals, animal) end\r\n\r\n                end\r\n\r\n            end\r\n\r\n            self.aiAnimals[animalTypeIndex] = animals\r\n\r\n        end\r\n   \r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:loadColourConfigurations()\r\n\r\n    local savegameIndex = g_careerScreen.savegameList.selectedIndex\r\n    local savegame = g_savegameController:getSavegame(savegameIndex)\r\n\r\n    if savegame == nil or savegame.savegameDirectory == nil then return false end\r\n\r\n    local xmlFile = XMLFile.loadIfExists(\"animalSystem\", savegame.savegameDirectory .. \"/animalSystem.xml\")\r\n\r\n    if xmlFile == nil then return false end\r\n\r\n    xmlFile:iterate(\"animalSystem.animalTypes.type\", function(_, key)\r\n\r\n        local name = xmlFile:getString(key .. \"#name\")\r\n        local earTagLeft = xmlFile:getVector(key .. \"#earTagLeft\", { 0.8, 0.7, 0 })\r\n        local earTagRight = xmlFile:getVector(key .. \"#earTagRight\", { 0.8, 0.7, 0 })\r\n        local earTagLeftText = xmlFile:getVector(key .. \"#earTagLeftText\", { 0, 0, 0 })\r\n        local earTagRightText = xmlFile:getVector(key .. \"#earTagRightText\", { 0, 0, 0 })\r\n\r\n        if self.nameToType[name] ~= nil then\r\n            self.nameToType[name].colours.earTagLeft = earTagLeft\r\n            self.nameToType[name].colours.earTagRight = earTagRight\r\n            self.nameToType[name].colours.earTagLeft_text = earTagLeftText\r\n            self.nameToType[name].colours.earTagRight_text = earTagRightText\r\n        end\r\n\r\n    end)\r\n\r\n    xmlFile:delete()\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:loadFromXMLFile()\r\n\r\n    if g_currentMission.missionInfo == nil or g_currentMission.missionInfo.savegameDirectory == nil then return end\r\n\r\n    local xmlFile = XMLFile.loadIfExists(\"animalSystem\", g_currentMission.missionInfo.savegameDirectory .. \"/animalSystem.xml\")\r\n\r\n    if xmlFile == nil then return false end\r\n\r\n\r\n    local hasData = false\r\n\r\n\r\n    xmlFile:iterate(\"animalSystem.countries.country\", function(_, key)\r\n\r\n        local countryIndex = xmlFile:getInt(key .. \"#index\")\r\n        \r\n        local farms = self.countries[countryIndex].farms\r\n\r\n        xmlFile:iterate(key .. \".farm\", function(_, farmKey)\r\n\r\n            hasData = true\r\n\r\n            local farmId = xmlFile:getInt(farmKey .. \"#id\")\r\n            local cowId = xmlFile:getInt(farmKey .. \"#cowId\", nil)\r\n            local pigId = xmlFile:getInt(farmKey .. \"#pigId\", nil)\r\n            local sheepId = xmlFile:getInt(farmKey .. \"#sheepId\", nil)\r\n            local horseId = xmlFile:getInt(farmKey .. \"#horseId\", nil)\r\n            local chickenId = xmlFile:getInt(farmKey .. \"#chickenId\", nil)\r\n            local quality = xmlFile:getFloat(farmKey .. \"#quality\", math.random(250, 1750) / 1000)\r\n            local semenPrice = xmlFile:getFloat(farmKey .. \"#semenPrice\", (math.random(75, 125) / 100) * quality)\r\n            \r\n            local ids = {}\r\n\r\n            -- compatibility with previous builds\r\n\r\n            if cowId ~= nil then ids[1] = cowId end\r\n            if pigId ~= nil then ids[2] = pigId end\r\n            if sheepId ~= nil then ids[3] = sheepId end\r\n            if horseId ~= nil then ids[4] = horseId end\r\n            if chickenId ~= nil then ids[5] = chickenId end\r\n\r\n            xmlFile:iterate(farmKey .. \".id\", function(_, idKey)\r\n            \r\n                local animalTypeIndex = xmlFile:getInt(idKey .. \"#type\", 1)\r\n                local lastId = xmlFile:getInt(idKey .. \"#id\", 0)\r\n\r\n                ids[animalTypeIndex] = lastId\r\n            \r\n            end)\r\n            \r\n            --table.insert(farms, { [\"id\"] = farmId, [\"quality\"] = quality, [\"cowId\"] = cowId, [\"pigId\"] = pigId, [\"sheepId\"] = sheepId, [\"horseId\"] = horseId, [\"chickenId\"] = chickenId })\r\n            table.insert(farms, { [\"id\"] = farmId, [\"quality\"] = quality, [\"ids\"] = ids, [\"semenPrice\"] = semenPrice })\r\n\r\n        end)\r\n\r\n        self.countries[countryIndex].farms = farms\r\n\r\n    end)\r\n\r\n\r\n    xmlFile:iterate(\"animalSystem.animals.animal\", function(_, key)\r\n\r\n        local animal = Animal.loadFromXMLFile(xmlFile, key)\r\n\r\n        if animal ~= nil then\r\n            local animalTypeIndex = animal.animalTypeIndex\r\n\r\n            animal.sale = {\r\n                [\"day\"] = xmlFile:getInt(key .. \".sale#day\", 1),\r\n                --[\"month\"] = xmlFile:getInt(key .. \".sale#month\"),\r\n                --[\"year\"] = xmlFile:getInt(key .. \".sale#year\")\r\n            }\r\n\r\n            table.insert(self.animals[animalTypeIndex], animal)\r\n        end\r\n\r\n    end)\r\n\r\n\r\n    xmlFile:iterate(\"animalSystem.aiAnimals.animal\", function(_, key)\r\n\r\n        local animal = Animal.loadFromXMLFile(xmlFile, key)\r\n\r\n        if animal ~= nil then\r\n\r\n            animal.favouritedBy = {}\r\n            animal.success = xmlFile:getFloat(key .. \"#success\", 0.65)\r\n            animal.isAIAnimal = true\r\n\r\n            xmlFile:iterate(key .. \".favourites.player\", function(_, favKey)\r\n                local userId = xmlFile:getString(favKey .. \"#userId\", nil)\r\n                local value = xmlFile:getBool(favKey .. \"#value\", false)\r\n                if userId ~= nil then animal.favouritedBy[userId] = value end\r\n            end)\r\n\r\n            local animalTypeIndex = animal.animalTypeIndex\r\n            table.insert(self.aiAnimals[animalTypeIndex], animal)\r\n\r\n        end\r\n\r\n    end)\r\n\r\n\r\n    xmlFile:delete()\r\n\r\n    return hasData\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:saveToXMLFile(path)\r\n\r\n\tif path == nil then return end\r\n\r\n    local xmlFile = XMLFile.create(\"animalSystem\", path, \"animalSystem\")\r\n    if xmlFile == nil then return end\r\n\r\n\r\n    xmlFile:setSortedTable(\"animalSystem.animalTypes.type\", self.types, function (key, type)\r\n\r\n        xmlFile:setString(key .. \"#name\", type.name)\r\n        xmlFile:setVector(key .. \"#earTagLeft\", type.colours.earTagLeft)\r\n        xmlFile:setVector(key .. \"#earTagLeftText\", type.colours.earTagLeft_text)\r\n        xmlFile:setVector(key .. \"#earTagRight\", type.colours.earTagRight)\r\n        xmlFile:setVector(key .. \"#earTagRightText\", type.colours.earTagRight_text)\r\n\r\n    end)\r\n\r\n    \r\n    xmlFile:setSortedTable(\"animalSystem.countries.country\", self.countries, function (key, country)\r\n\r\n        xmlFile:setInt(key .. \"#index\", country.index)\r\n\r\n        for i = 1, #country.farms do\r\n\r\n            local farmKey = string.format(\"%s.farm(%d)\", key, i - 1)\r\n            local farm = country.farms[i]\r\n            \r\n            xmlFile:setInt(farmKey .. \"#id\", farm.id)\r\n            xmlFile:setFloat(farmKey .. \"#quality\", farm.quality)\r\n            xmlFile:setFloat(farmKey .. \"#semenPrice\", farm.semenPrice)\r\n\r\n            local j = 0\r\n\r\n            for animalTypeIndex, id in pairs(farm.ids) do\r\n\r\n                local idKey = farmKey .. \".id( \" .. j .. \")\"\r\n\r\n                xmlFile:setInt(idKey .. \"#type\", animalTypeIndex)\r\n                xmlFile:setInt(idKey .. \"#id\", id)\r\n\r\n                j = j + 1\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end)\r\n\r\n\r\n    local allAnimals = {}\r\n\r\n    for _, animals in pairs(self.animals) do\r\n\r\n        for _, animal in pairs(animals) do\r\n            if animal.sale ~= nil and animal.sale.day ~= nil then table.insert(allAnimals, animal) end\r\n        end\r\n        \r\n    end\r\n\r\n    \r\n    xmlFile:setSortedTable(\"animalSystem.animals.animal\", allAnimals, function (key, animal)\r\n\r\n        animal:saveToXMLFile(xmlFile, key)\r\n        xmlFile:setInt(key .. \".sale#day\", animal.sale.day)\r\n        --xmlFile:setInt(key .. \".sale#month\", animal.sale.month)\r\n        --xmlFile:setInt(key .. \".sale#year\", animal.sale.year)\r\n\r\n    end)\r\n\r\n\r\n    local allAIAnimals = {}\r\n\r\n    for _, animals in pairs(self.aiAnimals) do\r\n\r\n        for _, animal in pairs(animals) do table.insert(allAIAnimals, animal) end\r\n        \r\n    end\r\n\r\n    \r\n    xmlFile:setSortedTable(\"animalSystem.aiAnimals.animal\", allAIAnimals, function (key, animal)\r\n\r\n        animal:saveToXMLFile(xmlFile, key)\r\n\r\n        xmlFile:setFloat(key .. \"#success\", animal.success or 0.65)\r\n        \r\n        local i = 0\r\n\r\n        for userId, value in pairs(animal.favouritedBy) do\r\n            \r\n            if not value then continue end\r\n\r\n            local favKey = string.format(\"%s.favourites.player(%s)\", key, i)\r\n            xmlFile:setString(favKey .. \"#userId\", userId)\r\n            xmlFile:setBool(favKey .. \"#value\", true)\r\n\r\n            i = i + 1\r\n\r\n        end\r\n\r\n    end)\r\n\r\n    xmlFile:save(false, true)\r\n    xmlFile:delete()\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:createNewSaleAnimal(animalTypeIndex)\r\n\r\n    local animalType = self:getTypeByIndex(animalTypeIndex)\r\n\r\n    if animalType == nil then return nil end\r\n\r\n    local subTypeIndex = animalType.subTypes[math.random(1, #animalType.subTypes)]\r\n    local subType = self:getSubTypeByIndex(subTypeIndex)\r\n    \r\n    local farmId, farmQuality, farmCountryIndex, lastAnimalId\r\n    local attemptedCountryIndexes = {}\r\n\r\n    \r\n    while farmId == nil do\r\n\r\n        if #attemptedCountryIndexes == #self.countries then return nil end\r\n\r\n        local countryIndex\r\n\r\n        if #attemptedCountryIndexes == 0 and math.random() >= 0.12 then\r\n            countryIndex = RealisticLivestock.getMapCountryIndex()\r\n        else\r\n            countryIndex = math.random(1, #self.countries)\r\n            while table.find(attemptedCountryIndexes, countryIndex) ~= nil do\r\n                countryIndex = math.random(1, #self.countries)\r\n            end\r\n        end\r\n\r\n        table.insert(attemptedCountryIndexes, countryIndex)\r\n\r\n        local country = self.countries[countryIndex]\r\n        local validFarms = {}\r\n\r\n        for i = 1, #country.farms do\r\n        \r\n            local farm = country.farms[i]\r\n\r\n            --if animalTypeIndex == AnimalType.COW and farm.cowId ~= nil then\r\n            --    table.insert(validFarms, i)\r\n            --    continue\r\n            --end\r\n\r\n            --if animalTypeIndex == AnimalType.PIG and farm.pigId ~= nil then\r\n            --    table.insert(validFarms, i)\r\n            --    continue\r\n            --end\r\n\r\n            --if animalTypeIndex == AnimalType.SHEEP and farm.sheepId ~= nil then\r\n            --    table.insert(validFarms, i)\r\n            --    continue\r\n            --end\r\n\r\n            --if animalTypeIndex == AnimalType.CHICKEN and farm.chickenId ~= nil then\r\n            --    table.insert(validFarms, i)\r\n            --    continue\r\n            --end\r\n\r\n            --if animalTypeIndex == AnimalType.HORSE and farm.horseId ~= nil then\r\n            --    table.insert(validFarms, i)\r\n            --end\r\n\r\n            if farm.ids[animalTypeIndex] ~= nil then table.insert(validFarms, i) end\r\n\r\n        end\r\n\r\n        if #validFarms == 0 then continue end\r\n\r\n        local farmIndex = validFarms[math.random(1, #validFarms)]\r\n        local farm = country.farms[farmIndex]\r\n\r\n        farmId = farm.id\r\n        farmQuality = farm.quality\r\n        farmCountryIndex = countryIndex\r\n        \r\n        --if animalTypeIndex == AnimalType.COW then\r\n        --    country.farms[farmIndex].cowId = farm.cowId + 1\r\n        --    lastAnimalId = country.farms[farmIndex].cowId\r\n        --elseif animalTypeIndex == AnimalType.PIG then\r\n        --    country.farms[farmIndex].pigId = farm.pigId + 1\r\n        --    lastAnimalId = country.farms[farmIndex].pigId\r\n        --elseif animalTypeIndex == AnimalType.SHEEP then\r\n        --    country.farms[farmIndex].sheepId = farm.sheepId + 1\r\n        --    lastAnimalId = country.farms[farmIndex].sheepId\r\n        --elseif animalTypeIndex == AnimalType.CHICKEN then\r\n        --    country.farms[farmIndex].chickenId = farm.chickenId + 1\r\n        --    lastAnimalId = country.farms[farmIndex].chickenId\r\n        --elseif animalTypeIndex == AnimalType.HORSE then\r\n        --    country.farms[farmIndex].horseId = farm.horseId + 1\r\n        --    lastAnimalId = country.farms[farmIndex].horseId\r\n        --end\r\n\r\n        farm.ids[animalTypeIndex] = (farm.ids[animalTypeIndex] or 0) + 1\r\n        lastAnimalId = farm.ids[animalTypeIndex]\r\n\r\n    end\r\n\r\n\r\n    local averageBuyAge = animalType.averageBuyAge or 12\r\n    local maxBuyAge = animalType.maxBuyAge or 60\r\n    local age\r\n\r\n    if math.random() >= 0.5 then\r\n\r\n        age = math.random(averageBuyAge * 0.85, averageBuyAge * 1.15)\r\n\r\n    elseif math.random() >= 0.25 then\r\n\r\n        age = math.random(0, averageBuyAge * 0.85)\r\n\r\n    else\r\n\r\n        age = math.random(averageBuyAge * 1.15, maxBuyAge)\r\n\r\n    end\r\n\r\n    age = math.clamp(age, 0, maxBuyAge)\r\n    local viableReproductionMonths = age - (subType.reproductionMinAgeMonth + subType.reproductionDurationMonth)\r\n    local isParent, isPregnant, monthsSinceLastBirth = false, false, 12\r\n    local animalGender = subType.gender\r\n\r\n\r\n    if viableReproductionMonths >= 0 and math.random(0, 100) <= viableReproductionMonths then\r\n        isParent = true\r\n        monthsSinceLastBirth = math.random(0, viableReproductionMonths)\r\n    end\r\n\r\n    if animalGender == \"female\" and age - subType.reproductionMinAgeMonth >= 0 and math.random() >= 0.95 then isPregnant = true end\r\n\r\n\r\n\r\n    local uniqueId = tostring(lastAnimalId)\r\n    local idLen = string.len(uniqueId)\r\n\r\n    if idLen < 5 then\r\n        if idLen == 1 then\r\n            uniqueId = \"1000\" .. uniqueId\r\n        elseif idLen == 2 then\r\n            uniqueId = \"100\" .. uniqueId\r\n        elseif idLen == 3 then\r\n            uniqueId = \"10\" .. uniqueId\r\n        elseif idLen == 4 then\r\n            uniqueId = \"1\" .. uniqueId\r\n        end\r\n    end\r\n\r\n    local concatenatedId = farmId .. uniqueId\r\n    local checkDigit = (tonumber(concatenatedId)::number % 7) + 1\r\n    uniqueId = checkDigit .. uniqueId\r\n\r\n\r\n    local geneticsModifier = farmQuality * 1000\r\n    local genetics = {\r\n        [\"metabolism\"] = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 0.25, 1.75),\r\n        [\"quality\"] = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 0.25, 1.75),\r\n        [\"fertility\"] = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 0.25, 1.75),\r\n        [\"health\"] = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 0.25, 1.75)\r\n    }\r\n\r\n    if animalTypeIndex == AnimalType.COW or animalTypeIndex == AnimalType.SHEEP or animalTypeIndex == AnimalType.CHICKEN then genetics.productivity = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 0.25, 1.75) end\r\n\r\n  \r\n    local name\r\n    \r\n    if math.random() >= 0.85 then name = g_currentMission.animalNameSystem:getRandomName(animalGender) end\r\n\r\n\r\n    local animal = Animal.new(age, math.clamp((math.random(650, 1000) / 10) * genetics.health, 0, 100), monthsSinceLastBirth, animalGender, subTypeIndex, 0, isParent, isPregnant, animalTypeIndex == AnimalType.COW and animalGender == \"female\" and isParent and monthsSinceLastBirth < 10, nil, nil, nil, nil, nil, name, nil, nil, nil, nil, nil, genetics)\r\n\r\n    animal.farmId = tostring(farmId)\r\n    animal.uniqueId = uniqueId\r\n    animal.birthday.country = farmCountryIndex\r\n\r\n    local variations = self:getVisualByAge(subTypeIndex, age).visualAnimal.variations\r\n    local variationIndex = 1\r\n\r\n    if #variations > 1 then variationIndex = math.random(1, #variations) end\r\n\r\n    animal.variation = variationIndex\r\n\r\n    local environment = g_currentMission.environment\r\n    local month = environment.currentPeriod + 2\r\n\r\n    if month > 12 then month = month - 12 end\r\n\r\n    local day = 1 + math.floor((environment.currentDayInPeriod - 1) * (RealisticLivestock.DAYS_PER_MONTH[month] / environment.daysPerPeriod))\r\n    local year = environment.currentYear\r\n\r\n\r\n    animal.diseases = {}\r\n\r\n    g_diseaseManager:onDayChanged(animal)\r\n    g_diseaseManager:setGeneticDiseasesForSaleAnimal(animal)\r\n\r\n\r\n    if isPregnant then\r\n\r\n        local childNum = animal:generateRandomOffspring()\r\n        local children = {}\r\n\r\n        local minMetabolism, maxMetabolism = genetics.metabolism * 0.9, genetics.metabolism * 1.1\r\n        local minMeat, maxMeat = genetics.quality * 0.9, genetics.quality * 1.1\r\n        local minHealth, maxHealth = genetics.health * 0.9, genetics.health * 1.1\r\n        local minFertility, maxFertility = genetics.fertility * 0.9, genetics.fertility * 1.1\r\n        local minProductivity, maxProductivity\r\n        \r\n        if genetics.productivity ~= nil then minProductivity, maxProductivity = genetics.productivity * 0.9, genetics.productivity * 1.1 end\r\n\r\n        for i = 1, childNum do\r\n\r\n            local gender = math.random() >= 0.5 and \"male\" or \"female\"\r\n            local childSubTypeIndex = subTypeIndex + (gender == \"male\" and 1 or 0)\r\n\r\n\r\n            local child = Animal.new(-1, 100, 0, gender, childSubTypeIndex, 0, false, false, false, nil, nil, animal.farmId .. \" \" .. animal.uniqueId)\r\n                        \r\n            local metabolism = math.random(minMetabolism * 100, maxMetabolism * 100) / 100\r\n            local quality = math.random(minMeat * 100, maxMeat * 100) / 100\r\n            local healthGenetics = math.random(minHealth * 100, maxHealth * 100) / 100\r\n            local fertility = math.random(minFertility * 100, maxFertility * 100) / 100\r\n            local productivity = nil\r\n                        \r\n            if genetics.productivity ~= nil then productivity = math.clamp(math.random(minProductivity * 100, maxProductivity * 100) / 100, 0.25, 1.75) end\r\n\r\n\r\n            child:setGenetics({\r\n                [\"metabolism\"] = math.clamp(metabolism, 0.25, 1.75),\r\n                [\"quality\"] = math.clamp(quality, 0.25, 1.75),\r\n                [\"health\"] = math.clamp(healthGenetics, 0.25, 1.75),\r\n                [\"fertility\"] = math.clamp(fertility, 0.25, 1.75),\r\n                [\"productivity\"] = productivity\r\n            })\r\n        \r\n        \r\n            for _, disease in pairs(animal.diseases) do\r\n\r\n                disease:affectReproduction(child)\r\n\r\n            end\r\n\r\n\r\n            table.insert(children, child)\r\n\r\n        end\r\n\r\n\r\n        local reproductionDuration = subType.reproductionDurationMonth\r\n                    \r\n        if math.random() >= 0.99 then\r\n\r\n            if math.random() >= 0.95 then\r\n                reproductionDuration = reproductionDuration + math.random() >= 0.75 and -2 or 2\r\n            else\r\n                reproductionDuration = reproductionDuration + math.random() >= 0.85 and -1 or 1\r\n            end\r\n\r\n            reproductionDuration = math.max(reproductionDuration, 2)\r\n\r\n        end\r\n\r\n        local expectedYear = year + math.floor(reproductionDuration / 12)\r\n        local expectedMonth = month + (reproductionDuration % 12)\r\n\r\n        while expectedMonth > 12 do\r\n            expectedMonth = expectedMonth - 12\r\n            expectedYear = expectedYear + 1\r\n        end\r\n\r\n        local expectedDay = math.random(1, RealisticLivestock.DAYS_PER_MONTH[expectedMonth])\r\n\r\n        if #children > 0 then\r\n\r\n            animal.pregnancy = {\r\n                [\"duration\"] = reproductionDuration,\r\n                [\"expected\"] = {\r\n                    [\"day\"] = expectedDay,\r\n                    [\"month\"] = expectedMonth,\r\n                    [\"year\"] = expectedYear\r\n                },\r\n                [\"pregnancies\"] = children\r\n            }\r\n\r\n        end\r\n\r\n    end\r\n\r\n    animal.sale = {\r\n        --[\"day\"] = day,\r\n        --[\"month\"] = month,\r\n        --[\"year\"] = year\r\n        [\"day\"] = environment.currentMonotonicDay\r\n    }\r\n\r\n    if animal.reproduction > 0 and (animal.pregnancy == nil or #animal.pregnancy.pregnancies == 0) then\r\n        animal.reproduction = 0\r\n        animal.pregnancy = nil\r\n    end\r\n\r\n    return animal\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:getSaleAnimalsByTypeIndex(animalTypeIndex)\r\n\r\n    return self.animals[animalTypeIndex] or {}\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:getAIAnimalsByTypeIndex(animalTypeIndex)\r\n\r\n    return self.aiAnimals[animalTypeIndex] or {}\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:getFarmQuality(country, farmId)\r\n\r\n    if self.countries[country] ~= nil then\r\n\r\n        local farms = self.countries[country].farms\r\n\r\n        if type(farmId) == \"string\" then farmId = tonumber(farmId) end\r\n\r\n        for _, farm in pairs(farms) do\r\n\r\n            if farm.id == farmId then return farm.quality end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    return 1\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:getFarmSemenPrice(country, farmId)\r\n\r\n    if self.countries[country] ~= nil then\r\n\r\n        local farms = self.countries[country].farms\r\n\r\n        if type(farmId) == \"string\" then farmId = tonumber(farmId) end\r\n\r\n        for _, farm in pairs(farms) do\r\n\r\n            if farm.id == farmId then return farm.semenPrice end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    return 1\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:getNextAnimalIdForFarm(countryIndex, animalTypeIndex, farmId)\r\n\r\n    local country = self.countries[countryIndex]\r\n\r\n    if country == nil then return 1 end\r\n\r\n    local farms = country.farms\r\n\r\n    if type(farmId) == \"string\" then farmId = tonumber(farmId) end\r\n\r\n    for _, farm in pairs(farms) do\r\n\r\n        if farm.id == farmId then\r\n\r\n            --local index = \"cowId\"\r\n\r\n            --if animalTypeIndex == AnimalType.PIG then\r\n            --    index = \"pigId\"\r\n            --elseif animalTypeIndex == AnimalType.SHEEP then\r\n            --    index = \"sheepId\"\r\n            --elseif animalTypeIndex == AnimalType.CHICKEN then\r\n            --    index = \"chickenId\"\r\n            --elseif animalTypeIndex == AnimalType.HORSE then\r\n            --    index = \"horseId\"\r\n            --end\r\n\r\n            --if farm[index] ~= nil then\r\n            --    farm[index] = farm[index] + 1\r\n            --    return farm[index]\r\n            --end\r\n\r\n            if farm.ids[animalTypeIndex] ~= nil then\r\n\r\n                farm.ids[animalTypeIndex] = farm.ids[animalTypeIndex] + 1\r\n                return farm.ids[animalTypeIndex]\r\n\r\n            end\r\n\r\n            return 1\r\n\r\n        end\r\n\r\n    end\r\n\r\n    return 1\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:removeSaleAnimal(animalTypeIndex, countryIndex, farmId, uniqueId)\r\n\r\n    for i, animal in pairs(self.animals[animalTypeIndex]) do\r\n\r\n        if animal.birthday.country == countryIndex and animal.farmId == farmId and animal.uniqueId == uniqueId then\r\n            table.remove(self.animals[animalTypeIndex], i)\r\n            return\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:removeAIAnimal(animalTypeIndex, countryIndex, farmId, uniqueId)\r\n\r\n    for i, animal in pairs(self.aiAnimals[animalTypeIndex]) do\r\n\r\n        if animal.birthday.country == countryIndex and animal.farmId == farmId and animal.uniqueId == uniqueId then\r\n            table.remove(self.aiAnimals[animalTypeIndex], i)\r\n            return\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:onHourChanged()\r\n\r\n    local day = g_currentMission.environment.currentMonotonicDay\r\n    local hasChanges = false\r\n\r\n    for animalTypeIndex, animals in pairs(self.animals) do\r\n\r\n        local indexesToRemove = {}\r\n\r\n        for i, animal in pairs(animals) do\r\n\r\n            if animal.sale ~= nil then\r\n\r\n                local saleDay = animal.sale.day\r\n\r\n                if saleDay == day then continue end\r\n\r\n                local geneticQuality = 0\r\n                local totalGenetics = 0\r\n\r\n                for _, value in pairs(animal.genetics) do\r\n                    if value ~= nil then\r\n                        totalGenetics = totalGenetics + 1\r\n                        geneticQuality = geneticQuality + value\r\n                    end\r\n                end\r\n\r\n                local averageGenetics = geneticQuality / totalGenetics\r\n\r\n                if math.random() >= (saleDay / day) / (averageGenetics * 1.45) then\r\n                    table.insert(indexesToRemove, i)\r\n                    hasChanges = true\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n\r\n        for i = #indexesToRemove, 1, -1 do\r\n            table.remove(animals, indexesToRemove[i])\r\n        end\r\n\r\n        local threshold = math.random(10, self.maxDealerAnimals)\r\n\r\n        if #animals < threshold then\r\n\r\n            for i = #animals + 1, threshold do\r\n\r\n                local animal = self:createNewSaleAnimal(animalTypeIndex)\r\n\r\n                if animal ~= nil then\r\n                    table.insert(animals, animal)\r\n                    hasChanges = true\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n    \r\n    end\r\n\r\n    for animalTypeIndex, animals in pairs(self.aiAnimals) do\r\n\r\n        if #animals < 15 then\r\n\r\n            for i = #animals + 1, 15 do\r\n\r\n                local animal = self:createNewAIAnimal(animalTypeIndex)\r\n\r\n                if animal ~= nil then\r\n                    table.insert(animals, animal)\r\n                    hasChanges = true\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n    \r\n    end\r\n\r\n    if hasChanges then g_server:broadcastEvent(AnimalSystemStateEvent.new(self.countries, self.animals, self.aiAnimals)) end\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:onDayChanged()\r\n\r\n    local environment = g_currentMission.environment\r\n    local month = environment.currentPeriod + 2\r\n    local currentDayInPeriod = environment.currentDayInPeriod\r\n\r\n    if month > 12 then month = month - 12 end\r\n\r\n    local daysPerPeriod = environment.daysPerPeriod\r\n    local day = 1 + math.floor((currentDayInPeriod - 1) * (RealisticLivestock.DAYS_PER_MONTH[month] / daysPerPeriod))\r\n    local year = environment.currentYear\r\n\r\n    for _, animals in pairs(self.animals) do\r\n\r\n        for _, animal in pairs(animals) do\r\n\r\n            animal.reserved = false\r\n\r\n            animal:onDayChanged(nil, self.isServer, day, month, year, currentDayInPeriod, daysPerPeriod, true)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    for _, animals in pairs(self.aiAnimals) do\r\n\r\n        for _, animal in pairs(animals) do animal:onDayChanged(nil, self.isServer, day, month, year, currentDayInPeriod, daysPerPeriod, true) end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:onPeriodChanged()\r\n\r\n    for _, animals in pairs(self.animals) do\r\n\r\n        for _, animal in pairs(animals) do\r\n\r\n            animal:onPeriodChanged()\r\n\r\n        end\r\n\r\n    end\r\n\r\n    for _, animals in pairs(self.aiAnimals) do\r\n\r\n        for _, animal in pairs(animals) do\r\n\r\n            animal:onPeriodChanged()\r\n\r\n        end\r\n\r\n    end\r\n\r\n    if self.isServer then\r\n\r\n        local monitorCosts = {}\r\n\r\n        for _, placeable in pairs(g_currentMission.husbandrySystem.placeables) do\r\n\r\n            local animals = placeable:getClusters()\r\n            local ownerFarmId = placeable:getOwnerFarmId()\r\n\r\n            for _, animal in pairs(animals) do\r\n\r\n                if not animal.monitor.active and not animal.monitor.removed then continue end\r\n\r\n                if animal.monitor.removed and not animal.monitor.active then\r\n\r\n                    local visualData = self:getVisualByAge(animal.subTypeIndex, animal.age)\r\n\r\n                    if visualData.monitor ~= nil and animal.idFull ~= nil and animal.idFull ~= \"1-1\" then\r\n\r\n                        local sep = string.find(animal.idFull, \"-\")\r\n                        local husbandry = tonumber(string.sub(animal.idFull, 1, sep - 1))\r\n                        local animalId = tonumber(string.sub(animal.idFull, sep + 1))\r\n\r\n                        if husbandry ~= 0 and animalId ~= 0 then\r\n\r\n                            local rootNode = getAnimalRootNode(husbandry, animalId)\r\n\r\n                            if rootNode ~= 0 then\r\n\r\n                                local monitorNode = I3DUtil.indexToObject(rootNode, visualData.monitor)\r\n\r\n                                if monitorNode ~= nil and monitorNode ~= 0 then setVisibility(monitorNode, false) end\r\n\r\n                            end\r\n\r\n                        end\r\n\r\n                    end\r\n                    \r\n                    animal.monitor.removed = false\r\n\r\n                end\r\n\r\n                if monitorCosts[ownerFarmId] == nil then monitorCosts[ownerFarmId] = 0 end\r\n\r\n                monitorCosts[ownerFarmId] = monitorCosts[ownerFarmId] + animal.monitor.fee\r\n\r\n            end\r\n\r\n        end\r\n\r\n        for ownerFarmId, cost in pairs(monitorCosts) do\r\n\r\n            local ownerFarm = g_farmManager:getFarmById(ownerFarmId)\r\n\r\n            g_currentMission:addMoneyChange(0 - cost, ownerFarmId, MoneyType.MONITOR_SUBSCRIPTIONS, true)\r\n            ownerFarm:changeBalance(0 - cost, MoneyType.MONITOR_SUBSCRIPTIONS)\r\n\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:addExistingSaleAnimal(animal)\r\n\r\n    local animalTypeIndex = animal.animalTypeIndex or 0\r\n\r\n    if self.animals[animalTypeIndex] ~= nil then table.insert(self.animals[animalTypeIndex], animal) end\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:removeAllSaleAnimals(animalTypeIndex)\r\n\r\n    if animalTypeIndex == nil then\r\n\r\n        for index, animals in pairs(self.animals) do self.animals[index] = {} end\r\n\r\n    elseif self.animals[animalTypeIndex] ~= nil then\r\n\r\n        self.animals[animalTypeIndex] = {}\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem.onSettingChanged(name, state)\r\n\r\n    g_currentMission.animalSystem[name] = state\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem.onClickResetDealer()\r\n\r\n    local animalSystem = g_currentMission.animalSystem\r\n    \r\n    if not animalSystem.isServer then return end\r\n\r\n    animalSystem:removeAllSaleAnimals()\r\n\r\n    for animalTypeIndex, animals in pairs(animalSystem.animals) do\r\n\r\n        for i = 1, animalSystem.maxDealerAnimals do\r\n\r\n            local animal = animalSystem:createNewSaleAnimal(animalTypeIndex)\r\n\r\n            if animal ~= nil then table.insert(animals, animal) end\r\n\r\n        end\r\n\r\n        animalSystem.animals[animalTypeIndex] = animals\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:getBreedsByAnimalTypeIndex(animalTypeIndex)\r\n\r\n    return self.types[animalTypeIndex].breeds\r\n\r\nend\r\n\r\n\r\nfunction AnimalSystem:createNewAIAnimal(animalTypeIndex)\r\n\r\n     local animalType = self:getTypeByIndex(animalTypeIndex)\r\n\r\n    if animalType == nil then return nil end\r\n\r\n    local validSubTypes = {}\r\n\r\n    for _, subTypeIndex in pairs(animalType.subTypes) do\r\n\r\n        local subType = self:getSubTypeByIndex(subTypeIndex)\r\n\r\n        if subType.gender == \"male\" then table.insert(validSubTypes, subType) end\r\n\r\n    end\r\n\r\n    if #validSubTypes == 0 then return nil end\r\n\r\n    local subType = validSubTypes[math.random(1, #validSubTypes)]\r\n\r\n    if subType == nil then return end\r\n\r\n    local subTypeIndex = subType.subTypeIndex\r\n    \r\n    local farmId, farmQuality, farmCountryIndex, lastAnimalId\r\n    local attemptedCountryIndexes = {}\r\n    \r\n    while farmId == nil do\r\n\r\n        if #attemptedCountryIndexes == #self.countries then return nil end\r\n\r\n        local countryIndex\r\n\r\n        if #attemptedCountryIndexes == 0 and math.random() >= 0.12 then\r\n            countryIndex = RealisticLivestock.getMapCountryIndex()\r\n        else\r\n            countryIndex = math.random(1, #self.countries)\r\n            while table.find(attemptedCountryIndexes, countryIndex) ~= nil do\r\n                countryIndex = math.random(1, #self.countries)\r\n            end\r\n        end\r\n\r\n        table.insert(attemptedCountryIndexes, countryIndex)\r\n\r\n        local country = self.countries[countryIndex]\r\n        local validFarms = {}\r\n\r\n        for i = 1, #country.farms do\r\n        \r\n            local farm = country.farms[i]\r\n\r\n            if farm.ids[animalTypeIndex] ~= nil and farm.quality >= 1.35 then table.insert(validFarms, i) end\r\n\r\n        end\r\n\r\n        if #validFarms == 0 then continue end\r\n\r\n        local farmIndex = validFarms[math.random(1, #validFarms)]\r\n        local farm = country.farms[farmIndex]\r\n\r\n        farmId = farm.id\r\n        farmQuality = farm.quality\r\n        farmCountryIndex = countryIndex\r\n\r\n        farm.ids[animalTypeIndex] = (farm.ids[animalTypeIndex] or 0) + 1\r\n        lastAnimalId = farm.ids[animalTypeIndex]\r\n\r\n    end\r\n\r\n    local age = math.random(subType.reproductionMinAgeMonth, subType.reproductionMinAgeMonth * 3)\r\n\r\n    local uniqueId = tostring(lastAnimalId)\r\n    local idLen = string.len(uniqueId)\r\n\r\n    if idLen < 5 then\r\n        if idLen == 1 then\r\n            uniqueId = \"1000\" .. uniqueId\r\n        elseif idLen == 2 then\r\n            uniqueId = \"100\" .. uniqueId\r\n        elseif idLen == 3 then\r\n            uniqueId = \"10\" .. uniqueId\r\n        elseif idLen == 4 then\r\n            uniqueId = \"1\" .. uniqueId\r\n        end\r\n    end\r\n\r\n    local concatenatedId = farmId .. uniqueId\r\n    local checkDigit = (tonumber(concatenatedId)::number % 7) + 1\r\n    uniqueId = checkDigit .. uniqueId\r\n\r\n\r\n    local geneticsModifier = farmQuality * 1000\r\n    local genetics = {\r\n        [\"metabolism\"] = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 1.15, 1.75),\r\n        [\"quality\"] = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 1.15, 1.75),\r\n        [\"fertility\"] = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 1.15, 1.75),\r\n        [\"health\"] = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 1.15, 1.75)\r\n    }\r\n\r\n    if animalTypeIndex == AnimalType.COW or animalTypeIndex == AnimalType.SHEEP or animalTypeIndex == AnimalType.CHICKEN then genetics.productivity = math.clamp(math.random(geneticsModifier - 300, geneticsModifier + 300) / 1000, 1.15, 1.75) end\r\n\r\n  \r\n    local name = g_currentMission.animalNameSystem:getRandomName(\"male\")\r\n\r\n\r\n    local animal = Animal.new(age, math.clamp((math.random(650, 1000) / 10) * genetics.health, 75, 100), 0, \"male\", subTypeIndex, 0, false, false, false, nil, nil, nil, nil, nil, name, nil, nil, nil, nil, nil, genetics)\r\n\r\n    animal.farmId = tostring(farmId)\r\n    animal.uniqueId = uniqueId\r\n    animal.birthday.country = farmCountryIndex\r\n\r\n    local variations = self:getVisualByAge(subTypeIndex, age).visualAnimal.variations\r\n    local variationIndex = 1\r\n\r\n    if #variations > 1 then variationIndex = math.random(1, #variations) end\r\n\r\n    animal.variation = variationIndex\r\n\r\n    animal.favouritedBy = {}\r\n    animal.success = math.clamp((math.random(35, 50) * genetics.fertility) / 100, 0.5, 1)\r\n    animal.isAIAnimal = true\r\n\r\n    return animal\r\n\r\nend"
  },
  {
    "path": "src/animals/husbandry/RealisticLivestock_HusbandrySystem.lua",
    "content": "RealisticLivestock_HusbandrySystem = {}\r\n\r\nfunction RealisticLivestock_HusbandrySystem:getClusterHusbandryById(superFunc, id)\r\n    for _, clusterHusbandry in ipairs(self.clusterHusbandries) do\r\n        if clusterHusbandry.husbandryIds ~= nil then\r\n            for _, husbandryId in ipairs(clusterHusbandry.husbandryIds) do\r\n                if husbandryId == id then return clusterHusbandry end\r\n            end\r\n        end\r\n    end\r\n\r\n    return nil\r\nend\r\n\r\nHusbandrySystem.getClusterHusbandryById = Utils.overwrittenFunction(HusbandrySystem.getClusterHusbandryById, RealisticLivestock_HusbandrySystem.getClusterHusbandryById)"
  },
  {
    "path": "src/animals/husbandry/cluster/RealisticLivestock_AnimalCluster.lua",
    "content": "RealisticLivestock_AnimalCluster = {}\r\n\r\n\r\nfunction RealisticLivestock_AnimalCluster:saveToXMLFile(xmlFile, key, _)\r\n    if self.monthsSinceLastBirth == nil then self.monthsSinceLastBirth = 0 end\r\n    if self.lactatingAnimals == nil then self.lactatingAnimals = 0 end\r\n    if self.isParent == nil then self.isParent = false end\r\n    if self.gender == nil then self.gender = \"female\" end\r\n    xmlFile:setInt(key .. \"#monthsSinceLastBirth\", self.monthsSinceLastBirth)\r\n    xmlFile:setInt(key .. \"#lactatingAnimals\", self.lactatingAnimals)\r\n    xmlFile:setBool(key .. \"#isParent\", self.isParent)\r\n    xmlFile:setString(key .. \"#gender\", self.gender)\r\nend\r\n\r\nAnimalCluster.saveToXMLFile = Utils.appendedFunction(AnimalCluster.saveToXMLFile, RealisticLivestock_AnimalCluster.saveToXMLFile)\r\n\r\nfunction RealisticLivestock_AnimalCluster:loadFromXMLFile(superFunc, xmlFile, key)\r\n\r\n    local r = superFunc(self, xmlFile, key)\r\n\r\n    self.isParent = xmlFile:getBool(key .. \"#isParent\")\r\n    self.monthsSinceLastBirth = xmlFile:getInt(key .. \"#monthsSinceLastBirth\")\r\n    self.lactatingAnimals = xmlFile:getInt(key .. \"#lactatingAnimals\")\r\n    self.gender = xmlFile:getString(key .. \"#gender\")\r\n\r\n    -- why is the age of animals clamped between 0 and 60 months?\r\n\r\n    self.age = xmlFile:getInt(key .. \"#age\")\r\n\r\n    if self.monthsSinceLastBirth == nil then\r\n        self.monthsSinceLastBirth = 0\r\n    end\r\n\r\n    if self.lactatingAnimals == nil then\r\n        self.lactatingAnimals = 0\r\n    end\r\n\r\n    if self.isParent == nil then\r\n        self.isParent = false\r\n    end\r\n\r\n    if self.gender == nil and self.subType ~= nil and self.subType == \"CHICKEN_ROOSTER\" then\r\n        self.gender = \"male\"\r\n    elseif self.gender == nil then\r\n        self.gender = \"female\"\r\n    end\r\n\r\n    return r\r\nend\r\n\r\nAnimalCluster.loadFromXMLFile = Utils.overwrittenFunction(AnimalCluster.loadFromXMLFile, RealisticLivestock_AnimalCluster.loadFromXMLFile)\r\n\r\nfunction RealisticLivestock_AnimalCluster:showInfo(superFunc, box)\r\n\r\n    local index = self:getSubTypeIndex()\r\n    local subType = g_currentMission.animalSystem:getSubTypeByIndex(index)\r\n    local name = subType.name\r\n\r\n    local fillTypeTitle = g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex)\r\n\r\n    box:addLine(g_i18n:getText(\"infohud_type\"), fillTypeTitle)\r\n    box:addLine(g_i18n:getText(\"infohud_age\"), g_i18n:formatNumMonth(self.age))\r\n\r\n    if self.numAnimals > 1 then\r\n        box:addLine(g_i18n:getText(\"infohud_numAnimals\"), tostring(self.numAnimals))\r\n    end\r\n\r\n    box:addLine(g_i18n:getText(\"infohud_health\"), string.format(\"%d %%\", self.health))\r\n\r\n    if self.clusterSystem.owner.spec_husbandryMilk ~= nil and self.gender ~= nil and self.gender == \"female\" and self.age >= 12 then\r\n        local lactatingAnimals = self.lactatingAnimals\r\n        if lactatingAnimals ~= nil then box:addLine(\"Lactating animals\", string.format(\"%d\", lactatingAnimals)) end\r\n    end\r\n\r\n    if self.gender ~= nil and self.gender == \"female\" and subType.supportsReproduction then\r\n\r\n        box:addLine(g_i18n:getText(\"infohud_reproduction\"), string.format(\"%d %%\", self.reproduction))\r\n\r\n        local healthFactor = self:getHealthFactor()\r\n        local text = \"Yes\"\r\n\r\n        if self.age < subType.reproductionMinAgeMonth then\r\n            text = \"No (too young)\"\r\n        elseif not RealisticLivestock.hasMaleAnimalInPen(self.clusterSystem.owner.spec_husbandryAnimals, name) and self.reproduction < 100 / subType.reproductionDurationMonth then\r\n            text = \"No (no suitable male animal)\"\r\n        elseif healthFactor < subType.reproductionMinHealth then\r\n            text = \"No (too unhealthy)\"\r\n        end\r\n\r\n        box:addLine(\"Can reproduce\", text)\r\n\r\n    end\r\n\r\nend\r\n\r\nAnimalCluster.showInfo = Utils.overwrittenFunction(AnimalCluster.showInfo, RealisticLivestock_AnimalCluster.showInfo)\r\n\r\nfunction RealisticLivestock_AnimalCluster:addInfos(infos)\r\n\r\n    if self.gender ~= nil and self.gender == \"female\" and self.lactatingAnimals ~= nil and self.age > 12 and self.clusterSystem.owner.spec_husbandryMilk ~= nil then\r\n\r\n        if self.infoLactation == nil then\r\n            self.infoLactation = {\r\n                text = \"Lactating animals\",\r\n                title = \"Lactating animals\"\r\n            }\r\n        end\r\n\r\n        self.infoLactation.value = self.lactatingAnimals\r\n        self.infoLactation.ratio = self.lactatingAnimals / self.numAnimals\r\n        self.infoLactation.valueText = string.format(\"%d\", self.lactatingAnimals)\r\n\r\n        table.insert(infos, self.infoLactation)\r\n\r\n    end\r\n\r\nend\r\n\r\nAnimalCluster.addInfos = Utils.appendedFunction(AnimalCluster.addInfos, RealisticLivestock_AnimalCluster.addInfos)\r\n\r\nfunction RealisticLivestock_AnimalCluster:changeAge(superFunc, delta)\r\n    -- whats even the point of having an aging system if animals dont age past 5 years old? animals die in real life, i get that you want your \"E - Everyone\" rating, but its not like 3 year olds are playing this £50 game. realistically your main audience is adult men, even moreso at this expensive price.\r\n    self.age = self.age + delta\r\nend\r\n\r\nAnimalCluster.changeAge = Utils.overwrittenFunction(AnimalCluster.changeAge, RealisticLivestock_AnimalCluster.changeAge)"
  },
  {
    "path": "src/animals/husbandry/cluster/RealisticLivestock_AnimalClusterHusbandry.lua",
    "content": "RealisticLivestock_AnimalClusterHusbandry = {}\r\nRealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES = 50\r\n\r\nlocal modDirectory = g_currentModDirectory\r\n\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterHusbandry:create(superFunc, xmlFilename, navigationNode, raycastDistance, collisionMask)\r\n\r\n    if self.husbandryId ~= nil then\r\n        self:deleteHusbandry()\r\n    end\r\n\r\n    self.navigationNode = navigationNode\r\n    self.collisionMask = collisionMask\r\n    self.xmlFilename = xmlFilename\r\n    self.raycastDistance = raycastDistance\r\n    self.visualAnimalCount = 0\r\n\r\n    local animalPositioning = CollisionMask.ANIMAL_POSITIONING\r\n\r\n    self.husbandryIds = {}\r\n    self.husbandryIdsToVisualAnimalCount = {}\r\n\r\n    for i=1, 8 do\r\n        local husbandry = createAnimalHusbandry(self.animalTypeName, navigationNode, xmlFilename, raycastDistance, animalPositioning, collisionMask, AudioGroup.ENVIRONMENT)\r\n\r\n        if husbandry == 0 then\r\n            Logging.error(\"Failed to create animal husbandry for %q with navigation mesh %q and config %q\", self.animalTypeName, I3DUtil.getNodePath(navigationNode), xmlFilename)\r\n            break\r\n        end\r\n\r\n        table.insert(self.husbandryIds, husbandry)\r\n        self.husbandryIdsToVisualAnimalCount[husbandry] = 0\r\n    end\r\n\r\n    self.husbandryId = self.husbandryIds[1]\r\n    self.visualUpdatePending = true\r\n    self:onIndoorStateChanged()\r\n\r\n    return self.husbandryId\r\n\r\nend\r\n\r\nAnimalClusterHusbandry.create = Utils.overwrittenFunction(AnimalClusterHusbandry.create, RealisticLivestock_AnimalClusterHusbandry.create)\r\n\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterHusbandry:deleteHusbandry(superFunc)\r\n    if self.husbandryIds ~= nil then\r\n\r\n        if self.animalIdToCluster == nil then self.animalIdToCluster = {} end\r\n\r\n        for husbandryId, animalIds in pairs(self.animalIdToCluster) do\r\n\r\n            for animalId, animal in pairs(animalIds) do\r\n\r\n                removeHusbandryAnimal(self.husbandryIds[husbandryId], animalId)\r\n                animal:deleteVisual()\r\n\r\n            end\r\n\r\n        end\r\n\r\n        g_soundManager:removeIndoorStateChangedListener(self)\r\n\r\n        for _, id in pairs(self.husbandryIds) do\r\n            delete(id)\r\n        end\r\n\r\n        self.husbandryIds = nil\r\n        self.husbandryId = nil\r\n        self.husbandryIdsToVisualAnimalCount = nil\r\n        self.animalIdToCluster = nil\r\n    end\r\nend\r\n\r\nAnimalClusterHusbandry.deleteHusbandry = Utils.overwrittenFunction(AnimalClusterHusbandry.deleteHusbandry, RealisticLivestock_AnimalClusterHusbandry.deleteHusbandry)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterHusbandry:updateVisuals(superFunc, removeAll)\r\n\r\n    if self.husbandryId == nil or not isHusbandryReady(self.husbandryId) then\r\n        self.visualUpdatePending = true\r\n        return\r\n    end\r\n\r\n\r\n    local animals = self.nextUpdateClusters or {}\r\n    self.totalNumAnimalsPerVisualAnimalIndex = {}\r\n    local newAnimalMapping = {}\r\n    local newAnimalIdToVisualAnimalIndex = {}\r\n\r\n\r\n    if self.animalIdToCluster == nil then self.animalIdToCluster = {} end\r\n\r\n    for husbandryId, animalIds in pairs(self.animalIdToCluster) do\r\n        if type(animalIds) ~= \"table\" then continue end\r\n\r\n        local idsToRemove = {}\r\n\r\n        for animalId, animal in pairs(animalIds) do\r\n\r\n            if removeAll or animal == nil or animal.isSold or animal.isDead or animal.id == nil or animal.uniqueId == \"1-1\" or animal.uniqueId == \"0-0\" or animal.numAnimals <= 0 then\r\n            \r\n                self.husbandryIdsToVisualAnimalCount[self.husbandryIds[husbandryId]] = math.max(self.husbandryIdsToVisualAnimalCount[self.husbandryIds[husbandryId]] - 1, 0)\r\n                self.visualAnimalCount = math.max(self.visualAnimalCount - 1, 0)\r\n                removeHusbandryAnimal(self.husbandryIds[husbandryId], animalId)\r\n                \r\n                if animal ~= nil then\r\n                    animal.id = nil\r\n                    animal.idFull = nil\r\n                    animal:deleteVisual()\r\n                end\r\n\r\n                table.insert(idsToRemove, animalId)\r\n\r\n            end\r\n\r\n        end\r\n\r\n        for _, animalId in pairs(idsToRemove) do\r\n            animalIds[animalId] = nil\r\n        end\r\n\r\n    end\r\n\r\n    \r\n    if removeAll then self.animalIdToCluster = {} end\r\n    if RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES <= 0 or self.visualAnimalCount == RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES then return end\r\n\r\n    \r\n    local areaCode = RealisticLivestock.getMapCountryCode()\r\n\r\n\r\n    local i = 1\r\n    local profile = Utils.getPerformanceClassId()\r\n    local maxAnimalsPerHusbandry = (profile == GS_PROFILE_VERY_LOW and 8) or (profile == GS_PROFILE_LOW and 10) or (profile == GS_PROFILE_MEDIUM and 16) or (profile == GS_PROFILE_HIGH and 20) or (profile == GS_PROFILE_VERY_HIGH and 25) or (profile == GS_PROFILE_ULTRA and 25) or 8\r\n \r\n    local animalSystem = g_currentMission.animalSystem\r\n    local animalType = animalSystem.types[self.placeable:getAnimalTypeIndex()]\r\n\r\n    local colours = animalType.colours or animalSystem.baseColours\r\n\r\n    if colours.earTagLeft == nil or colours.earTagLeft_text == nil or colours.earTagRight == nil or colours.earTagRight_text == nil then colours = animalSystem.baseColours end\r\n    \r\n    local earTagLeftR, earTagLeftG, earTagLeftB = colours.earTagLeft[1], colours.earTagLeft[2], colours.earTagLeft[3]\r\n    local earTagLeftTextR, earTagLeftTextG, earTagLeftTextB = colours.earTagLeft_text[1], colours.earTagLeft_text[2], colours.earTagLeft_text[3]\r\n    local earTagRightR, earTagRightG, earTagRightB = colours.earTagRight[1], colours.earTagRight[2], colours.earTagRight[3]\r\n    local earTagRightTextR, earTagRightTextG, earTagRightTextB = colours.earTagRight_text[1], colours.earTagRight_text[2], colours.earTagRight_text[3]\r\n    \r\n    \r\n    for _, animal in pairs(animals) do\r\n\r\n        if self.visualAnimalCount >= RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES or i > #self.husbandryIds or animal.isDead or animal.numAnimals <= 0 or animal.uniqueId == \"1-1\" or animal.uniqueId == \"0-0\" or (animal.id ~= nil and animal.idFull ~= nil and animal.id ~= \"0-0\" and animal.visualAnimalIndex == nil) then continue end\r\n\r\n        local husbandryAnimalCount = self.husbandryIdsToVisualAnimalCount[self.husbandryIds[i]] \r\n\r\n        local useTempId = false\r\n        local tempHusbandryId\r\n        local animalId = 0\r\n\r\n        if animal.id ~= nil and animal.idFull ~= nil and animal.id ~= \"0-0\" and animal.visualAnimalIndex ~= nil then\r\n\r\n            local age = animal:getAge()\r\n            local newVisualAnimalIndex = self.animalSystem:getVisualAnimalIndexByAge(animal:getSubTypeIndex(), age == -1 and 0 or age)\r\n\r\n            if newVisualAnimalIndex ~= animal.visualAnimalIndex then\r\n                tempHusbandryId = tonumber(string.sub(animal.id, 1, 1))\r\n                local tempAnimalId = tonumber(string.sub(animal.id, 3))\r\n\r\n                removeHusbandryAnimal(self.husbandryIds[tempHusbandryId], tempAnimalId)\r\n                animal:deleteVisual()\r\n                animalId = addHusbandryAnimal(self.husbandryIds[tempHusbandryId], newVisualAnimalIndex - 1)\r\n\r\n                self.visualAnimalCount = math.max(self.visualAnimalCount - 1, 0)\r\n                husbandryAnimalCount = husbandryAnimalCount - 1\r\n                self.animalIdToCluster[tempHusbandryId][tempAnimalId] = nil\r\n\r\n                if animalId == nil then\r\n                    \r\n                    self.husbandryIdsToVisualAnimalCount[self.husbandryIds[i]] = self.husbandryIdsToVisualAnimalCount[self.husbandryIds[i]] - 1\r\n\r\n                    continue\r\n\r\n                end\r\n                \r\n                useTempId = true\r\n            else\r\n                continue\r\n            end\r\n\r\n        end\r\n\r\n\r\n        local subTypeIndex = animal:getSubTypeIndex()\r\n        local age = animal:getAge()\r\n\r\n        age = age == -1 and 0 or age\r\n\r\n        local visualAnimalIndex = self.animalSystem:getVisualAnimalIndexByAge(subTypeIndex, age)\r\n\r\n\r\n        if animalId == 0 then\r\n\r\n            while not useTempId and husbandryAnimalCount >= maxAnimalsPerHusbandry and i <= #self.husbandryIds and self.visualAnimalCount < RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES do\r\n                i = i + 1\r\n                if i > #self.husbandryIds then break end\r\n                husbandryAnimalCount = self.husbandryIdsToVisualAnimalCount[self.husbandryIds[i]]\r\n            end\r\n        \r\n            if i > #self.husbandryIds or (husbandryAnimalCount >= maxAnimalsPerHusbandry and not useTempId) then break end\r\n\r\n            animalId = addHusbandryAnimal(self.husbandryIds[useTempId and tempHusbandryId or i], visualAnimalIndex - 1)\r\n\r\n\r\n            while animalId == 0 and i <= #self.husbandryIds do\r\n                i = useTempId and i or (i + 1)\r\n                useTempId = false\r\n                if i > #self.husbandryIds or self.husbandryIdsToVisualAnimalCount[self.husbandryIds[i]] >= maxAnimalsPerHusbandry then break end\r\n                animalId = addHusbandryAnimal(self.husbandryIds[i], visualAnimalIndex - 1)\r\n            end\r\n\r\n        end\r\n\r\n\r\n        if animalId > 0 then\r\n\r\n            self.visualAnimalCount = self.visualAnimalCount + 1\r\n            husbandryAnimalCount = husbandryAnimalCount + 1\r\n\r\n            local visualData = self.animalSystem:getVisualByAge(subTypeIndex, age)\r\n            local variations = visualData.visualAnimal.variations\r\n\r\n            if #variations >= 1 then\r\n                local variationIndex = animal.variation\r\n                if variationIndex == nil or variationIndex > #variations then\r\n                    variationIndex = math.random(1, #variations)\r\n                    animal.variation = variationIndex\r\n                end\r\n\r\n                local variation = variations[variationIndex]\r\n                setAnimalTextureTile(self.husbandryIds[useTempId and tempHusbandryId or i], animalId, variation.tileUIndex, variation.tileVIndex)\r\n            end\r\n\r\n            if not self.animalIdToCluster[useTempId and tempHusbandryId or i] then\r\n                self.animalIdToCluster[useTempId and tempHusbandryId or i] = {}\r\n            end\r\n\r\n            animal.id = (useTempId and tempHusbandryId or i) .. \"-\" .. animalId\r\n            animal.idFull = self.husbandryIds[useTempId and tempHusbandryId or i] .. \"-\" .. animalId\r\n            animal.visualAnimalIndex = visualAnimalIndex\r\n\r\n            self.animalIdToCluster[useTempId and tempHusbandryId or i][animalId] = animal\r\n\r\n            animal:createVisual(self.husbandryIds[useTempId and tempHusbandryId or i], animalId)\r\n            animal:setVisualEarTagColours(colours.earTagLeft, colours.earTagLeft_text, colours.earTagRight, colours.earTagRight_text)\r\n\r\n        else\r\n            animal.id = nil\r\n            animal.idFull = nil\r\n            animal.visualAnimalIndex = nil\r\n        end\r\n\r\n        self.husbandryIdsToVisualAnimalCount[self.husbandryIds[i]] = husbandryAnimalCount\r\n\r\n        if self.visualAnimalCount > RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES then break end\r\n        if animalId == 0 then break end\r\n\r\n    end\r\n\r\n    --print(string.format(\"RealisticLivestock: %d visual animals loaded out of %d total animals for husbandry (%d max)\", visualAnimalCount, #animals, RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES))\r\n\r\n\r\n    i = 1\r\n\r\n\r\n    for husbandryId, animalIds in pairs(self.animalIdToCluster) do\r\n\r\n        for animalId, animal in animalIds do\r\n\r\n            local dirtFactor = 0.1\r\n\r\n            local animalRootNode = getAnimalRootNode(self.husbandryIds[husbandryId], animalId)\r\n            if animalRootNode == 0 then break end\r\n\r\n            I3DUtil.setShaderParameterRec(animalRootNode, \"dirt\", dirtFactor, nil, nil, nil)\r\n\r\n            local x, y, z, w = getAnimalShaderParameter(self.husbandryIds[husbandryId], animalId, \"atlasInvSizeAndOffsetUV\")\r\n\r\n            I3DUtil.setShaderParameterRec(animalRootNode, \"atlasInvSizeAndOffsetUV\", x, y, z, w)\r\n\r\n        end\r\n    end\r\n\r\n\r\n\r\n\r\n    --self.animalIdToCluster = newAnimalMapping\r\n    self.animalIdToVisualAnimalIndex = newAnimalIdToVisualAnimalIndex\r\n    self:getPlaceable().spec_husbandryAnimals.clusterSystem:updateIdMapping()\r\n    self.nextUpdateClusters = nil\r\n    self.visualUpdatePending = false\r\n\r\nend\r\n\r\nAnimalClusterHusbandry.updateVisuals = Utils.overwrittenFunction(AnimalClusterHusbandry.updateVisuals, RealisticLivestock_AnimalClusterHusbandry.updateVisuals)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterHusbandry:getAnimalPosition(superFunc, id)\r\n\r\n    for husbandryId, animalIds in pairs(self.animalIdToCluster) do\r\n\r\n        for animalId, animal in pairs(animalIds) do\r\n\r\n            if animal.id == id or animal.farmId .. \" \" .. animal.uniqueId == id then\r\n                local x, y, z = getAnimalPosition(self.husbandryIds[husbandryId], animalId)\r\n                local a, b, c = getAnimalRotation(self.husbandryIds[husbandryId], animalId)\r\n                return x, y, z, a, b, c\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    return nil\r\n\r\nend\r\n\r\nAnimalClusterHusbandry.getAnimalPosition = Utils.overwrittenFunction(AnimalClusterHusbandry.getAnimalPosition, RealisticLivestock_AnimalClusterHusbandry.getAnimalPosition)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterHusbandry:getClusterByAnimalId(superFunc, id, husbandryId)\r\n\r\n    if husbandryId ~= nil then\r\n\r\n        for index, husbandryIdFull in ipairs(self.husbandryIds) do\r\n            if husbandryIdFull == husbandryId and self.animalIdToCluster[index] ~= nil and self.animalIdToCluster[index][id] ~= nil then return self.animalIdToCluster[index][id] end\r\n        end\r\n\r\n        return nil\r\n\r\n    end\r\n\r\n\r\n    if type(id) ~= \"string\" then id = tostring(id) end\r\n\r\n\r\n    if string.contains(id, \"-\") then\r\n\r\n        local a, _ = string.find(id, \"-\")\r\n        husbandryId = string.sub(id, 1, (a - 1) or 2)\r\n        local animalId = string.sub(id, (a + 1) or 1)\r\n\r\n        if husbandryId ~= nil and animalId ~= nil and self.animalIdToCluster[husbandryId] ~= nil and self.animalIdToCluster[husbandryId][animalId] ~= nil then return self.animalIdToCluster[husbandryId][animalId] end\r\n\r\n    end\r\n\r\n\r\n    for husbandryId, animalIds in pairs(self.animalIdToCluster) do\r\n\r\n\r\n        for animalId, animal in pairs(animalIds) do\r\n\r\n            if animal.id == id then\r\n                --return animal\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    return nil\r\n\r\nend\r\n\r\nAnimalClusterHusbandry.getClusterByAnimalId = Utils.overwrittenFunction(AnimalClusterHusbandry.getClusterByAnimalId, RealisticLivestock_AnimalClusterHusbandry.getClusterByAnimalId)"
  },
  {
    "path": "src/animals/husbandry/cluster/RealisticLivestock_AnimalClusterSystem.lua",
    "content": "RealisticLivestock_AnimalClusterSystem = {}\r\nlocal AnimalClusterSystem_mt = Class(AnimalClusterSystem)\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem.new(superFunc, isServer, owner, customMt)\r\n\r\n    local self = setmetatable({}, customMt or AnimalClusterSystem_mt)\r\n\r\n    self.isServer = isServer\r\n    self.owner = owner\r\n    self.clusters = {}\r\n    self.idToIndex = {}\r\n    self.clustersToAdd = {}\r\n    self.clustersToRemove = {}\r\n    self.needsUpdate = false\r\n    self.animals = {}\r\n    self.currentAnimalId = 0\r\n\r\n    return self\r\n\r\nend\r\n\r\nAnimalClusterSystem.new = Utils.overwrittenFunction(AnimalClusterSystem.new, RealisticLivestock_AnimalClusterSystem.new)\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:delete()\r\n\r\n    for _, animal in pairs(self.animals) do\r\n        animal:delete()\r\n    end\r\n\r\n    self.animals = {}\r\n    self.currentAnimalId = 0\r\nend\r\n\r\nAnimalClusterSystem.delete = Utils.appendedFunction(AnimalClusterSystem.delete, RealisticLivestock_AnimalClusterSystem.delete)\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:getNextAnimalId()\r\n    self.currentAnimalId = self.currentAnimalId + 1\r\n    return self.currentAnimalId\r\nend\r\n\r\nAnimalClusterSystem.getNextAnimalId = RealisticLivestock_AnimalClusterSystem.getNextAnimalId\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:getAnimals()\r\n    return self.animals or {}\r\nend\r\n\r\nAnimalClusterSystem.getAnimals = RealisticLivestock_AnimalClusterSystem.getAnimals\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:loadFromXMLFile(_, xmlFile, key)\r\n\r\n    self.animals = {}\r\n\r\n\r\n\r\n    xmlFile:iterate(key .. \".RLAnimal\", function(_, legacyKey)\r\n        \r\n        local animal = Animal.loadFromXMLFile(xmlFile, legacyKey, self, true)\r\n        if animal ~= nil then table.insert(self.animals, animal) end\r\n\r\n    end)\r\n\r\n\r\n   xmlFile:iterate(key .. \".animal\", function(_, animalKey)\r\n\r\n        local numAnimals = xmlFile:getInt(animalKey .. \"#numAnimals\", 1)\r\n\r\n        for i = 1, numAnimals do\r\n\r\n            local animal = Animal.loadFromXMLFile(xmlFile, animalKey, self)\r\n            if animal ~= nil then table.insert(self.animals, animal) end\r\n\r\n        end\r\n\r\n    end)\r\n\r\n\r\n    self:updateClusters()\r\n    self.needsUpdate = false\r\n\r\n    if self.owner ~= nil and self.owner.spec_husbandryFood ~= nil then SpecializationUtil.raiseEvent(self.owner, \"onHusbandryAnimalsUpdate\", self.animals) end\r\n\r\nend\r\n\r\n\r\nAnimalClusterSystem.loadFromXMLFile = Utils.overwrittenFunction(AnimalClusterSystem.loadFromXMLFile, RealisticLivestock_AnimalClusterSystem.loadFromXMLFile)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:saveToXMLFile(superFunc, xmlFile, key, usedModNames)\r\n\r\n    local toRemove = {}\r\n    for i, animal in pairs(self.animals) do\r\n        if animal == nil or animal.isDead or animal.isSold or animal.numAnimals <= 0 then table.insert(toRemove, i) end\r\n    end\r\n\r\n    for i=#toRemove, 1, -1 do\r\n        table.remove(self.animals, toRemove[i])\r\n    end\r\n\r\n    for i, animal in pairs(self.animals) do\r\n        --local animalKey = string.format(\"%s.animal(%d)\", key, i - 1)\r\n        --local subType = g_currentMission.animalSystem:getSubTypeByIndex(cluster.subTypeIndex)\r\n\r\n        --xmlFile:setString(animalKey .. \"#subType\", subType.name)\r\n        --cluster:saveToXMLFile(xmlFile, animalKey, usedModNames)\r\n\r\n        local animalKey = string.format(\"%s.animal(%d)\", key, i - 1)\r\n        animal:saveToXMLFile(xmlFile, animalKey)\r\n\r\n    end\r\n\r\nend\r\n\r\nAnimalClusterSystem.saveToXMLFile = Utils.overwrittenFunction(AnimalClusterSystem.saveToXMLFile, RealisticLivestock_AnimalClusterSystem.saveToXMLFile)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:readStream(_, streamId, connection)\r\n\r\n    local numAnimals = streamReadUInt16(streamId)\r\n\r\n    for i = 1, numAnimals do\r\n\r\n        local animalTypeIndex = streamReadUInt8(streamId)\r\n        local country = streamReadUInt8(streamId)\r\n        local uniqueId = streamReadString(streamId)\r\n        local farmId = streamReadString(streamId)\r\n\r\n        local existingAnimal = false\r\n\r\n        for _, animal in pairs(self.animals) do\r\n\r\n            if animal.birthday.country == country and animal.animalTypeIndex == animalTypeIndex and animal.uniqueId == uniqueId and animal.farmId == farmId then\r\n                animal:readStream(streamId, connection)\r\n                animal.foundThisUpdate = true\r\n                existingAnimal = true\r\n                break\r\n            end\r\n\r\n        end\r\n\r\n        if not existingAnimal then\r\n\r\n            local animal = Animal.new()\r\n            animal:readStream(streamId, connection)\r\n            animal.foundThisUpdate = true\r\n            self:addCluster(animal)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    for i = #self.animals, 1, -1 do\r\n\r\n        local animal = self.animals[i]\r\n\r\n        if not animal.foundThisUpdate then\r\n            self:removeCluster(i)\r\n        else\r\n            animal.foundThisUpdate = false\r\n        end\r\n\r\n    end\r\n\r\n    self:updateIdMapping()\r\n\tg_messageCenter:publish(AnimalClusterUpdateEvent, self.owner, self.animals)\r\n\r\nend\r\n\r\nAnimalClusterSystem.readStream = Utils.overwrittenFunction(AnimalClusterSystem.readStream, RealisticLivestock_AnimalClusterSystem.readStream)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:writeStream(_, streamId, connection)\r\n\r\n    streamWriteUInt16(streamId, #self.animals)\r\n\r\n    for _, animal in pairs(self.animals) do\r\n\r\n        streamWriteUInt8(streamId, animal.animalTypeIndex)\r\n        streamWriteUInt8(streamId, animal.birthday.country)\r\n        streamWriteString(streamId, animal.uniqueId)\r\n        streamWriteString(streamId, animal.farmId)\r\n\r\n        local success = animal:writeStream(streamId, connection)\r\n\r\n    end\r\n\r\nend\r\n\r\nAnimalClusterSystem.writeStream = Utils.overwrittenFunction(AnimalClusterSystem.writeStream, RealisticLivestock_AnimalClusterSystem.writeStream)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:getClusters(superFunc)\r\n    return self.animals or {}\r\nend\r\n\r\nAnimalClusterSystem.getClusters = Utils.overwrittenFunction(AnimalClusterSystem.getClusters, RealisticLivestock_AnimalClusterSystem.getClusters)\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:getCluster(superFunc, index)\r\n    return self.animals[index] or nil\r\nend\r\n\r\nAnimalClusterSystem.getCluster = Utils.overwrittenFunction(AnimalClusterSystem.getCluster, RealisticLivestock_AnimalClusterSystem.getCluster)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:getClusterById(superFunc, id)\r\n    local index = self.idToIndex[id]\r\n\r\n    if id == nil or self.animals == nil then return end\r\n\r\n    if string.contains(id, \"-\") then\r\n\r\n        for _, animal in pairs(self.animals) do\r\n            if animal.id == id then return animal end\r\n        end\r\n\r\n    end\r\n\r\n\r\n    for _, animal in pairs(self.animals) do\r\n        if animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country == id then return animal end\r\n    end\r\n\r\n    if index == nil or self.animals == nil or self.animals[index] == nil then return nil end\r\n\r\n    return self.animals[index]\r\nend\r\n\r\nAnimalClusterSystem.getClusterById = Utils.overwrittenFunction(AnimalClusterSystem.getClusterById, RealisticLivestock_AnimalClusterSystem.getClusterById)\r\n\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:addCluster(superFunc, animal)\r\n\r\n    if animal.uniqueId == nil or animal.uniqueId == \"1-1\" or animal.uniqueId == \"0-0\" then return end\r\n    animal:setClusterSystem(self)\r\n    table.insert(self.animals, animal)\r\n\r\n    self:updateIdMapping()\r\n\r\nend\r\n\r\nAnimalClusterSystem.addCluster = Utils.overwrittenFunction(AnimalClusterSystem.addCluster, RealisticLivestock_AnimalClusterSystem.addCluster)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:removeCluster(_, animalIndex)\r\n\r\n    if self.animals[animalIndex] ~= nil then\r\n        local animal = self.animals[animalIndex]\r\n\r\n        local spec = self.owner.spec_husbandryAnimals\r\n\r\n        if animal.idFull ~= nil and animal.idFull ~= \"1-1\" and spec ~= nil then\r\n\r\n            local sep = string.find(animal.idFull, \"-\")\r\n            local husbandry = tonumber(string.sub(animal.idFull, 1, sep - 1))\r\n            local animalId = tonumber(string.sub(animal.idFull, sep + 1))\r\n\r\n            if husbandry ~= 0 and animalId ~= 0 then\r\n\r\n                removeHusbandryAnimal(husbandry, animalId)\r\n\r\n                local clusterHusbandry = spec.clusterHusbandry\r\n                clusterHusbandry.husbandryIdsToVisualAnimalCount[husbandry] = math.max(clusterHusbandry.husbandryIdsToVisualAnimalCount[husbandry] - 1, 0)\r\n                clusterHusbandry.visualAnimalCount = math.max(clusterHusbandry.visualAnimalCount - 1, 0)\r\n\r\n                for husbandryIndex, animalIds in pairs(clusterHusbandry.animalIdToCluster) do\r\n\r\n                    if clusterHusbandry.husbandryIds[husbandryIndex] == husbandry then\r\n\r\n                        animalIds[animalId] = nil\r\n                        break\r\n\r\n                    end\r\n\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n\r\n        table.remove(self.animals, animalIndex)\r\n        animal:setClusterSystem(nil)\r\n    else\r\n        for i, animal in pairs(self.animals) do\r\n            if animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country == animalIndex then\r\n\r\n                local spec = self.owner.spec_husbandryAnimals\r\n\r\n                if animal.idFull ~= nil and animal.idFull ~= \"1-1\" and spec ~= nil then\r\n\r\n                    local sep = string.find(animal.idFull, \"-\")\r\n                    local husbandry = tonumber(string.sub(animal.idFull, 1, sep - 1))\r\n                    local animalId = tonumber(string.sub(animal.idFull, sep + 1))\r\n\r\n                    if husbandry ~= 0 and animalId ~= 0 then\r\n\r\n                        removeHusbandryAnimal(husbandry, animalId)\r\n\r\n                        local clusterHusbandry = spec.clusterHusbandry\r\n                        clusterHusbandry.husbandryIdsToVisualAnimalCount[husbandry] = math.max(clusterHusbandry.husbandryIdsToVisualAnimalCount[husbandry] - 1, 0)\r\n                        clusterHusbandry.visualAnimalCount = math.max(clusterHusbandry.visualAnimalCount - 1, 0)\r\n\r\n                    end\r\n\r\n                end\r\n\r\n                table.remove(self.animals, i)\r\n                animal:setClusterSystem(nil)\r\n                break\r\n            end\r\n        end\r\n    end\r\n\r\n    self:updateIdMapping()\r\n\r\nend\r\n\r\nAnimalClusterSystem.removeCluster = Utils.overwrittenFunction(AnimalClusterSystem.removeCluster, RealisticLivestock_AnimalClusterSystem.removeCluster)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:updateClusters(superFunc)\r\n\r\n    --assert(self.isServer, \"AnimalClusterSystem:updateClusters is a server function\")\r\n\r\n    local isDirty = false\r\n    local removedClusterIndices = {}\r\n\r\n    for animalsToAdd, pending in pairs(self.clustersToAdd) do\r\n        if not pending then continue end\r\n\r\n        if animalsToAdd.isIndividual ~= nil then\r\n            self:addCluster(animalsToAdd)\r\n            isDirty = true\r\n            continue\r\n        end\r\n\r\n        if animalsToAdd.numAnimals ~= nil then\r\n            local subType = g_currentMission.animalSystem:getSubTypeByIndex(animalsToAdd.subTypeIndex)\r\n            for i=1, animalsToAdd.numAnimals do\r\n                local genetics = animalsToAdd.genetics or nil\r\n                local impregnatedBy = animalsToAdd.impregnatedBy or nil\r\n                local animal = Animal.new(animalsToAdd.age, animalsToAdd.health, animalsToAdd.monthsSinceLastBirth or 0, subType.gender, animalsToAdd.subTypeIndex, animalsToAdd.reproduction or 0, animalsToAdd.isParent or false, animalsToAdd.isPregnant or false, animalsToAdd.isLactating or false, self, animalsToAdd.uniqueId, animalsToAdd.motherId, animalsToAdd.fatherId, nil, animalsToAdd.name, animalsToAdd.dirt, animalsToAdd.fitness, animalsToAdd.riding, animalsToAdd.farmId, animalsToAdd.weight, genetics, impregnatedBy, animalsToAdd.variation, animalsToAdd.children, animalsToAdd.monitor)\r\n                self:addCluster(animal)\r\n                isDirty = true\r\n            end\r\n\r\n            continue\r\n        end\r\n\r\n        for _, animalToAdd in pairs(animalsToAdd) do\r\n\r\n            if animalToAdd.isIndividual then\r\n                self:addCluster(animalToAdd)\r\n                isDirty = true\r\n\r\n            else\r\n                local subType = g_currentMission.animalSystem:getSubTypeByIndex(animalToAdd.subTypeIndex)\r\n                for i=1, animalToAdd.numAnimals do\r\n                    local genetics = animalToAdd.genetics or nil\r\n                    local impregnatedBy = animalToAdd.impregnatedBy or nil\r\n                    local animal = Animal.new(animalToAdd.age, animalToAdd.health, animalToAdd.monthsSinceLastBirth or 0, subType.gender, animalToAdd.subTypeIndex, animalToAdd.reproduction or 0, animalToAdd.isParent or false, animalToAdd.isPregnant or false, animalToAdd.isLactating or false, self, animalToAdd.uniqueId, animalToAdd.motherId, animalToAdd.fatherId, nil, animalToAdd.name, animalToAdd.dirt, animalToAdd.fitness, animalToAdd.riding, animalToAdd.farmId, animalToAdd.weight, genetics, impregnatedBy, animalToAdd.variation, animalToAdd.children, animalToAdd.monitor)\r\n                    self:addCluster(animal)\r\n                    isDirty = true\r\n                end\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n    for animalIndex, animal in pairs(self.animals) do\r\n        if animal.isDirty then\r\n            isDirty = true\r\n            animal.isDirty = false\r\n        end\r\n\r\n        --if animal:getNumAnimals() <= 0 and not animal.isDead and not animal.isSold then animal.numAnimals = 1 end\r\n\r\n        if self.clustersToRemove[animal] ~= nil or (animal.beingRidden ~= nil and animal.beingRidden) or animal:getNumAnimals() == 0 or animal.uniqueId == \"1-1\" or animal.uniqueId == \"0-0\" then table.insert(removedClusterIndices, animalIndex) end\r\n    end\r\n\r\n\r\n    for i = #removedClusterIndices, 1, -1 do\r\n        isDirty = true\r\n        local animalIndexToRemove = removedClusterIndices[i]\r\n\r\n        self:removeCluster(animalIndexToRemove)\r\n    end\r\n\r\n    --if isDirty then\r\n       -- g_server:broadcastEvent(AnimalClusterUpdateEvent.new(self.owner, self.animals), true)\r\n        --g_messageCenter:publish(AnimalClusterUpdateEvent, self.owner, self.animals)\r\n    --end\r\n\r\n    self.clustersToAdd = {}\r\n    self.clustersToRemove = {}\r\n\r\n    self:updateIdMapping()\r\n    if self.owner.spec_husbandryAnimals ~= nil then self.owner.spec_husbandryAnimals:updateVisualAnimals() end\r\n\r\n\r\nend\r\n\r\nAnimalClusterSystem.updateClusters = Utils.overwrittenFunction(AnimalClusterSystem.updateClusters, RealisticLivestock_AnimalClusterSystem.updateClusters)\r\n\r\n\r\nfunction RealisticLivestock_AnimalClusterSystem:updateIdMapping(superFunc)\r\n    self.idToIndex = {}\r\n\r\n    for index, animal in pairs(self.animals) do\r\n        if index == nil then continue end\r\n        self.idToIndex[animal.farmId .. \" \" .. animal.uniqueId] = index\r\n    end\r\n        \r\n    if self.owner.updatedClusters ~= nil then self.owner:updatedClusters(self.owner, self.animals) end\r\n\r\n    if g_server ~= nil then g_server:broadcastEvent(AnimalClusterUpdateEvent.new(self.owner, self.animals)) end\r\n    g_messageCenter:publish(AnimalClusterUpdateEvent, self.owner, self.animals)\r\n    \r\nend\r\n\r\nAnimalClusterSystem.updateIdMapping = Utils.overwrittenFunction(AnimalClusterSystem.updateIdMapping, RealisticLivestock_AnimalClusterSystem.updateIdMapping)"
  },
  {
    "path": "src/animals/husbandry/cluster/VisualAnimal.lua",
    "content": "VisualAnimal = {}\r\n\r\n\r\nlocal VisualAnimal_mt = Class(VisualAnimal)\r\n\r\n\r\nfunction VisualAnimal.new(animal, husbandryId, animalId)\r\n\r\n\tlocal self = setmetatable({}, VisualAnimal_mt)\r\n\r\n\tself.animal = animal\r\n\tself.husbandryId = husbandryId\r\n\tself.animalId = animalId\r\n\r\n\tself.nodes = {\r\n\t\t[\"root\"] = getAnimalRootNode(husbandryId, animalId)\r\n\t}\r\n\tself.texts = {\r\n\t\t[\"earTagLeft\"] = {},\r\n\t\t[\"earTagRight\"] = {}\r\n\t}\r\n\r\n\tself.leftTextColour, self.rightTextColour = { 0, 0, 0 }, { 0, 0, 0 }\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimal:delete()\r\n\r\n\tfor _, nodeType in pairs(self.texts) do\r\n\r\n\t\tfor _, nodes in pairs(nodeType) do\r\n\r\n\t\t\tfor _, node in pairs(nodes) do delete3DLinkedText(node) end\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimal:load()\r\n\r\n\tlocal nodes = self.nodes\r\n\tlocal visualData = g_currentMission.animalSystem:getVisualByAge(self.animal.subTypeIndex, self.animal.age)\r\n\r\n\tif visualData.monitor ~= nil then nodes.monitor = I3DUtil.indexToObject(nodes.root, visualData.monitor) end\r\n\tif visualData.noseRing ~= nil then nodes.noseRing = I3DUtil.indexToObject(nodes.root, visualData.noseRing) end\r\n\tif visualData.bumId ~= nil then nodes.bumId = I3DUtil.indexToObject(nodes.root, visualData.bumId) end\r\n\tif visualData.marker ~= nil then nodes.marker = I3DUtil.indexToObject(nodes.root, visualData.marker) end\r\n\tif visualData.earTagLeft ~= nil then nodes.earTagLeft = I3DUtil.indexToObject(nodes.root, visualData.earTagLeft) end\r\n\tif visualData.earTagRight ~= nil then nodes.earTagRight = I3DUtil.indexToObject(nodes.root, visualData.earTagRight) end\r\n\r\n\tself:setMonitor()\r\n\tself:setNoseRing()\r\n\tself:setBumId()\r\n\tself:setMarker()\r\n\tself:setLeftEarTag()\r\n\tself:setRightEarTag()\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimal:setMonitor()\r\n\r\n\tif self.nodes.monitor == nil then return end\r\n\r\n    setVisibility(self.nodes.monitor, self.animal.monitor.active or self.animal.monitor.removed)\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimal:setNoseRing()\r\n\r\n\tif self.nodes.noseRing == nil then return end\r\n\r\n    setVisibility(self.nodes.noseRing, self.animal.gender == \"male\")\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimal:setBumId()\r\n\r\n\tif self.nodes.bumId == nil then return end\r\n\r\n    local uniqueId = self.animal.uniqueId\r\n\r\n\tself.texts.bumId = {\r\n\t\t[\"uniqueId\"] = {\r\n\t\t\t[\"top\"] = create3DLinkedText(self.nodes.bumId, 0, -0.006, 0, 0, 0, 0, 0.05, string.sub(uniqueId, 3, 4)),\r\n\t\t\t[\"bottom\"] = create3DLinkedText(self.nodes.bumId, 0, -0.012, 0, 0, 0, 0, 0.05, string.sub(uniqueId, 5, 6))\r\n\t\t}\r\n\t}\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimal:setMarker()\r\n\r\n\tif self.nodes.marker == nil then return end\r\n\r\n\tlocal markerColour = AnimalSystem.BREED_TO_MARKER_COLOUR[self.animal.breed]\r\n    local isMarked = self.animal:getMarked()\r\n\r\n    setVisibility(self.nodes.marker, isMarked)\r\n    if isMarked then setShaderParameter(self.nodes.marker, \"colorScale\", markerColour[1], markerColour[2], markerColour[3], nil, false) end\r\n\r\nend\r\n\r\n\r\n\r\nfunction VisualAnimal:setEarTagColours(leftTag, leftText, rightTag, rightText)\r\n\r\n\tif self.nodes.earTagLeft ~= nil then\r\n\r\n\t\tif leftTag ~= nil then setShaderParameter(self.nodes.earTagLeft, \"colorScale\", leftTag[1], leftTag[2], leftTag[3], nil, false) end\r\n\r\n\t\tif leftText ~= nil then\r\n\r\n\t\t\tself.leftTextColour = leftText\r\n\t\t\r\n\t\t\tfor _, nodes in pairs(self.texts.earTagLeft) do\r\n\t\t\t\tfor _, node in pairs(nodes) do change3DLinkedTextColour(node, leftText[1], leftText[2], leftText[3], 1) end\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tif self.nodes.earTagRight ~= nil then\r\n\r\n\t\tif rightTag ~= nil then setShaderParameter(self.nodes.earTagRight, \"colorScale\", rightTag[1], rightTag[2], rightTag[3], nil, false) end\r\n\r\n\t\tif rightText ~= nil then\r\n\r\n\t\t\tself.rightTextColour = rightText\r\n\t\t\r\n\t\t\tfor _, nodes in pairs(self.texts.earTagRight) do\r\n\t\t\t\tfor _, node in pairs(nodes) do change3DLinkedTextColour(node, rightText[1], rightText[2], rightText[3], 1) end\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimal:setLeftEarTag()\r\n\r\n\tif self.nodes.earTagLeft == nil then return end\r\n\r\n\tfor _, nodes in pairs(self.texts.earTagLeft) do\r\n\t\tfor _, node in pairs(nodes) do delete3DLinkedText(node) end\r\n\tend\r\n\r\n    local uniqueId = self.animal.uniqueId\r\n    local farmId = self.animal.farmId\r\n    local birthday = self.animal:getBirthday()\r\n\tlocal countryCode = birthday ~= nil and birthday.country ~= nil and (RealisticLivestock.AREA_CODES[birthday.country] or RealisticLivestock.getMapCountryCode()).code\r\n\tlocal node = self.nodes.earTagLeft\r\n\tlocal colour = self.leftTextColour\r\n\r\n\tlocal front = getChild(node, \"front\")\r\n\tlocal back = getChild(node, \"back\")\r\n\t\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_MIDDLE)\r\n\tsetTextAlignment(RenderText.ALIGN_CENTER)\r\n\tsetTextColor(colour[1], colour[2], colour[3], 1)\r\n\tsetTextFont(RealisticLivestock.FONTS.dejavu_sans)\r\n\r\n\tself.texts.earTagLeft = {\r\n\t\t[\"uniqueId\"] = {\r\n\t\t\t[\"back\"] = create3DLinkedText(back, 0, -0.006, -0.015, 0, 0, 0, 0.035, uniqueId),\r\n\t\t\t[\"front\"] = create3DLinkedText(front, 0, -0.006, -0.015, 0, 0, 0, 0.035, uniqueId)\r\n\t\t},\r\n\t\t[\"farmId\"] = {\r\n\t\t\t[\"back\"] = create3DLinkedText(back, 0, -0.041, -0.02, 0, 0, 0, 0.05, farmId),\r\n\t\t\t[\"front\"] = create3DLinkedText(front, 0, -0.041, -0.02, 0, 0, 0, 0.05, farmId)\r\n\t\t},\r\n\t\t[\"country\"] = {\r\n\t\t\t[\"back\"] = create3DLinkedText(back, 0, 0.021, -0.015, 0, 0, 0, 0.03, countryCode),\r\n\t\t\t[\"front\"] = create3DLinkedText(front, 0, 0.021, -0.015, 0, 0, 0, 0.03, countryCode)\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_BASELINE)\r\n\tsetTextAlignment(RenderText.ALIGN_LEFT)\r\n\tsetTextColor(1, 1, 1, 1)\r\n\tsetTextFont()\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimal:setRightEarTag()\r\n\r\n\tif self.nodes.earTagRight == nil then return end\r\n\r\n\tfor _, nodes in pairs(self.texts.earTagRight) do\r\n\t\tfor _, node in pairs(nodes) do delete3DLinkedText(node) end\r\n\tend\r\n\t\r\n\tlocal node = self.nodes.earTagRight\r\n\tlocal colour = self.rightTextColour\r\n\tlocal name = self.animal:getName()\r\n    local birthday = self.animal:getBirthday()\r\n\tlocal day, month, year = birthday.day, birthday.month, birthday.year + RealisticLivestock.START_YEAR.PARTIAL\r\n\tlocal birthdayText = string.format(\"%s%s/%s%s/%s%s\", day < 10 and 0 or \"\", day, month < 10 and 0 or \"\", month, year < 10 and 0 or \"\", year)\r\n\r\n\tlocal front = getChild(node, \"front\")\r\n\tlocal back = getChild(node, \"back\")\r\n\r\n\tset3DTextAutoScale(true)\r\n\tset3DTextRemoveSpaces(true)\r\n\tset3DTextWrapWidth(0.14)\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_MIDDLE)\r\n\tsetTextAlignment(RenderText.ALIGN_CENTER)\r\n\tsetTextColor(colour[1], colour[2], colour[3], 1)\r\n\tset3DTextWordsPerLine(1)\r\n\tsetTextLineHeightScale(0.75)\r\n\tsetTextFont(RealisticLivestock.FONTS.toms_handwritten)\r\n\r\n\r\n\tself.texts.earTagRight = {\r\n\t\t[\"name\"] = {\r\n\t\t\t[\"back\"] = create3DLinkedText(back, 0, -0.01, -0.015, 0, 0, 0, 0.035, name),\r\n\t\t\t[\"front\"] = create3DLinkedText(front, 0, -0.01, -0.015, 0, 0, 0, 0.035, name)\r\n\t\t}\r\n\t}\r\n\r\n\tset3DTextWrapWidth(0)\r\n\tsetTextFont(RealisticLivestock.FONTS.dejavu_sans)\r\n\t\r\n\tself.texts.earTagRight.birthday = {\r\n\t\t[\"back\"] = create3DLinkedText(back, 0, 0.018, -0.015, 0, 0, 0, 0.02, birthdayText),\r\n\t\t[\"front\"] = create3DLinkedText(front, 0, 0.018, -0.015, 0, 0, 0, 0.02, birthdayText)\r\n\t}\r\n\r\n\t\r\n\tsetTextLineHeightScale(1.1)\r\n\tset3DTextWordsPerLine(0)\r\n\tset3DTextAutoScale(false)\r\n\tset3DTextRemoveSpaces(false)\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_BASELINE)\r\n\tsetTextAlignment(RenderText.ALIGN_LEFT)\r\n\tsetTextColor(1, 1, 1, 1)\r\n\tsetTextFont()\r\n\r\nend"
  },
  {
    "path": "src/animals/husbandry/placeables/PlaceableHusbandry.lua",
    "content": "RL_PlaceableHusbandry = {}\r\n\r\n\r\nfunction RL_PlaceableHusbandry.registerFunctions(placeable)\r\n\tSpecializationUtil.registerFunction(placeable, \"updateInputAndOutput\", PlaceableHusbandry.updateInputAndOutput)\r\nend\r\n\r\nPlaceableHusbandry.registerFunctions = Utils.appendedFunction(PlaceableHusbandry.registerFunctions, RL_PlaceableHusbandry.registerFunctions)\r\n\r\n\r\nfunction RL_PlaceableHusbandry:onHourChanged()\r\n\r\n\tlocal animals = self.spec_husbandryAnimals:getClusters()\r\n\tlocal temp = g_currentMission.environment.weather.temperatureUpdater.currentMin or 20\r\n\r\n\tfor _, animal in pairs(animals) do\r\n\t\tanimal:updateInput()\r\n\t\tanimal:updateOutput(temp)\r\n\tend\r\n\r\n\tif self.isServer then self:updateInputAndOutput(animals) end\r\n\r\nend\r\n\r\nPlaceableHusbandry.onHourChanged = Utils.appendedFunction(PlaceableHusbandry.onHourChanged, RL_PlaceableHusbandry.onHourChanged)\r\n\r\n\r\nfunction PlaceableHusbandry:updateInputAndOutput(animals) end"
  },
  {
    "path": "src/animals/husbandry/placeables/PlaceableHusbandryLiquidManure.lua",
    "content": "RL_PlaceableHusbandryLiquidManure = {}\r\n\r\n\r\nfunction RL_PlaceableHusbandryLiquidManure.registerOverwrittenFunctions(placeable)\r\n\tSpecializationUtil.registerOverwrittenFunction(placeable, \"updateInputAndOutput\", PlaceableHusbandryLiquidManure.updateInputAndOutput)\r\nend\r\n\r\nPlaceableHusbandryLiquidManure.registerOverwrittenFunctions = Utils.appendedFunction(PlaceableHusbandryLiquidManure.registerOverwrittenFunctions, RL_PlaceableHusbandryLiquidManure.registerOverwrittenFunctions)\r\n\r\n\r\nfunction RL_PlaceableHusbandryLiquidManure:onHusbandryAnimalsUpdate(_, _) end\r\n\r\nPlaceableHusbandryLiquidManure.onHusbandryAnimalsUpdate = Utils.overwrittenFunction(PlaceableHusbandryLiquidManure.onHusbandryAnimalsUpdate, RL_PlaceableHusbandryLiquidManure.onHusbandryAnimalsUpdate)\r\n\r\n\r\nfunction PlaceableHusbandryLiquidManure:updateInputAndOutput(superFunc, animals)\r\n\r\n\tsuperFunc(self, animals)\r\n\r\n    local spec = self.spec_husbandryLiquidManure\r\n\r\n    spec.litersPerHour = 0\r\n\r\n    for _, animal in pairs(animals) do\r\n\r\n        local subType = animal:getSubType()\r\n\r\n        if subType ~= nil then\r\n\r\n            local liquidManure = subType.output.liquidManure\r\n\r\n            if liquidManure ~= nil then\r\n\r\n                spec.litersPerHour = spec.litersPerHour + animal:getOutput(\"liquidManure\")\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/husbandry/placeables/PlaceableHusbandryStraw.lua",
    "content": "RL_PlaceableHusbandryStraw = {}\r\n\r\n\r\nfunction RL_PlaceableHusbandryStraw.registerOverwrittenFunctions(placeable)\r\n\tSpecializationUtil.registerOverwrittenFunction(placeable, \"updateInputAndOutput\", PlaceableHusbandryStraw.updateInputAndOutput)\r\nend\r\n\r\nPlaceableHusbandryStraw.registerOverwrittenFunctions = Utils.appendedFunction(PlaceableHusbandryStraw.registerOverwrittenFunctions, RL_PlaceableHusbandryStraw.registerOverwrittenFunctions)\r\n\r\n\r\nfunction RL_PlaceableHusbandryStraw:onHusbandryAnimalsUpdate(_, _) end\r\n\r\nPlaceableHusbandryStraw.onHusbandryAnimalsUpdate = Utils.overwrittenFunction(PlaceableHusbandryStraw.onHusbandryAnimalsUpdate, RL_PlaceableHusbandryStraw.onHusbandryAnimalsUpdate)\r\n\r\n\r\nfunction PlaceableHusbandryStraw:updateInputAndOutput(superFunc, animals)\r\n\r\n\tsuperFunc(self, animals)\r\n\r\n    local spec = self.spec_husbandryStraw\r\n\tspec.inputLitersPerHour = 0\r\n\tspec.outputLitersPerHour = 0\r\n\r\n    for _, animal in pairs(animals) do\r\n\r\n        local subType = animal:getSubType()\r\n\r\n        if subType ~= nil then\r\n\r\n            local straw = subType.input.straw\r\n\r\n            if straw ~= nil then\r\n\r\n                spec.inputLitersPerHour = spec.inputLitersPerHour + animal:getInput(\"straw\")\r\n\r\n            end\r\n\r\n            local manure = subType.output.manure\r\n\r\n            if manure ~= nil then\r\n\r\n                spec.outputLitersPerHour = spec.outputLitersPerHour + animal:getOutput(\"manure\")\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/husbandry/placeables/PlaceableHusbandryWater.lua",
    "content": "RL_PlaceableHusbandryWater = {}\r\n\r\n\r\nfunction RL_PlaceableHusbandryWater.registerOverwrittenFunctions(placeable)\r\n\tSpecializationUtil.registerOverwrittenFunction(placeable, \"updateInputAndOutput\", PlaceableHusbandryWater.updateInputAndOutput)\r\nend\r\n\r\nPlaceableHusbandryWater.registerOverwrittenFunctions = Utils.appendedFunction(PlaceableHusbandryWater.registerOverwrittenFunctions, RL_PlaceableHusbandryWater.registerOverwrittenFunctions)\r\n\r\n\r\nfunction RL_PlaceableHusbandryWater:onHusbandryAnimalsUpdate(_, _) end\r\n\r\nPlaceableHusbandryWater.onHusbandryAnimalsUpdate = Utils.overwrittenFunction(PlaceableHusbandryWater.onHusbandryAnimalsUpdate, RL_PlaceableHusbandryWater.onHusbandryAnimalsUpdate)\r\n\r\n\r\nfunction PlaceableHusbandryWater:updateInputAndOutput(superFunc, animals)\r\n\r\n\tsuperFunc(self, animals)\r\n\r\n    local spec = self.spec_husbandryWater\r\n    spec.litersPerHour = 0\r\n\r\n    for _, animal in pairs(animals) do\r\n\r\n        local subType = animal:getSubType()\r\n\r\n        if subType ~= nil then\r\n\r\n            local water = subType.input.water\r\n\r\n            if water ~= nil then\r\n\r\n                spec.litersPerHour = spec.litersPerHour + animal:getInput(\"water\")\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/husbandry/placeables/RealisticLivestock_PlaceableHusbandryAnimals.lua",
    "content": "RealisticLivestock_PlaceableHusbandryAnimals = {}\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryAnimals.registerFunctions(placeable)\r\n\tSpecializationUtil.registerFunction(placeable, \"setHasUnreadRLMessages\", PlaceableHusbandryAnimals.setHasUnreadRLMessages)\r\n\tSpecializationUtil.registerFunction(placeable, \"getHasUnreadRLMessages\", PlaceableHusbandryAnimals.getHasUnreadRLMessages)\r\n\tSpecializationUtil.registerFunction(placeable, \"getRLMessages\", PlaceableHusbandryAnimals.getRLMessages)\r\n\tSpecializationUtil.registerFunction(placeable, \"addRLMessage\", PlaceableHusbandryAnimals.addRLMessage)\r\n\tSpecializationUtil.registerFunction(placeable, \"deleteRLMessage\", PlaceableHusbandryAnimals.deleteRLMessage)\r\n\tSpecializationUtil.registerFunction(placeable, \"getNextRLMessageUniqueId\", PlaceableHusbandryAnimals.getNextRLMessageUniqueId)\r\n\tSpecializationUtil.registerFunction(placeable, \"setNextRLMessageUniqueId\", PlaceableHusbandryAnimals.setNextRLMessageUniqueId)\r\n\tSpecializationUtil.registerFunction(placeable, \"getAIManager\", PlaceableHusbandryAnimals.getAIManager)\r\nend\r\n\r\nPlaceableHusbandryAnimals.registerFunctions = Utils.appendedFunction(PlaceableHusbandryAnimals.registerFunctions, RealisticLivestock_PlaceableHusbandryAnimals.registerFunctions)\r\n\r\n\r\nfunction PlaceableHusbandryAnimals:setHasUnreadRLMessages(hasUnreadMessages)\r\n    \r\n    self.spec_husbandryAnimals.unreadMessages = hasUnreadMessages\r\n\r\nend\r\n\r\n\r\nfunction PlaceableHusbandryAnimals:getHasUnreadRLMessages()\r\n    \r\n    return self.spec_husbandryAnimals.unreadMessages or false\r\n\r\nend\r\n\r\n\r\nfunction PlaceableHusbandryAnimals:getRLMessages()\r\n\r\n    return self.spec_husbandryAnimals.messages or {}\r\n\r\nend\r\n\r\n\r\nfunction PlaceableHusbandryAnimals:addRLMessage(id, animal, args, date, uniqueId, isLoading)\r\n\r\n    local spec = self.spec_husbandryAnimals\r\n\r\n    if spec.messages == nil then spec.messages = {} end\r\n\r\n    if date == nil then\r\n\r\n        local environment = g_currentMission.environment\r\n        local month = environment.currentPeriod + 2\r\n        local currentDayInPeriod = environment.currentDayInPeriod\r\n\r\n        if month > 12 then month = month - 12 end\r\n\r\n        local daysPerPeriod = environment.daysPerPeriod\r\n        local day = 1 + math.floor((currentDayInPeriod - 1) * (RealisticLivestock.DAYS_PER_MONTH[month] / daysPerPeriod))\r\n        local year = environment.currentYear\r\n\r\n        date = string.format(\"%s/%s/%s\", day, month, year + RealisticLivestock.START_YEAR.FULL)\r\n\r\n    end\r\n\r\n    for i, arg in pairs(args or {}) do args[i] = tostring(arg) end\r\n\r\n    table.insert(spec.messages, {\r\n        [\"id\"] = id,\r\n        [\"animal\"] = animal,\r\n        [\"args\"] = args or {},\r\n        [\"date\"] = date,\r\n        [\"uniqueId\"] = uniqueId or spec:getNextRLMessageUniqueId()\r\n    })\r\n\r\n    if not isLoading and #spec.messages > PlaceableHusbandryAnimals.maxNumMessages then table.remove(spec.messages, 1) end\r\n\r\n    spec.unreadMessages = true\r\n\r\nend\r\n\r\n\r\nfunction PlaceableHusbandryAnimals:deleteRLMessage(uniqueId)\r\n\r\n    local spec = self.spec_husbandryAnimals\r\n\r\n    for i, message in pairs(spec.messages or {}) do\r\n\r\n        if message.uniqueId == uniqueId then\r\n            table.remove(spec.messages, i)\r\n            return\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction PlaceableHusbandryAnimals:setNextRLMessageUniqueId(nextUniqueId)\r\n\r\n    self.spec_husbandryAnimals.rlMessageUniqueId = nextUniqueId or 0\r\n\r\nend\r\n\r\n\r\nfunction PlaceableHusbandryAnimals:getNextRLMessageUniqueId()\r\n\r\n    local spec = self.spec_husbandryAnimals\r\n\r\n    if spec.rlMessageUniqueId == nil then spec.rlMessageUniqueId = 0 end\r\n\r\n    spec.rlMessageUniqueId = spec.rlMessageUniqueId + 1\r\n\r\n    return spec.rlMessageUniqueId\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryAnimals:saveToXMLFile(xmlFile, key)\r\n\r\n    local spec = self.spec_husbandryAnimals\r\n\r\n    xmlFile:setInt(key .. \".messages#uniqueId\", spec.rlMessageUniqueId or 0)\r\n    xmlFile:setBool(key .. \".messages#unreadMessages\", spec.unreadMessages or false)\r\n\r\n    for i, message in pairs(spec.messages or {}) do\r\n\r\n        local messageKey = string.format(\"%s.messages.message(%d)\", key, i - 1)\r\n\r\n        xmlFile:setString(messageKey .. \"#id\", message.id)\r\n        xmlFile:setString(messageKey .. \"#date\", message.date)\r\n        if message.animal ~= nil then xmlFile:setString(messageKey .. \"#animal\", message.animal) end\r\n        xmlFile:setInt(messageKey .. \"#uniqueId\", message.uniqueId)\r\n        \r\n        for j, arg in pairs(message.args) do\r\n\r\n            xmlFile:setString(string.format(\"%s.args.arg(%d)#value\", messageKey, j - 1), arg)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    spec.aiAnimalManager:saveToXMLFile(xmlFile, key)\r\n\r\nend\r\n\r\nPlaceableHusbandryAnimals.saveToXMLFile = Utils.prependedFunction(PlaceableHusbandryAnimals.saveToXMLFile, RealisticLivestock_PlaceableHusbandryAnimals.saveToXMLFile)\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryAnimals:loadFromXMLFile(xmlFile, key)\r\n\r\n    local spec = self.spec_husbandryAnimals\r\n    \r\n    spec.rlMessageUniqueId = xmlFile:getInt(key .. \".messages#uniqueId\", 0)\r\n\r\n    xmlFile:iterate(key .. \".messages.message\", function(_, messageKey)\r\n    \r\n        local id = xmlFile:getString(messageKey .. \"#id\")\r\n        local date = xmlFile:getString(messageKey .. \"#date\")\r\n        local animal = xmlFile:getString(messageKey .. \"#animal\")\r\n        local uniqueId = xmlFile:getInt(messageKey .. \"#uniqueId\")\r\n        local args = {}\r\n\r\n        xmlFile:iterate(messageKey .. \".args.arg\", function(_, argKey)\r\n\r\n            table.insert(args, xmlFile:getString(argKey .. \"#value\"))\r\n\r\n        end)\r\n        \r\n        self:addRLMessage(id, animal, args, date, uniqueId, true)\r\n    \r\n    end)\r\n\r\n    spec.unreadMessages = xmlFile:getBool(key .. \".messages#unreadMessages\", false)\r\n\r\n    spec.aiAnimalManager:loadFromXMLFile(xmlFile, key)\r\n\r\nend\r\n\r\nPlaceableHusbandryAnimals.loadFromXMLFile = Utils.prependedFunction(PlaceableHusbandryAnimals.loadFromXMLFile, RealisticLivestock_PlaceableHusbandryAnimals.loadFromXMLFile)\r\n\r\n\r\nfunction PlaceableHusbandryAnimals:getAIManager()\r\n\r\n    local spec = self.spec_husbandryAnimals\r\n\r\n    if spec.aiAnimalManager == nil then spec.aiAnimalManager = AIAnimalManager.new(self) end\r\n\r\n    return spec.aiAnimalManager\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryAnimals:onLoad()\r\n\r\n    self.spec_husbandryAnimals.aiAnimalManager = AIAnimalManager.new(self, self.isServer)\r\n\r\nend\r\n\r\nPlaceableHusbandryAnimals.onLoad = Utils.appendedFunction(PlaceableHusbandryAnimals.onLoad, RealisticLivestock_PlaceableHusbandryAnimals.onLoad)\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryAnimals.onSettingChanged(name, state)\r\n\r\n    PlaceableHusbandryAnimals[name] = state\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryAnimals:updateVisualAnimals(_)\r\n    local spec = self.spec_husbandryAnimals\r\n    local animals = spec.clusterSystem:getAnimals()\r\n\r\n    spec.clusterHusbandry:setClusters(animals)\r\n    spec.clusterHusbandry:updateVisuals()\r\n    self:raiseActive()\r\nend\r\n\r\nPlaceableHusbandryAnimals.updateVisualAnimals = Utils.overwrittenFunction(PlaceableHusbandryAnimals.updateVisualAnimals, RealisticLivestock_PlaceableHusbandryAnimals.updateVisualAnimals)\r\n\r\n\r\n\r\n--function RealisticLivestock_PlaceableHusbandryAnimals:addAnimals(_, subTypeIndex, numAnimals, age)\r\nfunction RealisticLivestock_PlaceableHusbandryAnimals:addAnimals(_, animals)\r\n\r\n    --local newAnimals = {}\r\n\r\n    --for i=1, numAnimals do\r\n\r\n        --local subType = g_currentMission.animalSystem:getSubTypeByIndex(subTypeIndex)\r\n        --local animal = Animal.new(age, 100, 0, subType.gender, subTypeIndex, 0, false, false, false, self.spec_husbandryAnimals.clusterSystem)\r\n        --table.insert(newAnimals, animal)\r\n\r\n    --end\r\n\r\n    --if #newAnimals >= 1 then self:addCluster(newAnimals) end\r\n\r\n    for _, animal in pairs(animals) do self:addCluster(animal) end\r\n\r\nend\r\n\r\nPlaceableHusbandryAnimals.addAnimals = Utils.overwrittenFunction(PlaceableHusbandryAnimals.addAnimals, RealisticLivestock_PlaceableHusbandryAnimals.addAnimals)\r\n\r\n\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryAnimals:onDayChanged()\r\n\r\n    local minTemp =  math.floor(g_currentMission.environment.weather.temperatureUpdater.currentMin)\r\n\r\n    local environment = g_currentMission.environment\r\n    local month = environment.currentPeriod + 2\r\n    local currentDayInPeriod = environment.currentDayInPeriod\r\n\r\n    if month > 12 then month = month - 12 end\r\n\r\n    local daysPerPeriod = environment.daysPerPeriod\r\n    local day = 1 + math.floor((currentDayInPeriod - 1) * (RealisticLivestock.DAYS_PER_MONTH[month] / daysPerPeriod))\r\n    local year = environment.currentYear\r\n\r\n    local spec = self.spec_husbandryAnimals\r\n    local animals = spec.clusterSystem:getAnimals()\r\n\r\n    local totalChildren, deadParents, childrenToSell, childrenToSellMoney, lowHealthDeaths, oldAgeDeaths, randomDeaths, randomDeathsMoney = 0, 0, 0, 0, 0, 0, 0, 0\r\n\r\n    for _, animal in ipairs(animals) do\r\n\r\n        if animal.monthsSinceLastBirth == nil then\r\n            animal.monthsSinceLastBirth = 0\r\n        end\r\n\r\n        if animal.isParent == nil then\r\n            animal.isParent = false\r\n        end\r\n\r\n        local a, b, c, d, e, f, g, h = animal:onDayChanged(spec, self.isServer, day, month, year, currentDayInPeriod, daysPerPeriod)\r\n\r\n        totalChildren = totalChildren + a\r\n        deadParents = deadParents + b\r\n        childrenToSell = childrenToSell + c\r\n        childrenToSellMoney = childrenToSellMoney + d\r\n        lowHealthDeaths = lowHealthDeaths + e\r\n        oldAgeDeaths = oldAgeDeaths + f\r\n        randomDeaths = randomDeaths + g\r\n        randomDeathsMoney = randomDeathsMoney + h\r\n\r\n    end\r\n\r\n    if self.isServer then\r\n\r\n        if childrenToSell > 0 and childrenToSellMoney > 0 then\r\n            local farmIndex = spec:getOwnerFarmId()\r\n            local farm = g_farmManager:getFarmById(farmIndex)\r\n\r\n            --if self.isServer then\r\n                g_currentMission:addMoneyChange(childrenToSellMoney, farmIndex, MoneyType.SOLD_ANIMALS, true)\r\n            --else\r\n                --g_client:getServerConnection():sendEvent(MoneyChangeEvent.new(childrenToSellMoney, MoneyType.SOLD_ANIMALS, farmIndex))\r\n            --end\r\n\r\n            if farm ~= nil then\r\n                farm:changeBalance(childrenToSellMoney, MoneyType.SOLD_ANIMALS)\r\n            end\r\n        end\r\n\r\n        if randomDeaths > 0 then\r\n\r\n            local farmIndex = spec:getOwnerFarmId()\r\n            local farm = g_farmManager:getFarmById(farmIndex)\r\n\r\n            if randomDeathsMoney > 0 then\r\n\r\n                --if self.isServer then\r\n                    g_currentMission:addMoneyChange(randomDeathsMoney, farmIndex, MoneyType.SOLD_ANIMALS, true)\r\n                --else\r\n                    --g_client:getServerConnection():sendEvent(MoneyChangeEvent.new(randomDeathsMoney, MoneyType.SOLD_ANIMALS, farmIndex))\r\n                --end\r\n\r\n                if farm ~= nil then\r\n                    farm:changeBalance(randomDeathsMoney, MoneyType.SOLD_ANIMALS)\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n        \r\n        spec.aiAnimalManager:onDayChanged()\r\n\r\n    end\r\n\r\n    spec.minTemp = minTemp\r\n\r\n    if randomDeaths > 0 or oldAgeDeaths > 0 or lowHealthDeaths > 0 or deadParents > 0 or totalChildren > 0 then spec.clusterHusbandry:updateVisuals() end\r\n\r\n    self:raiseActive()\r\n\r\n    if self:getHasUnreadRLMessages() and g_localPlayer ~= nil and g_localPlayer.farmId == self:getOwnerFarmId() then\r\n\r\n        g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, string.format(g_i18n:getText(\"rl_ui_unreadMessages\"), self:getName()))\r\n\r\n    end\r\n\r\nend\r\n\r\nPlaceableHusbandryAnimals.onDayChanged = Utils.overwrittenFunction(PlaceableHusbandryAnimals.onDayChanged, RealisticLivestock_PlaceableHusbandryAnimals.onDayChanged)\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryAnimals:onPeriodChanged(_)\r\n\r\n    if self.isServer then\r\n\r\n\t\tlocal animals = self.spec_husbandryAnimals.clusterSystem:getClusters()\r\n        local totalTreatmentCost = 0\r\n\r\n        for _, animal in pairs(animals) do\r\n            local treatmentCost = animal:onPeriodChanged()\r\n            totalTreatmentCost = totalTreatmentCost + treatmentCost\r\n        end\r\n\r\n        if totalTreatmentCost > 0 then g_currentMission:addMoneyChange(totalTreatmentCost, self.spec_husbandryAnimals:getOwnerFarmId(), MoneyType.MEDICINE, true) end\r\n\r\n        g_diseaseManager:calculateTransmission(animals)\r\n\r\n    end\r\n\r\nend\r\n\r\nPlaceableHusbandryAnimals.onPeriodChanged = Utils.overwrittenFunction(PlaceableHusbandryAnimals.onPeriodChanged, RealisticLivestock_PlaceableHusbandryAnimals.onPeriodChanged)"
  },
  {
    "path": "src/animals/husbandry/placeables/RealisticLivestock_PlaceableHusbandryFood.lua",
    "content": "RealisticLivestock_PlaceableHusbandryFood = {}\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryFood.registerOverwrittenFunctions(placeable)\r\n\tSpecializationUtil.registerOverwrittenFunction(placeable, \"updateInputAndOutput\", PlaceableHusbandryFood.updateInputAndOutput)\r\nend\r\n\r\nPlaceableHusbandryFood.registerOverwrittenFunctions = Utils.appendedFunction(PlaceableHusbandryFood.registerOverwrittenFunctions, RealisticLivestock_PlaceableHusbandryFood.registerOverwrittenFunctions)\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryFood:onHusbandryAnimalsUpdate(superFunc, animals) end\r\n\r\nPlaceableHusbandryFood.onHusbandryAnimalsUpdate = Utils.overwrittenFunction(PlaceableHusbandryFood.onHusbandryAnimalsUpdate, RealisticLivestock_PlaceableHusbandryFood.onHusbandryAnimalsUpdate)\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryFood.onSettingChanged(name, state)\r\n\r\n    RealisticLivestock_PlaceableHusbandryFood[name] = state\r\n\r\nend\r\n\r\n\r\nfunction PlaceableHusbandryFood:updateInputAndOutput(superFunc, animals)\r\n\r\n    superFunc(self, animals)\r\n\r\n    local spec = self.spec_husbandryFood\r\n    spec.litersPerHour = 0\r\n\r\n    for _, animal in pairs(animals) do\r\n\r\n        local subType = animal:getSubType()\r\n\r\n        if subType ~= nil then\r\n\r\n            local food = subType.input.food\r\n\r\n            if food ~= nil then\r\n\r\n                spec.litersPerHour = spec.litersPerHour + animal:getInput(\"food\")\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/husbandry/placeables/RealisticLivestock_PlaceableHusbandryMilk.lua",
    "content": "RealisticLivestock_PlaceableHusbandryMilk = {}\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryMilk.registerOverwrittenFunctions(placeable)\r\n\tSpecializationUtil.registerOverwrittenFunction(placeable, \"updateInputAndOutput\", PlaceableHusbandryMilk.updateInputAndOutput)\r\nend\r\n\r\nPlaceableHusbandryMilk.registerOverwrittenFunctions = Utils.appendedFunction(PlaceableHusbandryMilk.registerOverwrittenFunctions, RealisticLivestock_PlaceableHusbandryMilk.registerOverwrittenFunctions)\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryMilk:onHusbandryAnimalsUpdate(_, _) end\r\n\r\nPlaceableHusbandryMilk.onHusbandryAnimalsUpdate = Utils.overwrittenFunction(PlaceableHusbandryMilk.onHusbandryAnimalsUpdate, RealisticLivestock_PlaceableHusbandryMilk.onHusbandryAnimalsUpdate)\r\n\r\n\r\nfunction PlaceableHusbandryMilk:updateInputAndOutput(superFunc, animals)\r\n\r\n    superFunc(self, animals)\r\n\r\n    local spec = self.spec_husbandryMilk\r\n\r\n    for fillType, _ in pairs(spec.litersPerHour) do\r\n        spec.litersPerHour[fillType] = 0\r\n    end\r\n\r\n    spec.activeFillTypes = {}\r\n\r\n    for _, animal in pairs(animals) do\r\n\r\n        local subType = animal:getSubType()\r\n\r\n        if subType ~= nil then\r\n\r\n            local milk = subType.output.milk\r\n\r\n            if milk ~= nil then\r\n\r\n                spec.litersPerHour[milk.fillType] = spec.litersPerHour[milk.fillType] + animal:getOutput(\"milk\")\r\n\r\n                table.addElement(spec.activeFillTypes, milk.fillType)\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/husbandry/placeables/RealisticLivestock_PlaceableHusbandryPallets.lua",
    "content": "RealisticLivestock_PlaceableHusbandryPallets = {}\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryPallets.registerOverwrittenFunctions(placeable)\r\n\tSpecializationUtil.registerOverwrittenFunction(placeable, \"updateInputAndOutput\", PlaceableHusbandryPallets.updateInputAndOutput)\r\nend\r\n\r\nPlaceableHusbandryPallets.registerOverwrittenFunctions = Utils.appendedFunction(PlaceableHusbandryPallets.registerOverwrittenFunctions, RealisticLivestock_PlaceableHusbandryPallets.registerOverwrittenFunctions)\r\n\r\n\r\nfunction RealisticLivestock_PlaceableHusbandryPallets:onHusbandryAnimalsUpdate(_, _) end\r\n\r\nPlaceableHusbandryPallets.onHusbandryAnimalsUpdate = Utils.overwrittenFunction(PlaceableHusbandryPallets.onHusbandryAnimalsUpdate, RealisticLivestock_PlaceableHusbandryPallets.onHusbandryAnimalsUpdate)\r\n\r\n\r\nfunction PlaceableHusbandryPallets:updateInputAndOutput(superFunc, animals)\r\n\r\n    superFunc(self, animals)\r\n\r\n    local spec = self.spec_husbandryPallets\r\n\r\n    for fillType, _ in pairs(spec.litersPerHour) do\r\n        spec.litersPerHour[fillType] = 0\r\n    end\r\n\r\n    spec.activeFillTypes = {}\r\n\r\n    for _, animal in pairs(animals) do\r\n\r\n        local subType = animal:getSubType()\r\n\r\n        if subType ~= nil then\r\n\r\n            local pallets = subType.output.pallets\r\n\r\n            if pallets ~= nil then\r\n\r\n                spec.litersPerHour[pallets.fillType] = spec.litersPerHour[pallets.fillType] + animal:getOutput(\"pallets\")\r\n\r\n                table.addElement(spec.activeFillTypes, pallets.fillType)\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/AnimalItemNew.lua",
    "content": "AnimalItemNew = {}\r\nlocal animalItemNew_mt = Class(AnimalItemNew)\r\n\r\n\r\nfunction AnimalItemNew.new(animal)\r\n\r\n\tlocal self = setmetatable({}, animalItemNew_mt)\r\n\r\n\tlocal animalSystem = g_currentMission.animalSystem\r\n\r\n\tself.animal = animal\r\n\tself.visual = animalSystem:getVisualByAge(animal.subTypeIndex, animal.age)\r\n\r\n\tlocal subType = animal:getSubType()\r\n\tlocal countryIndex = animal.birthday.country\r\n\r\n\tlocal breederQuality = animalSystem:getFarmQuality(countryIndex, animal.farmId)\r\n\tlocal breederQualityString\r\n\r\n\tif breederQuality >= 1.65 then\r\n\t\tbreederQualityString = g_i18n:getText(\"rl_ui_genetics_extremelyGood\")\r\n\telseif breederQuality >= 1.4 then\r\n\t\tbreederQualityString = g_i18n:getText(\"rl_ui_genetics_veryGood\")\r\n\telseif breederQuality >= 1.1 then\r\n\t\tbreederQualityString = g_i18n:getText(\"rl_ui_genetics_good\")\r\n\telseif breederQuality >= 0.9 then\r\n\t\tbreederQualityString = g_i18n:getText(\"rl_ui_genetics_average\")\r\n\telseif breederQuality >= 0.7 then\r\n\t\tbreederQualityString = g_i18n:getText(\"rl_ui_genetics_bad\")\r\n\telseif breederQuality >= 0.35 then\r\n\t\tbreederQualityString = g_i18n:getText(\"rl_ui_genetics_veryBad\")\r\n\telse\r\n\t\tbreederQualityString = g_i18n:getText(\"rl_ui_genetics_extremelyBad\")\r\n\tend\r\n\r\n\tself.title = g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex)\r\n\tself.infos = {\r\n\t\t{\r\n\t\t\t[\"title\"] = g_i18n:getText(\"rl_ui_breederQuality\"),\r\n\t\t\t[\"value\"] = breederQualityString\r\n\t\t},\r\n\t\t{\r\n\t\t\t[\"title\"] = g_i18n:getText(\"rl_ui_animalOrigin\"),\r\n\t\t\t[\"value\"] = RealisticLivestock.AREA_CODES[countryIndex].country\r\n\t\t},\r\n\t\t{\r\n\t\t\t[\"title\"] = g_i18n:getText(\"ui_age\"),\r\n\t\t\t[\"value\"] = g_i18n:formatNumMonth(animal.age)\r\n\t\t},\r\n\t\t{\r\n\t\t\t[\"title\"] = g_i18n:getText(\"rl_ui_weight\"),\r\n\t\t\t[\"value\"] = string.format(\"%.2fkg\", animal.weight)\r\n\t\t}\r\n\t}\r\n\r\n\tif animal.isPregnant then table.insert(self.infos, { [\"title\"] = g_i18n:getText(\"rl_ui_pregnant\"), [\"value\"] = g_i18n:getText(\"rl_ui_yes\") }) end\r\n\r\n\r\n\tlocal genetics = animal:getGenetics()\r\n\tlocal totalGenetics = 0\r\n\tlocal totalGeneticsValues = 0\r\n\r\n\tfor key, value in pairs(genetics) do\r\n\r\n\t\tif value == nil then continue end\r\n\r\n\t\tlocal qualityText\r\n\r\n\t\tif value >= 1.65 then\r\n\t\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_extremelyHigh\")\r\n\t\telseif value >= 1.4 then\r\n\t\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_veryHigh\")\r\n\t\telseif value >= 1.1 then\r\n\t\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_high\")\r\n\t\telseif value >= 0.9 then\r\n\t\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_average\")\r\n\t\telseif value >= 0.7 then\r\n\t\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_low\")\r\n\t\telseif value >= 0.35 then\r\n\t\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_veryLow\")\r\n\t\telse\r\n\t\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_extremelyLow\")\r\n\t\tend\r\n\r\n\t\tlocal keyText = key\r\n\r\n\t\tif key == \"productivity\" then\r\n\t\t\tif animal.animalTypeIndex == AnimalType.COW then\r\n\t\t\t\tkeyText = \"milk\"\r\n\t\t\telseif animal.animalTypeIndex == AnimalType.SHEEP then\r\n\t\t\t\tkeyText = \"wool\"\r\n\t\t\telseif animal.animalTypeIndex == AnimalType.CHICKEN then\r\n\t\t\t\tkeyText = \"eggs\"\r\n\t\t\tend\r\n\t\telseif key == \"quality\" then\r\n\t\t\tkeyText = \"meat\"\r\n\t\tend\r\n\r\n\t\ttable.insert(self.infos, { [\"title\"] = g_i18n:getText(\"rl_ui_\" .. keyText), [\"value\"] = qualityText, [\"colour\"] = { 1 - value / 1.75, value / 1.75, 0 } })\r\n\t\ttotalGenetics = totalGenetics + 1\r\n\t\ttotalGeneticsValues = totalGeneticsValues + value\r\n\r\n\tend\r\n\r\n\r\n\tlocal averageGenetics = totalGeneticsValues / totalGenetics\r\n\r\n    if averageGenetics >= 1.65 then\r\n\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_extremelyGood\")\r\n\telseif averageGenetics >= 1.4 then\r\n\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_veryGood\")\r\n\telseif averageGenetics >= 1.1 then\r\n\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_good\")\r\n\telseif averageGenetics >= 0.9 then\r\n\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_average\")\r\n\telseif averageGenetics >= 0.7 then\r\n\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_bad\")\r\n\telseif averageGenetics >= 0.35 then\r\n\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_veryBad\")\r\n\telse\r\n\t\tqualityText = g_i18n:getText(\"rl_ui_genetics_extremelyBad\")\r\n\tend\r\n\r\n\r\n\ttable.insert(self.infos, { [\"title\"] = g_i18n:getText(\"rl_ui_overall\"), [\"value\"] = qualityText, [\"colour\"] = { 1 - averageGenetics / 1.75, averageGenetics / 1.75, 0 } })\r\n\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getName()\r\n\r\n\tlocal animal = self.animal\r\n\r\n\treturn animal.name or string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[animal.birthday.country].code, animal.farmId, animal.uniqueId)\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getTitle()\r\n\r\n\treturn self.title\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getPrice()\r\n\r\n\treturn self.animal:getSellPrice() * 1.075\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getTranportationFee(_)\r\n\r\n\treturn g_currentMission.animalSystem:getAnimalTransportFee(self.animal.subTypeIndex, self.animal.age)\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getSubTypeIndex()\r\n\r\n\treturn self.animal.subTypeIndex\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getAge()\r\n\r\n\treturn self.animal.age\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getDescription()\r\n\r\n\treturn self.visual.store.description\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getFilename()\r\n\r\n\treturn self.visual.store.imageFilename\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getInfos()\r\n\r\n\treturn self.infos\r\n\r\nend\r\n\r\n\r\nfunction AnimalItemNew:getHasAnyDisease()\r\n\r\n\treturn self.animal:getHasAnyDisease()\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/RealisticLivestock_AnimalItemStock.lua",
    "content": "RealisticLivestock_AnimalItemStock = {}\r\nlocal mt = Class(AnimalItemStock)\r\n\r\nfunction RealisticLivestock_AnimalItemStock:getClusterId(_)\r\n    return self.cluster.isIndividual == nil and self.cluster.id or (self.cluster.farmId .. \" \" .. self.cluster.uniqueId .. \" \" .. self.cluster.birthday.country)\r\nend\r\n\r\nAnimalItemStock.getClusterId = Utils.overwrittenFunction(AnimalItemStock.getClusterId, RealisticLivestock_AnimalItemStock.getClusterId)\r\n\r\n\r\nfunction RealisticLivestock_AnimalItemStock.new(animal)\r\n\r\n    local self = setmetatable({}, mt)\r\n\r\n    self.cluster = animal\r\n\tself.visual = g_currentMission.animalSystem:getVisualByAge(animal.subTypeIndex, animal:getAge())\r\n\tlocal subType = g_currentMission.animalSystem:getSubTypeByIndex(animal.subTypeIndex)\r\n\tself.title = g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex)\r\n\r\n\tlocal hasMonitor = animal.monitor.active or animal.monitor.removed\r\n\t\r\n\tself.infos = {\r\n\t\t{\r\n\t\t\ttitle = g_i18n:getText(\"ui_age\"),\r\n\t\t\tvalue = g_i18n:formatNumMonth(animal:getAge())\r\n\t\t}\r\n\t}\r\n\r\n\tif hasMonitor then\r\n\r\n\t\ttable.insert(self.infos, {\r\n\t\t\ttitle = g_i18n:getText(\"ui_horseHealth\"),\r\n\t\t\tvalue = string.format(\"%.f%%\", animal:getHealthFactor() * 100)\r\n\t\t})\r\n\r\n\tend\r\n\t\r\n\tif subType.supportsReproduction and animal.reproduction > 0 and animal:getAge() >= subType.reproductionMinAgeMonth then\r\n\t\tlocal newInfo = {\r\n\t\t\ttitle = g_i18n:getText(\"infohud_reproductionStatus\"),\r\n\t\t\tvalue = string.format(\"%.f%%\", animal:getReproductionFactor() * 100)\r\n\t\t}\r\n\t\ttable.insert(self.infos, newInfo)\r\n\tend\r\n\r\n\tif animal.isIndividual then\r\n\r\n\t\tlocal yes = g_i18n:getText(\"rl_ui_yes\")\r\n\t\tlocal no = g_i18n:getText(\"rl_ui_no\")\r\n\r\n\t\tif subType.supportsReproduction and animal.reproduction <= 0 then\r\n\r\n\t\t\tlocal valueText = nil\r\n\t\t\tlocal healthFactor = animal:getHealthFactor()\r\n\r\n            if animal.age < subType.reproductionMinAgeMonth then\r\n                valueText = g_i18n:getText(\"rl_ui_tooYoung\")\r\n            elseif animal.isParent and animal.monthsSinceLastBirth <= 2 then\r\n                valueText = g_i18n:getText(\"rl_ui_recoveringLastBirth\")\r\n            elseif not RealisticLivestock.hasMaleAnimalInPen(animal.clusterSystem, animal.subType, animal) then\r\n                valueText = g_i18n:getText(\"rl_ui_noMaleAnimal\")\r\n            elseif healthFactor < subType.reproductionMinHealth then\r\n                valueText = g_i18n:getText(\"rl_ui_unhealthy\")\r\n            end\r\n\r\n            if valueText ~= nil then\r\n\t\t\t\ttable.insert(self.infos, {\r\n\t\t\t\t\ttitle = g_i18n:getText(\"rl_ui_canReproduce\"),\r\n\t\t\t\t\tvalue = valueText\r\n\t\t\t\t})\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\r\n\t\tlocal pregnancy = animal.pregnancy\r\n\r\n        if pregnancy ~= nil and pregnancy.pregnancies and #pregnancy.pregnancies > 0 then\r\n\r\n            table.insert(self.infos, { [\"title\"] = g_i18n:getText(\"rl_ui_pregnancyExpecting\"), [\"value\"] = string.format(\"%s %s\", #pregnancy.pregnancies, g_i18n:getText(\"rl_ui_pregnancy\" .. (#pregnancy.pregnancies == 1 and \"Baby\" or \"Babies\"))) })\r\n            table.insert(self.infos, { [\"title\"] = g_i18n:getText(\"rl_ui_pregnancyExpected\"), [\"value\"] = string.format(\"%s/%s/%s\", pregnancy.expected.day, pregnancy.expected.month, pregnancy.expected.year + RealisticLivestock.START_YEAR.FULL) })         \r\n\r\n\t\tend\r\n\r\n\t\tif hasMonitor then\r\n\r\n\t\t\ttable.insert(self.infos, {\r\n\t\t\t\ttitle = g_i18n:getText(\"rl_ui_weight\"),\r\n\t\t\t\tvalue = string.format(\"%.2f\", animal.weight or 50) .. \"kg\"\r\n\t\t\t})\r\n\t\t\r\n\t\t\ttable.insert(self.infos, {\r\n\t\t\t\ttitle = g_i18n:getText(\"rl_ui_targetWeight\"),\r\n\t\t\t\tvalue = string.format(\"%.2f\", animal.targetWeight or 50) .. \"kg\"\r\n\t\t\t})\r\n\t\t\r\n\t\t\tif animal.animalTypeIndex == AnimalType.COW and animal.gender == \"female\" and animal:getAge() >= subType.reproductionMinAgeMonth then\r\n\t\t\r\n\t\t\t\ttable.insert(self.infos, {\r\n\t\t\t\t\ttitle = g_i18n:getText(\"rl_ui_lactating\"),\r\n\t\t\t\t\tvalue = animal.isLactating and yes or no\r\n\t\t\t\t})\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif animal.gender == \"male\" and animal:getAge() >= subType.reproductionMinAgeMonth then\r\n\t\t\t\r\n\t\t\ttable.insert(self.infos, {\r\n\t\t\t\ttitle = g_i18n:getText(\"rl_ui_maleNumImpregnatable\"),\r\n\t\t\t\tvalue = animal:getNumberOfImpregnatableFemalesForMale() or 0\r\n\t\t\t})\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tif animal.animalTypeIndex == AnimalType.HORSE then\r\n\r\n\t\ttable.insert(self.infos, { [\"title\"] = g_i18n:getText(\"ui_horseFitness\"), [\"value\"] = string.format(\"%.f%%\", animal:getFitnessFactor() * 100) })\r\n\t\ttable.insert(self.infos, { [\"title\"] = g_i18n:getText(\"ui_horseDailyRiding\"), [\"value\"] = string.format(\"%.f%%\", animal:getRidingFactor() * 100) })\r\n\t\r\n\t\tif Platform.gameplay.needHorseCleaning then table.insert(self.infos, { [\"title\"] = g_i18n:getText(\"statistic_cleanliness\"), [\"value\"] = string.format(\"%.f%%\", (1 - animal:getDirtFactor()) * 100) }) end\r\n\r\n\tend\r\n\t\r\n\treturn self\r\nend\r\n\r\nAnimalItemStock.new = RealisticLivestock_AnimalItemStock.new\r\n\r\n\r\nfunction AnimalItemStock:getHasAnyDisease()\r\n\r\n\treturn self.cluster:getHasAnyDisease()\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/controllers/AnimalScreenBase.lua",
    "content": "RL_AnimalScreenBase = {}\r\n\r\nfunction RL_AnimalScreenBase:getTargetItems(_)\r\n    return self.targetItems\r\nend\r\n\r\nAnimalScreenBase.getTargetItems = Utils.overwrittenFunction(AnimalScreenBase.getTargetItems, RL_AnimalScreenBase.getTargetItems)\r\n\r\n\r\nfunction RL_AnimalScreenBase.sortAnimals(a, b)\r\n\r\n    if a.cluster == nil or b.cluster == nil then return true end\r\n\r\n    local aDisease, bDisease = a.cluster:getHasAnyDisease(), b.cluster:getHasAnyDisease()\r\n\r\n    if aDisease or bDisease then\r\n\r\n        if aDisease and not bDisease then return true end\r\n        if bDisease and not aDisease then return false end\r\n\r\n    end\r\n\r\n    if a.cluster.subTypeIndex == b.cluster.subTypeIndex then return a.cluster.age < b.cluster.age end\r\n\r\n    return a.cluster.subTypeIndex < b.cluster.subTypeIndex\r\n\r\nend\r\n\r\n\r\nfunction RL_AnimalScreenBase.sortSaleAnimals(a, b)\r\n\r\n    if a.animal == nil or b.animal == nil then return true end\r\n\r\n    local aDisease, bDisease = a.animal:getHasAnyDisease(), b.animal:getHasAnyDisease()\r\n\r\n    if aDisease or bDisease then\r\n\r\n        if aDisease and not bDisease then return true end\r\n        if bDisease and not aDisease then return false end\r\n\r\n    end\r\n\r\n    local aValue = a.animal:getSellPrice()\r\n    local bValue = b.animal:getSellPrice()\r\n\r\n    if a.animal.subTypeIndex == b.animal.subTypeIndex then\r\n\r\n        if aValue == bValue then return a.animal.age < b.animal.age end\r\n        \r\n        return aValue > bValue\r\n\r\n    end\r\n\r\n    return a.animal.subTypeIndex < b.animal.subTypeIndex\r\n\r\nend\r\n\r\n\r\nfunction RL_AnimalScreenBase:onAnimalsChanged(_)\r\n    if self.trailer == nil then return end\r\n    self:initItems()\r\n    self.animalsChangedCallback()\r\n    self.trailer:updateAnimals()\r\nend\r\n\r\nAnimalScreenTrailerFarm.onAnimalMovedToTrailer = Utils.appendedFunction(AnimalScreenTrailerFarm.onAnimalMovedToTrailer, RL_AnimalScreenBase.onAnimalsChanged)\r\nAnimalScreenTrailerFarm.onAnimalMovedToFarm = Utils.appendedFunction(AnimalScreenTrailerFarm.onAnimalMovedToFarm, RL_AnimalScreenBase.onAnimalsChanged)\r\nAnimalScreenTrailerFarm.onAnimalsChanged = Utils.appendedFunction(AnimalScreenTrailerFarm.onAnimalsChanged, RL_AnimalScreenBase.onAnimalsChanged)\r\nAnimalScreenDealerTrailer.onAnimalBought = Utils.appendedFunction(AnimalScreenDealerTrailer.onAnimalBought, RL_AnimalScreenBase.onAnimalsChanged)\r\nAnimalScreenDealerTrailer.onAnimalSold = Utils.appendedFunction(AnimalScreenDealerTrailer.onAnimalSold, RL_AnimalScreenBase.onAnimalsChanged)\r\nAnimalScreenDealerTrailer.onAnimalsChanged = Utils.appendedFunction(AnimalScreenDealerTrailer.onAnimalsChanged, RL_AnimalScreenBase.onAnimalsChanged)\r\nAnimalScreenTrailer.onAnimalLoadedToTrailer = Utils.appendedFunction(AnimalScreenTrailer.onAnimalLoadedToTrailer, RL_AnimalScreenBase.onAnimalsChanged)\r\nAnimalScreenTrailer.onAnimalsChanged = Utils.appendedFunction(AnimalScreenTrailer.onAnimalsChanged, RL_AnimalScreenBase.onAnimalsChanged)\r\n\r\n\r\nfunction AnimalScreenBase:setSourceBulkActionFinishedCallback(callback, target)\r\n\r\n    function self.sourceBulkActionFinished(error, text, indexes)\r\n\r\n        callback(target, error, text, indexes)\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreenBase:setTargetBulkActionFinishedCallback(callback, target)\r\n\r\n    function self.targetBulkActionFinished(error, text, indexes)\r\n\r\n        callback(target, error, text, indexes)\r\n\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/controllers/AnimalScreenDealer.lua",
    "content": "RL_AnimalScreenDealer = {}\r\n\r\n\r\nfunction RL_AnimalScreenDealer:initItems()\r\n\r\n    AnimalScreenDealer:superClass().initItems(self)\r\n\t\r\n    self.husbandries = {}\r\n\tself.targetHusbandries = {}\r\n\tself.targetAnimalTypes = {}\r\n\r\n    local placeables = g_currentMission.husbandrySystem:getPlaceablesByFarm()\r\n    local animalSystem = g_currentMission.animalSystem\r\n\r\n\tfor _, placeable in pairs(placeables) do\r\n\r\n\t\tlocal animalTypeIndex = placeable:getAnimalTypeIndex()\r\n\r\n\t\tif self.husbandries[animalTypeIndex] == nil then self.husbandries[animalTypeIndex] = {} end\r\n\r\n\t\tif placeable:getNumOfAnimals() > 0 then\r\n\r\n\t\t\ttable.insert(self.targetAnimalTypes, animalSystem:getTypeByIndex(animalTypeIndex))\r\n\t\t\ttable.insert(self.targetHusbandries, placeable)\r\n\r\n\t\tend\r\n\r\n\t\ttable.insert(self.husbandries[animalTypeIndex], placeable)\r\n\r\n\tend\r\n\r\n\ttable.sort(self.targetAnimalTypes, function(a, b) return a.typeIndex < b.typeIndex end)\r\n\t\r\n    table.sort(self.targetHusbandries, function(a, b) return a:getAnimalTypeIndex() < b:getAnimalTypeIndex() end)\r\n\r\nend\r\n\r\nAnimalScreenDealer.initItems = Utils.overwrittenFunction(AnimalScreenDealer.initItems, RL_AnimalScreenDealer.initItems)\r\n\r\n\r\nfunction RL_AnimalScreenDealer:setCurrentHusbandry(_, animalTypeIndex, index, isBuyMode)\r\n\r\n    if isBuyMode then\r\n\t\tlocal husbandries = self.husbandries[animalTypeIndex]\r\n\t\tlocal husbandry\r\n\t\tif husbandries == nil then\r\n\t\t\thusbandry = nil\r\n\t\telse\r\n\t\t\thusbandry = husbandries[index] or nil\r\n\t\tend\r\n\t\tself.husbandry = husbandry\r\n\telse\r\n\t\tself.husbandry = self.targetHusbandries[index]\r\n\tend\r\n\tself:initTargetItems()\r\n\r\nend\r\n\r\nAnimalScreenDealer.setCurrentHusbandry = Utils.overwrittenFunction(AnimalScreenDealer.setCurrentHusbandry, RL_AnimalScreenDealer.setCurrentHusbandry)\r\n\r\n\r\nfunction RL_AnimalScreenDealer:initTargetItems(_)\r\n\r\n    self.targetItems = {}\r\n    if self.husbandry == nil then return end\r\n    local animals = self.husbandry:getClusters()\r\n\r\n    if animals ~= nil then\r\n        for _, animal in pairs(animals) do\r\n            local item = AnimalItemStock.new(animal)\r\n            table.insert(self.targetItems, item)\r\n        end\r\n    end\r\n\r\n    table.sort(self.targetItems, RL_AnimalScreenBase.sortAnimals)\r\n\r\nend\r\n\r\nAnimalScreenDealer.initTargetItems = Utils.overwrittenFunction(AnimalScreenDealer.initTargetItems, RL_AnimalScreenDealer.initTargetItems)\r\n\r\n\r\n\r\nfunction RL_AnimalScreenDealer:initSourceItems(_)\r\n\r\n    self.sourceItems = {}\r\n\tlocal animalSystem = g_currentMission.animalSystem\r\n\tself.sourceAnimalTypes = animalSystem:getTypes()\r\n\r\n\tlocal animalTypes = {}\r\n\r\n\tif g_localPlayer == nil then return end\r\n\tlocal farm = g_localPlayer.farmId\r\n\r\n\tfor _, placeable in pairs(g_currentMission.placeableSystem.placeables) do\r\n\r\n\t\tif placeable.ownerFarmId == farm and placeable.spec_husbandryAnimals then\r\n\t\t\r\n\t\t\tlocal animalType = placeable.spec_husbandryAnimals:getAnimalTypeIndex()\r\n\t\t    animalTypes[animalType] = true\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\r\n\t--for i = #self.sourceAnimalTypes, 1, -1 do\r\n\r\n\t\t--local animalType = self.sourceAnimalTypes[i]\r\n\r\n\t\t--if not animalTypes[animalType.typeIndex] then table.remove(self.sourceAnimalTypes, i) end\r\n\r\n\t--end\r\n\r\n\tfor index, animalType in pairs(self.sourceAnimalTypes) do\r\n\r\n\t\tlocal animals = animalSystem:getSaleAnimalsByTypeIndex(animalType.typeIndex)\r\n    \r\n\t\tself.sourceItems[animalType.typeIndex] = {}\r\n\r\n\t\tfor _, animal in pairs(animals) do\r\n\t\t\tlocal item = AnimalItemNew.new(animal)\r\n\t\t\ttable.insert(self.sourceItems[animalType.typeIndex], item)\r\n\t\tend\r\n\r\n\t\ttable.sort(self.sourceItems[animalType.typeIndex], RL_AnimalScreenBase.sortSaleAnimals)\r\n\r\n\tend\r\n\r\nend\r\n\r\nAnimalScreenDealer.initSourceItems = Utils.overwrittenFunction(AnimalScreenDealer.initSourceItems, RL_AnimalScreenDealer.initSourceItems)\r\n\r\n\r\nfunction RL_AnimalScreenDealer:getSourceMaxNumAnimals(_, _)\r\n\r\n    return 1\r\n\r\nend\r\n\r\nAnimalScreenDealer.getSourceMaxNumAnimals = Utils.overwrittenFunction(AnimalScreenDealer.getSourceMaxNumAnimals, RL_AnimalScreenDealer.getSourceMaxNumAnimals)\r\n\r\n\r\nfunction RL_AnimalScreenDealer:applySource(_, animalTypeIndex, animalIndex)\r\n\r\n    if self.husbandry == nil then return false end\r\n\r\n    self.sourceAnimals = nil\r\n\r\n    local item = self.sourceItems[animalTypeIndex][animalIndex]\r\n    local husbandry = self.husbandry\r\n    local ownerFarmId = husbandry:getOwnerFarmId()\r\n\r\n    local price = -item:getPrice()\r\n\tlocal transportationFee = -item:getTranportationFee(1)\r\n\r\n    local errorCode = AnimalBuyEvent.validate(husbandry, item:getSubTypeIndex(), item:getAge(), 1, price, transportationFee, ownerFarmId)\r\n\r\n    if errorCode ~= nil then\r\n\t\tlocal error = AnimalScreenDealerFarm.BUY_ERROR_CODE_MAPPING[errorCode]\r\n\t\tself.errorCallback(g_i18n:getText(error.text))\r\n\t\treturn false\r\n\tend\r\n    \r\n\t--self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.BUYING))\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    self.sourceAnimals = { animal }\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.BUYING))\r\n    g_messageCenter:subscribe(AnimalBuyEvent, self.onAnimalBought, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalBuyEvent.new(husbandry, self.sourceAnimals, price, transportationFee))\r\n\r\n    --husbandry:getClusterSystem():addCluster(animal)\r\n    --g_currentMission:addMoney(price + transportationFee, ownerFarmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n    \r\n    --g_currentMission.animalSystem:removeSaleAnimal(animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n    --table.remove(self.sourceItems[animalTypeIndex], animalIndex)\r\n\r\n    --self.sourceActionFinished(nil, \"Animal bought successfully\")\r\n\r\n    return true\r\n\r\nend\r\n\r\nAnimalScreenDealer.applySource = Utils.overwrittenFunction(AnimalScreenDealer.applySource, RL_AnimalScreenDealer.applySource)\r\n\r\n\r\nfunction RL_AnimalScreenDealer:onAnimalBought(errorCode)\r\n\r\n    if errorCode == AnimalBuyEvent.BUY_SUCCESS and self.sourceAnimals ~= nil then\r\n\r\n        for _, animal in pairs(self.sourceAnimals) do g_currentMission.animalSystem:removeSaleAnimal(animal.animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId) end\r\n\r\n    end\r\n\r\nend\r\n\r\nAnimalScreenDealer.onAnimalBought = Utils.prependedFunction(AnimalScreenDealer.onAnimalBought, RL_AnimalScreenDealer.onAnimalBought)\r\n\r\n\r\nfunction RL_AnimalScreenDealer:applyTarget(_, animalTypeIndex, animalIndex)\r\n\r\n    if self.husbandry == nil then return false end\r\n\r\n    local item = self.targetItems[animalIndex]\r\n    local husbandry = self.husbandry\r\n    local ownerFarmId = husbandry:getOwnerFarmId()\r\n\r\n    local price = item:getPrice()\r\n\tlocal transportationFee = -item:getTranportationFee(1)\r\n\r\n    local errorCode = AnimalSellEvent.validate(husbandry, item:getClusterId(), 1, price, transportationFee)\r\n\r\n    if errorCode ~= nil then\r\n\t\tlocal error = AnimalScreenDealerFarm.SELL_ERROR_CODE_MAPPING[errorCode]\r\n\t\tself.errorCallback(g_i18n:getText(error.text))\r\n\t\treturn false\r\n\tend\r\n    \r\n\t--self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.BUYING))\r\n\r\n    local animal = item.animal or item.cluster\r\n    husbandry:getClusterSystem():removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n    g_currentMission:addMoney(price + transportationFee, ownerFarmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n    \r\n    g_currentMission.animalSystem:removeSaleAnimal(animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n    table.remove(self.targetItems, animalIndex)\r\n\r\n    self.targetActionFinished(nil, \"Animal sold successfully\")\r\n\r\n    return true\r\n\r\nend\r\n\r\nAnimalScreenDealer.applyTarget = Utils.overwrittenFunction(AnimalScreenDealer.applyTarget, RL_AnimalScreenDealer.applyTarget)\r\n\r\n\r\nfunction RL_AnimalScreenDealer:getSourcePrice(_, animalTypeIndex, animalIndex, _)\r\n\r\n    if self.sourceItems[animalTypeIndex] ~= nil then\r\n\r\n        local item = self.sourceItems[animalTypeIndex][animalIndex]\r\n\r\n        if item ~= nil then\r\n\r\n\t        local price = item:getPrice()\r\n\t        local transportationFee = item:getTranportationFee(1)\r\n\t        return true, price, transportationFee, price + transportationFee\r\n\r\n        end\r\n\r\n    end\r\n\r\n    return false, 0, 0, 0\r\n\r\nend\r\n\r\nAnimalScreenDealer.getSourcePrice = Utils.overwrittenFunction(AnimalScreenDealer.getSourcePrice, RL_AnimalScreenDealer.getSourcePrice)\r\n\r\n\r\nfunction AnimalScreenDealer:applySourceBulk(animalTypeIndex, items)\r\n\r\n    if self.husbandry == nil then return false end\r\n\r\n    self.sourceAnimals = {}\r\n\r\n    local husbandry = self.husbandry\r\n    local clusterSystem = husbandry:getClusterSystem()\r\n    local ownerFarmId = husbandry:getOwnerFarmId()\r\n\r\n    local sourceItems = self.sourceItems[animalTypeIndex]\r\n    --local indexesToRemove = {}\r\n    --local indexesToReturn = {}\r\n    local totalPrice = 0\r\n    local totalTransportPrice = 0\r\n    local totalBoughtAnimals = 0\r\n\r\n    for _, item in pairs(items) do\r\n\r\n        if sourceItems[item] ~= nil then\r\n\r\n            local sourceItem = sourceItems[item]\r\n            local animal = sourceItem.animal\r\n            local price = -sourceItem:getPrice()\r\n            local transportationFee = -sourceItem:getTranportationFee(1)\r\n\r\n            local errorCode = AnimalBuyEvent.validate(husbandry, animal.subTypeIndex, animal.age, 1, price, transportationFee, ownerFarmId)\r\n\r\n            if errorCode ~= nil then continue end\r\n    \r\n            totalBoughtAnimals = totalBoughtAnimals + 1\r\n            totalPrice = totalPrice + price\r\n            totalTransportPrice = totalTransportPrice + transportationFee\r\n\r\n            table.insert(self.sourceAnimals, animal)\r\n            \r\n            --clusterSystem:addCluster(animal)\r\n            --g_currentMission.animalSystem:removeSaleAnimal(animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n            --table.insert(indexesToRemove, item)\r\n            --table.insert(indexesToReturn, item)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    --table.sort(indexesToRemove)\r\n\r\n    --for i = #indexesToRemove, 1, -1 do table.remove(sourceItems, indexesToRemove[i]) end\r\n\r\n    --self.sourceItems[animalTypeIndex] = sourceItems\r\n\r\n    --g_currentMission:addMoney(totalPrice, ownerFarmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n\r\n    --self.sourceBulkActionFinished(nil, string.format(g_i18n:getText(\"rl_ui_buyBulkResult\"), totalBoughtAnimals, g_i18n:formatMoney(math.abs(totalPrice), 2, true, true)), indexesToReturn)\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.BUYING))\r\n    g_messageCenter:subscribe(AnimalBuyEvent, self.onAnimalBought, self)\r\n    g_client:getServerConnection():sendEvent(AnimalBuyEvent.new(husbandry, self.sourceAnimals, totalPrice, totalTransportPrice))\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreenDealer:applyTargetBulk(animalTypeIndex, items)\r\n\r\n    if self.husbandry == nil then return false end\r\n\r\n    self.targetAnimals = {}\r\n\r\n    local husbandry = self.husbandry\r\n    local clusterSystem = husbandry:getClusterSystem()\r\n    local ownerFarmId = husbandry:getOwnerFarmId()\r\n\r\n    local targetItems = self.targetItems\r\n    --local indexesToRemove = {}\r\n    --local indexesToReturn = {}\r\n    local totalPrice = 0\r\n    local totalTransportPrice = 0\r\n    local totalSoldAnimals = 0\r\n\r\n    for _, item in pairs(items) do\r\n\r\n        if targetItems[item] ~= nil then\r\n\r\n            local targetItem = targetItems[item]\r\n            local animal = targetItem.animal or targetItem.cluster\r\n            local price = targetItem:getPrice()\r\n            local transportationFee = -targetItem:getTranportationFee(1)\r\n\r\n            local errorCode = AnimalSellEvent.validate(husbandry, targetItem:getClusterId(), 1, price, transportationFee)\r\n\r\n            if errorCode ~= nil then continue end\r\n    \r\n            totalSoldAnimals = totalSoldAnimals + 1\r\n            totalPrice = totalPrice + price\r\n            totalTransportPrice = totalTransportPrice + transportationFee\r\n\r\n            table.insert(self.targetAnimals, animal)\r\n            \r\n            --clusterSystem:removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n\r\n            --table.insert(indexesToRemove, item)\r\n            --table.insert(indexesToReturn, item)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    --table.sort(indexesToRemove)\r\n\r\n    --for i = #indexesToRemove, 1, -1 do table.remove(targetItems, indexesToRemove[i]) end\r\n\r\n    --self.targetItems = targetItems\r\n\r\n    --g_currentMission:addMoney(totalPrice, ownerFarmId, MoneyType.SOLD_ANIMALS, true, true)\r\n\r\n    --self.targetBulkActionFinished(nil, string.format(g_i18n:getText(\"rl_ui_sellBulkResult\"), totalSoldAnimals, g_i18n:formatMoney(math.abs(totalPrice), 2, true, true)), indexesToReturn)\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.SELLING))\r\n    g_messageCenter:subscribe(AnimalSellEvent, self.onAnimalSold, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalSellEvent.new(husbandry, self.targetAnimals, totalPrice, totalTransportPrice))\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/controllers/AnimalScreenDealerFarm.lua",
    "content": "RL_AnimalScreenDealerFarm = {}\r\n\r\nfunction RL_AnimalScreenDealerFarm:initTargetItems(_)\r\n\r\n    self.targetItems = {}\r\n    local animals = self.husbandry:getClusters()\r\n\r\n    if animals ~= nil then\r\n        for _, animal in pairs(animals) do\r\n            local item = AnimalItemStock.new(animal)\r\n            table.insert(self.targetItems, item)\r\n        end\r\n    end\r\n\r\n    table.sort(self.targetItems, RL_AnimalScreenBase.sortAnimals)\r\n\r\nend\r\n\r\nAnimalScreenDealerFarm.initTargetItems = Utils.overwrittenFunction(AnimalScreenDealerFarm.initTargetItems, RL_AnimalScreenDealerFarm.initTargetItems)\r\n\r\n\r\nfunction RL_AnimalScreenDealerFarm:initSourceItems(_)\r\n\r\n    local animalTypeIndex = self.husbandry:getAnimalTypeIndex()\r\n    local animals = g_currentMission.animalSystem:getSaleAnimalsByTypeIndex(animalTypeIndex)\r\n    \r\n    self.sourceItems = { [animalTypeIndex] = {} }\r\n\r\n    for _, animal in pairs(animals) do\r\n        local item = AnimalItemNew.new(animal)\r\n        table.insert(self.sourceItems[animalTypeIndex], item)\r\n    end\r\n\r\n    table.sort(self.sourceItems[animalTypeIndex], RL_AnimalScreenBase.sortSaleAnimals)\r\n\r\nend\r\n\r\nAnimalScreenDealerFarm.initSourceItems = Utils.overwrittenFunction(AnimalScreenDealerFarm.initSourceItems, RL_AnimalScreenDealerFarm.initSourceItems)\r\n\r\n\r\nfunction RL_AnimalScreenDealerFarm:getSourceMaxNumAnimals(_, _)\r\n\r\n    return 1\r\n\r\nend\r\n\r\nAnimalScreenDealerFarm.getSourceMaxNumAnimals = Utils.overwrittenFunction(AnimalScreenDealerFarm.getSourceMaxNumAnimals, RL_AnimalScreenDealerFarm.getSourceMaxNumAnimals)\r\n\r\n\r\nfunction RL_AnimalScreenDealerFarm:applySource(_, animalTypeIndex, animalIndex)\r\n\r\n    self.sourceAnimals = nil\r\n\r\n    local item = self.sourceItems[animalTypeIndex][animalIndex]\r\n    local husbandry = self.husbandry\r\n    local ownerFarmId = husbandry:getOwnerFarmId()\r\n\r\n    local price = -item:getPrice()\r\n\tlocal transportationFee = -item:getTranportationFee(1)\r\n\r\n    local errorCode = AnimalBuyEvent.validate(husbandry, item:getSubTypeIndex(), item:getAge(), 1, price, transportationFee, ownerFarmId)\r\n\r\n    if errorCode ~= nil then\r\n\t\tlocal error = AnimalScreenDealerFarm.BUY_ERROR_CODE_MAPPING[errorCode]\r\n\t\tself.errorCallback(g_i18n:getText(error.text))\r\n\t\treturn false\r\n\tend\r\n\r\n    local animal = item.animal\r\n\r\n    self.sourceAnimals = { animal }\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.BUYING))\r\n    g_messageCenter:subscribe(AnimalBuyEvent, self.onAnimalBought, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalBuyEvent.new(husbandry, self.sourceAnimals, price, transportationFee))\r\n\r\n    --husbandry:getClusterSystem():addCluster(animal)\r\n   -- g_currentMission:addMoney(price + transportationFee, ownerFarmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n    \r\n    --g_currentMission.animalSystem:removeSaleAnimal(animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n    --table.remove(self.sourceItems[animalTypeIndex], animalIndex)\r\n\r\n    --self.sourceActionFinished(nil, \"Animal bought successfully\")\r\n\r\n    self.husbandry:addRLMessage(\"BOUGHT_ANIMALS_SINGLE\", nil, { g_i18n:formatMoney(math.abs(price + transportationFee), 2, true, true) })\r\n\r\n    return true\r\n\r\nend\r\n\r\nAnimalScreenDealerFarm.applySource = Utils.overwrittenFunction(AnimalScreenDealerFarm.applySource, RL_AnimalScreenDealerFarm.applySource)\r\n\r\n\r\nfunction RL_AnimalScreenDealerFarm:onAnimalBought(errorCode)\r\n\r\n    if errorCode == AnimalBuyEvent.BUY_SUCCESS and self.sourceAnimals ~= nil then\r\n\r\n        for _, animal in pairs(self.sourceAnimals) do g_currentMission.animalSystem:removeSaleAnimal(animal.animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId) end\r\n\r\n    end\r\n\r\nend\r\n\r\nAnimalScreenDealerFarm.onAnimalBought = Utils.prependedFunction(AnimalScreenDealerFarm.onAnimalBought, RL_AnimalScreenDealerFarm.onAnimalBought)\r\n\r\n\r\nfunction RL_AnimalScreenDealerFarm:applyTarget(_, animalTypeIndex, animalIndex)\r\n\r\n    self.targetAnimals = nil\r\n\r\n    local item = self.targetItems[animalIndex]\r\n    local husbandry = self.husbandry\r\n    local ownerFarmId = husbandry:getOwnerFarmId()\r\n\r\n    local price = item:getPrice()\r\n\tlocal transportationFee = -item:getTranportationFee(1)\r\n\r\n    --local errorCode = AnimalSellEvent.validate(husbandry, item:getClusterId(), 1, price, transportationFee)\r\n\r\n    --if errorCode ~= nil then\r\n\t\t--local error = AnimalScreenDealerFarm.SELL_ERROR_CODE_MAPPING[errorCode]\r\n\t\t--self.errorCallback(g_i18n:getText(error.text))\r\n\t\t--return false\r\n\t--end\r\n    \r\n\t--self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.BUYING))\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_TARGET, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.SELLING))\r\n\r\n    self.targetAnimals = { animal }\r\n\r\n    g_messageCenter:subscribe(AnimalSellEvent, self.onAnimalSold, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalSellEvent.new(husbandry, self.targetAnimals, price, transportationFee))\r\n    \r\n    --husbandry:getClusterSystem():removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n    --g_currentMission:addMoney(price + transportationFee, ownerFarmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n    \r\n    --g_currentMission.animalSystem:removeSaleAnimal(animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n    --table.remove(self.targetItems, animalIndex)\r\n\r\n    --self.targetActionFinished(nil, \"Animal sold successfully\")\r\n\r\n    self.husbandry:addRLMessage(\"SOLD_ANIMALS_SINGLE\", nil, { g_i18n:formatMoney(price + transportationFee, 2, true, true) })\r\n\r\n    return true\r\n\r\nend\r\n\r\nAnimalScreenDealerFarm.applyTarget = Utils.overwrittenFunction(AnimalScreenDealerFarm.applyTarget, RL_AnimalScreenDealerFarm.applyTarget)\r\n\r\n\r\nfunction RL_AnimalScreenDealerFarm:getSourcePrice(_, animalTypeIndex, animalIndex, _)\r\n\r\n    if self.sourceItems[animalTypeIndex] ~= nil then\r\n\r\n        local item = self.sourceItems[animalTypeIndex][animalIndex]\r\n\r\n        if item ~= nil then\r\n\r\n\t        local price = item:getPrice()\r\n\t        local transportationFee = item:getTranportationFee(1)\r\n\t        return true, price, transportationFee, price + transportationFee\r\n\r\n        end\r\n\r\n    end\r\n\r\n    return false, 0, 0, 0\r\n\r\nend\r\n\r\nAnimalScreenDealerFarm.getSourcePrice = Utils.overwrittenFunction(AnimalScreenDealerFarm.getSourcePrice, RL_AnimalScreenDealerFarm.getSourcePrice)\r\n\r\n\r\nfunction AnimalScreenDealerFarm:applySourceBulk(animalTypeIndex, items)\r\n\r\n    self.sourceAnimals = {}\r\n\r\n    local husbandry = self.husbandry\r\n    local clusterSystem = husbandry:getClusterSystem()\r\n    local ownerFarmId = husbandry:getOwnerFarmId()\r\n\r\n    local sourceItems = self.sourceItems[animalTypeIndex]\r\n    --local indexesToRemove = {}\r\n    --local indexesToReturn = {}\r\n    local totalPrice = 0\r\n    local totalTransportPrice = 0\r\n    local totalBoughtAnimals = 0\r\n\r\n    for _, item in pairs(items) do\r\n\r\n        if sourceItems[item] ~= nil then\r\n\r\n            local sourceItem = sourceItems[item]\r\n            local animal = sourceItem.animal\r\n            local price = -sourceItem:getPrice()\r\n            local transportationFee = -sourceItem:getTranportationFee(1)\r\n\r\n            local errorCode = AnimalBuyEvent.validate(husbandry, animal.subTypeIndex, animal.age, 1, price, transportationFee, ownerFarmId)\r\n\r\n            if errorCode ~= nil then continue end\r\n    \r\n            totalBoughtAnimals = totalBoughtAnimals + 1\r\n            totalPrice = totalPrice + price\r\n            totalTransportPrice = totalTransportPrice + transportationFee\r\n\r\n            table.insert(self.sourceAnimals, animal)\r\n            --clusterSystem:addCluster(animal)\r\n            --g_currentMission.animalSystem:removeSaleAnimal(animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n            --table.insert(indexesToRemove, item)\r\n            --table.insert(indexesToReturn, item)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    --table.sort(indexesToRemove)\r\n\r\n    --for i = #indexesToRemove, 1, -1 do table.remove(sourceItems, indexesToRemove[i]) end\r\n\r\n   -- self.sourceItems[animalTypeIndex] = sourceItems\r\n\r\n   --g_currentMission:addMoney(totalPrice, ownerFarmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n\r\n   --self.sourceBulkActionFinished(nil, string.format(g_i18n:getText(\"rl_ui_buyBulkResult\"), totalBoughtAnimals, g_i18n:formatMoney(math.abs(totalPrice), 2, true, true)), indexesToReturn)\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.BUYING))\r\n    g_messageCenter:subscribe(AnimalBuyEvent, self.onAnimalBought, self)\r\n    g_client:getServerConnection():sendEvent(AnimalBuyEvent.new(husbandry, self.sourceAnimals, totalPrice, totalTransportPrice))\r\n\r\n    if totalBoughtAnimals == 1 then\r\n        self.husbandry:addRLMessage(\"BOUGHT_ANIMALS_SINGLE\", nil, { g_i18n:formatMoney(math.abs(totalPrice + totalTransportPrice), 2, true, true) })\r\n    elseif totalBoughtAnimals > 0 then\r\n        self.husbandry:addRLMessage(\"BOUGHT_ANIMALS_MULTIPLE\", nil, { totalBoughtAnimals, g_i18n:formatMoney(math.abs(totalPrice + totalTransportPrice), 2, true, true) })\r\n    end\r\n    \r\nend\r\n\r\n\r\nfunction AnimalScreenDealerFarm:applyTargetBulk(animalTypeIndex, items)\r\n\r\n    self.targetAnimals = {}\r\n\r\n    local husbandry = self.husbandry\r\n    local clusterSystem = husbandry:getClusterSystem()\r\n    local ownerFarmId = husbandry:getOwnerFarmId()\r\n\r\n    local targetItems = self.targetItems\r\n    local indexesToRemove = {}\r\n    local indexesToReturn = {}\r\n    local totalPrice = 0\r\n    local totalTransportPrice = 0\r\n    local totalSoldAnimals = 0\r\n\r\n    for _, item in pairs(items) do\r\n\r\n        if targetItems[item] ~= nil then\r\n\r\n            local targetItem = targetItems[item]\r\n            local animal = targetItem.animal or targetItem.cluster\r\n            local price = targetItem:getPrice()\r\n            local transportationFee = -targetItem:getTranportationFee(1)\r\n\r\n            local errorCode = AnimalSellEvent.validate(husbandry, targetItem:getClusterId(), 1, price, transportationFee)\r\n\r\n            if errorCode ~= nil then continue end\r\n    \r\n            totalSoldAnimals = totalSoldAnimals + 1\r\n            totalPrice = totalPrice + price\r\n            totalTransportPrice = totalTransportPrice + transportationFee\r\n\r\n            table.insert(self.targetAnimals, animal)\r\n\r\n            --clusterSystem:removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n\r\n            --table.insert(indexesToRemove, item)\r\n            --table.insert(indexesToReturn, item)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    --table.sort(indexesToRemove)\r\n\r\n    --for i = #indexesToRemove, 1, -1 do table.remove(targetItems, indexesToRemove[i]) end\r\n\r\n    --self.targetItems = targetItems\r\n\r\n    --g_currentMission:addMoney(totalPrice, ownerFarmId, MoneyType.SOLD_ANIMALS, true, true)\r\n\r\n    --self.targetBulkActionFinished(nil, string.format(g_i18n:getText(\"rl_ui_sellBulkResult\"), totalSoldAnimals, g_i18n:formatMoney(math.abs(totalPrice), 2, true, true)), indexesToReturn)\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.SELLING))\r\n    g_messageCenter:subscribe(AnimalSellEvent, self.onAnimalSold, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalSellEvent.new(husbandry, self.targetAnimals, totalPrice, totalTransportPrice))\r\n\r\n    if totalSoldAnimals == 1 then\r\n        self.husbandry:addRLMessage(\"SOLD_ANIMALS_SINGLE\", nil, { g_i18n:formatMoney(totalPrice + totalTransportPrice, 2, true, true) })\r\n    elseif totalSoldAnimals > 0 then\r\n        self.husbandry:addRLMessage(\"SOLD_ANIMALS_MULTIPLE\", nil, { totalSoldAnimals, g_i18n:formatMoney(totalPrice + totalTransportPrice, 2, true, true) })\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/controllers/AnimalScreenDealerTrailer.lua",
    "content": "RL_AnimalScreenDealerTrailer = {}\r\n\r\nfunction RL_AnimalScreenDealerTrailer:initTargetItems(_)\r\n\r\n    self.targetItems = {}\r\n    local animals = self.trailer:getClusters()\r\n\r\n    if animals ~= nil then\r\n        for _, animal in pairs(animals) do\r\n            local item = AnimalItemStock.new(animal)\r\n            table.insert(self.targetItems, item)\r\n        end\r\n    end\r\n\r\n    table.sort(self.targetItems, RL_AnimalScreenBase.sortAnimals)\r\n\r\nend\r\n\r\nAnimalScreenDealerTrailer.initTargetItems = Utils.overwrittenFunction(AnimalScreenDealerTrailer.initTargetItems, RL_AnimalScreenDealerTrailer.initTargetItems)\r\n\r\n\r\nfunction RL_AnimalScreenDealerTrailer:initSourceItems(_)\r\n\r\n    local animalSystem = g_currentMission.animalSystem\r\n    local animalType = self.trailer:getCurrentAnimalType()\r\n\r\n    if animalType == nil then\r\n\r\n        local animalTypes = animalSystem:getTypes()\r\n        self.sourceItems = {}\r\n\r\n        for _, type in pairs(animalTypes) do\r\n\r\n            local animalTypeIndex = type.typeIndex\r\n\r\n            if not self.trailer:getSupportsAnimalType(animalTypeIndex) then continue end\r\n\r\n            local animals = animalSystem:getSaleAnimalsByTypeIndex(animalTypeIndex)\r\n\r\n            for _, animal in pairs(animals) do\r\n\r\n                if self.sourceItems[animalTypeIndex] == nil then self.sourceItems[animalTypeIndex] = {} end\r\n\r\n                local item = AnimalItemNew.new(animal)\r\n                table.insert(self.sourceItems[animalTypeIndex], item)\r\n\r\n            end\r\n\r\n            if self.sourceItems[animalTypeIndex] ~= nil then table.sort(self.sourceItems[animalTypeIndex], RL_AnimalScreenBase.sortSaleAnimals) end\r\n\r\n        end\r\n\r\n        return\r\n\r\n    end\r\n\r\n    local animalTypeIndex = animalType.typeIndex\r\n    local animals = animalSystem:getSaleAnimalsByTypeIndex(animalTypeIndex)\r\n    \r\n    self.sourceItems = { [animalTypeIndex] = {} }\r\n\r\n    for _, animal in pairs(animals) do\r\n        local item = AnimalItemNew.new(animal)\r\n        table.insert(self.sourceItems[animalTypeIndex], item)\r\n    end\r\n\r\n    table.sort(self.sourceItems[animalTypeIndex], RL_AnimalScreenBase.sortSaleAnimals)\r\n\r\nend\r\n\r\nAnimalScreenDealerTrailer.initSourceItems = Utils.overwrittenFunction(AnimalScreenDealerTrailer.initSourceItems, RL_AnimalScreenDealerTrailer.initSourceItems)\r\n\r\n\r\nfunction RL_AnimalScreenDealerTrailer:getSourceAnimalTypes()\r\n\r\n    local currentAnimalType = self.trailer:getCurrentAnimalType()\r\n\r\n\tif currentAnimalType ~= nil then return { currentAnimalType } end\r\n\r\n\tlocal types = g_currentMission.animalSystem:getTypes()\r\n\tlocal sourceTypes = {}\r\n\r\n\tfor _, type in ipairs(types) do\r\n\t\tif self.trailer:getSupportsAnimalType(type.typeIndex) and self.sourceItems[type.typeIndex] ~= nil then table.insert(sourceTypes, type) end\r\n\tend\r\n\r\n\treturn sourceTypes\r\n\r\nend\r\n\r\nAnimalScreenDealerTrailer.getSourceAnimalTypes = Utils.overwrittenFunction(AnimalScreenDealerTrailer.getSourceAnimalTypes, RL_AnimalScreenDealerTrailer.getSourceAnimalTypes)\r\n\r\n\r\nfunction RL_AnimalScreenDealerTrailer:getSourceMaxNumAnimals(_, _)\r\n\r\n    return 1\r\n\r\nend\r\n\r\nAnimalScreenDealerTrailer.getSourceMaxNumAnimals = Utils.overwrittenFunction(AnimalScreenDealerTrailer.getSourceMaxNumAnimals, RL_AnimalScreenDealerTrailer.getSourceMaxNumAnimals)\r\n\r\n\r\nfunction RL_AnimalScreenDealerTrailer:applySource(_, animalTypeIndex, animalIndex)\r\n\r\n    self.sourceAnimals = nil\r\n\r\n    local item = self.sourceItems[animalTypeIndex][animalIndex]\r\n    local trailer = self.trailer\r\n    local ownerFarmId = trailer:getOwnerFarmId()\r\n\r\n    local price = -item:getPrice()\r\n\r\n    local errorCode = AnimalBuyEvent.validate(trailer, item:getSubTypeIndex(), item:getAge(), 1, price, 0, ownerFarmId)\r\n\r\n    if errorCode ~= nil then\r\n\t\tlocal error = AnimalScreenDealerFarm.BUY_ERROR_CODE_MAPPING[errorCode]\r\n\t\tself.errorCallback(g_i18n:getText(error.text))\r\n\t\treturn false\r\n\tend\r\n    \r\n\t--self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerTrailer.L10N_SYMBOL.BUYING))\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    self.sourceAnimals = { animal }\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.BUYING))\r\n    g_messageCenter:subscribe(AnimalBuyEvent, self.onAnimalBought, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalBuyEvent.new(trailer, self.sourceAnimals, price, 0))\r\n    \r\n    --trailer:getClusterSystem():addCluster(animal)\r\n    --g_currentMission:addMoney(price, ownerFarmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n    \r\n    --g_currentMission.animalSystem:removeSaleAnimal(animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n    --table.remove(self.sourceItems[animalTypeIndex], animalIndex)\r\n\r\n    --self.sourceActionFinished(nil, \"Animal bought successfully\")\r\n\r\n    return true\r\n\r\nend\r\n\r\nAnimalScreenDealerTrailer.applySource = Utils.overwrittenFunction(AnimalScreenDealerTrailer.applySource, RL_AnimalScreenDealerTrailer.applySource)\r\n\r\n\r\nfunction RL_AnimalScreenDealerTrailer:applyTarget(_, _, animalIndex)\r\n\r\n    self.targetAnimals = nil\r\n\r\n    local item = self.targetItems[animalIndex]\r\n    local trailer = self.trailer\r\n    local ownerFarmId = trailer:getOwnerFarmId()\r\n\r\n    local price = item:getPrice()\r\n\r\n    local errorCode = AnimalSellEvent.validate(trailer, item:getSubTypeIndex(), item:getAge(), 1, price, 0, ownerFarmId)\r\n\r\n    if errorCode ~= nil then\r\n\t\tlocal error = AnimalScreenDealerFarm.SELL_ERROR_CODE_MAPPING[errorCode]\r\n\t\tself.errorCallback(g_i18n:getText(error.text))\r\n\t\treturn false\r\n\tend\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    self.targetAnimals = { animal }\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_TARGET, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.SELLING))\r\n    g_messageCenter:subscribe(AnimalSellEvent, self.onAnimalSold, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalSellEvent.new(trailer, self.targetAnimals, price, 0))\r\n\r\n    return true\r\n\r\nend\r\n\r\nAnimalScreenDealerTrailer.applyTarget = Utils.overwrittenFunction(AnimalScreenDealerTrailer.applyTarget, RL_AnimalScreenDealerTrailer.applyTarget)\r\n\r\n\r\nfunction RL_AnimalScreenDealerTrailer:onAnimalBought(errorCode)\r\n\r\n    if errorCode == AnimalBuyEvent.BUY_SUCCESS and self.sourceAnimals ~= nil then\r\n\r\n        for _, animal in pairs(self.sourceAnimals) do g_currentMission.animalSystem:removeSaleAnimal(animal.animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId) end\r\n\r\n    end\r\n\r\nend\r\n\r\nAnimalScreenDealerTrailer.onAnimalBought = Utils.prependedFunction(AnimalScreenDealerTrailer.onAnimalBought, RL_AnimalScreenDealerTrailer.onAnimalBought)\r\n\r\n\r\nfunction RL_AnimalScreenDealerTrailer:getSourcePrice(_, animalTypeIndex, animalIndex, _)\r\n\r\n    if self.sourceItems[animalTypeIndex] ~= nil then\r\n\r\n        local item = self.sourceItems[animalTypeIndex][animalIndex]\r\n\r\n        if item ~= nil then\r\n\r\n\t        local price = item:getPrice()\r\n\t        return true, price, 0, price\r\n\r\n        end\r\n\r\n    end\r\n\r\n    return false, 0, 0, 0\r\n\r\nend\r\n\r\nAnimalScreenDealerTrailer.getSourcePrice = Utils.overwrittenFunction(AnimalScreenDealerTrailer.getSourcePrice, RL_AnimalScreenDealerTrailer.getSourcePrice)\r\n\r\n\r\nfunction AnimalScreenDealerTrailer:applySourceBulk(animalTypeIndex, items)\r\n\r\n    self.sourceAnimals = {}\r\n\r\n    local trailer = self.trailer\r\n    local clusterSystem = trailer:getClusterSystem()\r\n    local ownerFarmId = trailer:getOwnerFarmId()\r\n\r\n    local sourceItems = self.sourceItems[animalTypeIndex]\r\n    --local indexesToRemove = {}\r\n    --local indexesToReturn = {}\r\n    local totalPrice = 0\r\n    local totalBoughtAnimals = 0\r\n\r\n    for _, item in pairs(items) do\r\n\r\n        if sourceItems[item] ~= nil then\r\n\r\n            local sourceItem = sourceItems[item]\r\n            local animal = sourceItem.animal\r\n            local price = -sourceItem:getPrice()\r\n\r\n            local errorCode = AnimalBuyEvent.validate(trailer, animal.subTypeIndex, animal.age, 1, price, 0, ownerFarmId)\r\n\r\n            if errorCode ~= nil then continue end\r\n    \r\n            totalBoughtAnimals = totalBoughtAnimals + 1\r\n            totalPrice = totalPrice + price\r\n\r\n            table.insert(self.sourceAnimals, animal)\r\n            \r\n            --clusterSystem:addCluster(animal)\r\n            --g_currentMission.animalSystem:removeSaleAnimal(animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n            --table.insert(indexesToRemove, item)\r\n            --table.insert(indexesToReturn, item)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    --table.sort(indexesToRemove)\r\n\r\n    --for i = #indexesToRemove, 1, -1 do table.remove(sourceItems, indexesToRemove[i]) end\r\n\r\n    --self.sourceItems[animalTypeIndex] = sourceItems\r\n\r\n    --g_currentMission:addMoney(totalPrice, ownerFarmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n\r\n    --self.sourceBulkActionFinished(nil, string.format(g_i18n:getText(\"rl_ui_buyBulkResult\"), totalBoughtAnimals, g_i18n:formatMoney(math.abs(totalPrice), 2, true, true)), indexesToReturn)\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.BUYING))\r\n    g_messageCenter:subscribe(AnimalBuyEvent, self.onAnimalBought, self)\r\n    g_client:getServerConnection():sendEvent(AnimalBuyEvent.new(trailer, self.sourceAnimals, totalPrice, 0))\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreenDealerTrailer:applyTargetBulk(animalTypeIndex, items)\r\n\r\n    self.targetAnimals = {}\r\n\r\n    local trailer = self.trailer\r\n    local clusterSystem = trailer:getClusterSystem()\r\n    local ownerFarmId = trailer:getOwnerFarmId()\r\n\r\n    local targetItems = self.targetItems\r\n    --local indexesToRemove = {}\r\n    --local indexesToReturn = {}\r\n    local totalPrice = 0\r\n    local totalSoldAnimals = 0\r\n\r\n    for _, item in pairs(items) do\r\n\r\n        if targetItems[item] ~= nil then\r\n\r\n            local targetItem = targetItems[item]\r\n            local animal = targetItem.animal or targetItem.cluster\r\n            local price = targetItem:getPrice()\r\n\r\n            local errorCode = AnimalSellEvent.validate(trailer, targetItem:getClusterId(), 1, price, 0)\r\n\r\n            if errorCode ~= nil then continue end\r\n    \r\n            totalSoldAnimals = totalSoldAnimals + 1\r\n            totalPrice = totalPrice + price\r\n\r\n            table.insert(self.targetAnimals, animal)\r\n            \r\n            --clusterSystem:removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n            --table.insert(indexesToRemove, item)\r\n            --table.insert(indexesToReturn, item)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    --table.sort(indexesToRemove)\r\n\r\n    --for i = #indexesToRemove, 1, -1 do table.remove(targetItems, indexesToRemove[i]) end\r\n\r\n    --self.targetItems = targetItems\r\n\r\n    --g_currentMission:addMoney(totalPrice, ownerFarmId, MoneyType.SOLD_ANIMALS, true, true)\r\n\r\n    --self.targetBulkActionFinished(nil, string.format(g_i18n:getText(\"rl_ui_sellBulkResult\"), totalSoldAnimals, g_i18n:formatMoney(math.abs(totalPrice), 2, true, true)), indexesToReturn)\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenDealerFarm.L10N_SYMBOL.SELLING))\r\n    g_messageCenter:subscribe(AnimalSellEvent, self.onAnimalSold, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalSellEvent.new(trailer, self.targetAnimals, totalPrice, 0))\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/controllers/AnimalScreenTrailer.lua",
    "content": "RL_AnimalScreenTrailer = {}\r\n\r\nfunction RL_AnimalScreenTrailer:initTargetItems(_)\r\n\r\n    self.targetItems = {}\r\n    local animals = self.trailer:getClusters()\r\n\r\n    if animals ~= nil then\r\n        for _, animal in pairs(animals) do\r\n            local item = AnimalItemStock.new(animal)\r\n            table.insert(self.targetItems, item)\r\n        end\r\n    end\r\n\r\n    table.sort(self.targetItems, RL_AnimalScreenBase.sortAnimals)\r\n\r\nend\r\n\r\nAnimalScreenTrailer.initTargetItems = Utils.overwrittenFunction(AnimalScreenTrailer.initTargetItems, RL_AnimalScreenTrailer.initTargetItems)\r\n\r\n\r\nfunction RL_AnimalScreenTrailer:getApplySourceConfirmationText(_, animalTypeIndex, index, numAnimals)\r\n\r\n    --local text = numAnimals == 1 and g_i18n:getText(AnimalScreenTrailer.L10N_SYMBOL.CONFIRM_MOVE_TO_TRAILER_SINGULAR) or g_i18n:getText(AnimalScreenTrailer.L10N_SYMBOL.CONFIRM_MOVE_TO_TRAILER)\r\n    local text = \"Do you want to move %d animals to the trailer?\"\r\n\r\n\treturn string.format(text, numAnimals)\r\n\r\nend\r\n\r\nAnimalScreenTrailer.getApplySourceConfirmationText = Utils.overwrittenFunction(AnimalScreenTrailer.getApplySourceConfirmationText, RL_AnimalScreenTrailer.getApplySourceConfirmationText)"
  },
  {
    "path": "src/animals/shop/controllers/AnimalScreenTrailerFarm.lua",
    "content": "RL_AnimalScreenTrailerFarm = {}\r\n\r\nfunction RL_AnimalScreenTrailerFarm:initTargetItems(_)\r\n\r\n    self.targetItems = {}\r\n    local animals = self.husbandry:getClusters()\r\n\r\n    if animals ~= nil then\r\n        for _, animal in pairs(animals) do\r\n            local item = AnimalItemStock.new(animal)\r\n            table.insert(self.targetItems, item)\r\n        end\r\n    end\r\n\r\n    table.sort(self.targetItems, RL_AnimalScreenBase.sortAnimals)\r\n\r\nend\r\n\r\nAnimalScreenTrailerFarm.initTargetItems = Utils.overwrittenFunction(AnimalScreenTrailerFarm.initTargetItems, RL_AnimalScreenTrailerFarm.initTargetItems)\r\n\r\n\r\nfunction RL_AnimalScreenTrailerFarm:initSourceItems(_)\r\n\r\n    self.sourceItems = {}\r\n\r\n    local animalType = self.trailer:getCurrentAnimalType()\r\n    if animalType == nil then return end\r\n\r\n    local animals = self.trailer:getClusters()\r\n\r\n    if animals ~= nil then\r\n        for _, animal in pairs(animals) do\r\n            local item = AnimalItemStock.new(animal)\r\n\r\n            if self.sourceItems[animalType.typeIndex] == nil then self.sourceItems[animalType.typeIndex] = {} end\r\n\r\n            table.insert(self.sourceItems[animalType.typeIndex], item)\r\n        end\r\n    end\r\n\r\n\r\n    for _, category in pairs(self.sourceItems) do\r\n        table.sort(category, RL_AnimalScreenBase.sortAnimals)\r\n    end\r\n\r\nend\r\n\r\nAnimalScreenTrailerFarm.initSourceItems = Utils.overwrittenFunction(AnimalScreenTrailerFarm.initSourceItems, RL_AnimalScreenTrailerFarm.initSourceItems)\r\n\r\n\r\nfunction AnimalScreenTrailerFarm:applySourceBulk(animalTypeIndex, items)\r\n\r\n    self.sourceAnimals = {}\r\n\r\n    local trailer = self.trailer\r\n    local husbandry = self.husbandry\r\n    local clusterSystemTrailer = trailer:getClusterSystem()\r\n    local clusterSystemHusbandry = husbandry:getClusterSystem()\r\n    local ownerFarmId = trailer:getOwnerFarmId()\r\n\r\n    local sourceItems = self.sourceItems[animalTypeIndex]\r\n    --local indexesToRemove = {}\r\n    --local indexesToReturn = {}\r\n    local totalMovedAnimals = 0\r\n\r\n    for _, item in pairs(items) do\r\n\r\n        if sourceItems[item] ~= nil then\r\n\r\n            local sourceItem = sourceItems[item]\r\n            local animal = sourceItem.animal or sourceItem.cluster\r\n\r\n            --local errorCode = AnimalMoveEvent.validate(trailer, husbandry, sourceItem:getClusterId(), 1, ownerFarmId)\r\n            local errorCode = AnimalMoveEvent.validate(trailer, husbandry, ownerFarmId, animal.subTypeIndex)\r\n\r\n            if errorCode ~= nil then continue end\r\n    \r\n            totalMovedAnimals = totalMovedAnimals + 1\r\n            --clusterSystemTrailer:removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n            --animal.id, animal.idFull = nil, nil\r\n            --clusterSystemHusbandry:addCluster(animal)\r\n            --table.insert(indexesToRemove, item)\r\n            --table.insert(indexesToReturn, item)\r\n\r\n            table.insert(self.sourceAnimals, animal)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    --table.sort(indexesToRemove)\r\n\r\n    --for i = #indexesToRemove, 1, -1 do table.remove(sourceItems, indexesToRemove[i]) end\r\n\r\n    --self.sourceItems[animalTypeIndex] = sourceItems\r\n\r\n    --self.sourceBulkActionFinished(nil, string.format(g_i18n:getText(\"rl_ui_moveBulkResult\"), totalMovedAnimals), indexesToReturn)\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenTrailerFarm.L10N_SYMBOL.MOVE_TO_FARM))\r\n\tg_messageCenter:subscribe(AnimalMoveEvent, self.onAnimalMovedToFarm, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalMoveEvent.new(trailer, husbandry, self.sourceAnimals, \"TARGET\"))\r\n\r\n    if totalMovedAnimals == 1 then\r\n        husbandry:addRLMessage(\"MOVED_ANIMALS_TARGET_SINGLE\", nil, { trailer:getName() })\r\n    elseif totalMovedAnimals > 0 then\r\n        husbandry:addRLMessage(\"MOVED_ANIMALS_TARGET_MULTIPLE\", nil, { totalMovedAnimals, trailer:getName() })\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreenTrailerFarm:applyTargetBulk(animalTypeIndex, items)\r\n\r\n    self.targetAnimals = {}\r\n\r\n    local trailer = self.trailer\r\n    local husbandry = self.husbandry\r\n    local clusterSystemTrailer = trailer:getClusterSystem()\r\n    local clusterSystemHusbandry = husbandry:getClusterSystem()\r\n    local ownerFarmId = trailer:getOwnerFarmId()\r\n\r\n    local targetItems = self.targetItems\r\n    --local indexesToRemove = {}\r\n    --local indexesToReturn = {}\r\n    local totalMovedAnimals = 0\r\n\r\n    for _, item in pairs(items) do\r\n\r\n        if targetItems[item] ~= nil then\r\n\r\n            local targetItem = targetItems[item]\r\n            local animal = targetItem.animal or targetItem.cluster\r\n\r\n            --local errorCode = AnimalMoveEvent.validate(husbandry, trailer, targetItem:getClusterId(), 1, ownerFarmId)\r\n            local errorCode = AnimalMoveEvent.validate(husbandry, trailer, ownerFarmId, animal.subTypeIndex)\r\n\r\n            if errorCode ~= nil then continue end\r\n    \r\n            totalMovedAnimals = totalMovedAnimals + 1\r\n            --clusterSystemHusbandry:removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n            --animal.id, animal.idFull = nil, nil\r\n            --clusterSystemTrailer:addCluster(animal)\r\n            --table.insert(indexesToRemove, item)\r\n            --table.insert(indexesToReturn, item)\r\n\r\n            table.insert(self.targetAnimals, animal)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    --table.sort(indexesToRemove)\r\n\r\n    --for i = #indexesToRemove, 1, -1 do table.remove(targetItems, indexesToRemove[i]) end\r\n\r\n    --self.targetItems = targetItems\r\n\r\n    --self.targetBulkActionFinished(nil, string.format(g_i18n:getText(\"rl_ui_moveBulkResult\"), totalMovedAnimals), indexesToReturn)\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_TARGET, g_i18n:getText(AnimalScreenTrailerFarm.L10N_SYMBOL.MOVE_TO_TRAILER))\r\n\tg_messageCenter:subscribe(AnimalMoveEvent, self.onAnimalMovedToTrailer, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalMoveEvent.new(husbandry, trailer, self.targetAnimals, \"SOURCE\"))\r\n\r\n    if totalMovedAnimals == 1 then\r\n        husbandry:addRLMessage(\"MOVED_ANIMALS_SOURCE_SINGLE\", nil, { trailer:getName() })\r\n    elseif totalMovedAnimals > 0 then\r\n        husbandry:addRLMessage(\"MOVED_ANIMALS_SOURCE_MULTIPLE\", nil, { totalMovedAnimals, trailer:getName() })\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction RL_AnimalScreenTrailerFarm:applyTarget(_, _, animalIndex)\r\n\r\n    self.targetAnimals = nil\r\n\r\n    local trailer = self.trailer\r\n    local husbandry = self.husbandry\r\n    local clusterSystemTrailer = trailer:getClusterSystem()\r\n    local clusterSystemHusbandry = husbandry:getClusterSystem()\r\n    local ownerFarmId = trailer:getOwnerFarmId()\r\n    local item = self.targetItems[animalIndex]\r\n\r\n    local animal = item.animal or item.cluster\r\n    \r\n    local id = item:getClusterId()\r\n\t--local errorCode = AnimalMoveEvent.validate(husbandry, trailer, id, 1, ownerFarmId)\r\n\tlocal errorCode = AnimalMoveEvent.validate(husbandry, trailer, ownerFarmId, animal.subTypeIndex)\r\n\r\n    if errorCode ~= nil then\r\n\t\tself.errorCallback(g_i18n:getText(AnimalScreenTrailerFarm.MOVE_TO_TRAILER_ERROR_CODE_MAPPING[errorCode].text))\r\n\t\treturn false\r\n\tend\r\n\r\n    self.targetAnimals = { animal }\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_TARGET, g_i18n:getText(AnimalScreenTrailerFarm.L10N_SYMBOL.MOVE_TO_TRAILER))\r\n\tg_messageCenter:subscribe(AnimalMoveEvent, self.onAnimalMovedToTrailer, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalMoveEvent.new(husbandry, trailer, self.targetAnimals))\r\n\r\n    --clusterSystemHusbandry:removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n    --animal.id, animal.idFull = nil, nil\r\n    --clusterSystemTrailer:addCluster(animal)\r\n\r\n    --table.remove(self.targetItems, animalIndex)\r\n\r\n    --self.targetActionFinished(false, g_i18n:getText(AnimalScreenTrailerFarm.MOVE_TO_TRAILER_ERROR_CODE_MAPPING[AnimalMoveEvent.MOVE_SUCCESS].text))\r\n\r\n    husbandry:addRLMessage(\"MOVED_ANIMALS_SOURCE_SINGLE\", nil, { trailer:getName() })\r\n\r\n    return true\r\n\r\nend\r\n\r\nAnimalScreenTrailerFarm.applyTarget = Utils.overwrittenFunction(AnimalScreenTrailerFarm.applyTarget, RL_AnimalScreenTrailerFarm.applyTarget)\r\n\r\n\r\nfunction RL_AnimalScreenTrailerFarm:applySource(_, animalTypeIndex, animalIndex)\r\n\r\n    self.sourceAnimals = nil\r\n\r\n    local trailer = self.trailer\r\n    local husbandry = self.husbandry\r\n    local clusterSystemTrailer = trailer:getClusterSystem()\r\n    local clusterSystemHusbandry = husbandry:getClusterSystem()\r\n    local ownerFarmId = trailer:getOwnerFarmId()\r\n\r\n    local sourceItems = self.sourceItems[animalTypeIndex]\r\n    local item = sourceItems[animalIndex]\r\n    local animal = item.animal or item.cluster\r\n    \r\n    local id = item:getClusterId()\r\n\t--local errorCode = AnimalMoveEvent.validate(trailer, husbandry, id, 1, ownerFarmId)\r\n\tlocal errorCode = AnimalMoveEvent.validate(trailer, husbandry, ownerFarmId, animal.subTypeIndex)\r\n\r\n    if errorCode ~= nil then\r\n\t\tself.errorCallback(g_i18n:getText(AnimalScreenTrailerFarm.MOVE_TO_FARM_ERROR_CODE_MAPPING[errorCode].text))\r\n\t\treturn false\r\n\tend\r\n\r\n    self.sourceAnimals = { animal }\r\n\r\n    self.actionTypeCallback(AnimalScreenBase.ACTION_TYPE_SOURCE, g_i18n:getText(AnimalScreenTrailerFarm.L10N_SYMBOL.MOVE_TO_FARM))\r\n\tg_messageCenter:subscribe(AnimalMoveEvent, self.onAnimalMovedToFarm, self)\r\n\tg_client:getServerConnection():sendEvent(AnimalMoveEvent.new(trailer, husbandry, self.sourceAnimals))\r\n\r\n    --clusterSystemTrailer:removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n    --animal.id, animal.idFull = nil, nil\r\n    --clusterSystemHusbandry:addCluster(animal)\r\n\r\n    --table.remove(sourceItems, animalIndex)\r\n\r\n    --self.sourceActionFinished(false, g_i18n:getText(AnimalScreenTrailerFarm.MOVE_TO_FARM_ERROR_CODE_MAPPING[AnimalMoveEvent.MOVE_SUCCESS].text))\r\n\r\n    husbandry:addRLMessage(\"MOVED_ANIMALS_TARGET_SINGLE\", nil, { trailer:getName() })\r\n\r\n    return true\r\n\r\nend\r\n\r\nAnimalScreenTrailerFarm.applySource = Utils.overwrittenFunction(AnimalScreenTrailerFarm.applySource, RL_AnimalScreenTrailerFarm.applySource)"
  },
  {
    "path": "src/animals/shop/events/AIAnimalBuyEvent.lua",
    "content": "AIAnimalBuyEvent = {}\r\n\r\nlocal AIAnimalBuyEvent_mt = Class(AIAnimalBuyEvent, Event)\r\nInitEventClass(AIAnimalBuyEvent, \"AIAnimalBuyEvent\")\r\n\r\n\r\nfunction AIAnimalBuyEvent.emptyNew()\r\n\r\n    local self = Event.new(AIAnimalBuyEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalBuyEvent.new(object, animals, price)\r\n\r\n\tlocal event = AIAnimalBuyEvent.emptyNew()\r\n\r\n\tevent.object = object\r\n\tevent.animals = animals\r\n\tevent.price = price\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalBuyEvent:readStream(streamId, connection)\r\n\r\n\tself.object = NetworkUtil.readNodeObject(streamId)\r\n\tlocal numAnimals = streamReadUInt16(streamId)\r\n\r\n\tself.animals = {}\r\n\r\n\tfor i = 1, numAnimals do\r\n\r\n\t\tlocal animal = Animal.new()\r\n\t\tanimal:readStream(streamId, connection)\r\n\t\ttable.insert(self.animals, animal)\r\n\r\n\tend\r\n\r\n\tself.price = streamReadFloat32(streamId)\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalBuyEvent:writeStream(streamId, connection)\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.object)\r\n\r\n\tstreamWriteUInt16(streamId, #self.animals)\r\n\r\n\tfor _, animal in pairs(self.animals) do animal:writeStream(streamId, connection) end\r\n\r\n\tstreamWriteFloat32(streamId, self.price)\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalBuyEvent:run(connection)\r\n\r\n\tfor _, animal in pairs(self.animals) do\r\n\r\n\t\tanimal:setRecentlyBoughtByAI(true)\r\n\r\n\t\tg_currentMission.animalSystem:removeSaleAnimal(animal.animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n\r\n\tend\r\n\r\n\tself.object:addAnimals(self.animals)\r\n\r\n\tif g_server ~= nil then\r\n\r\n\t\tlocal farmId = self.object:getOwnerFarmId()\r\n\t\tg_currentMission:addMoney(-self.price, farmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalBuyEvent.validate(object, numAnimals, price, farmId)\r\n\r\n\tif object == nil then return AnimalBuyEvent.BUY_ERROR_OBJECT_DOES_NOT_EXIST end\r\n\r\n\tif object:getNumOfFreeAnimalSlots() < numAnimals then return AnimalBuyEvent.BUY_ERROR_NOT_ENOUGH_SPACE end\r\n\t\r\n\tif g_currentMission:getMoney(farmId) - price < 0 then return AnimalBuyEvent.BUY_ERROR_NOT_ENOUGH_MONEY end\r\n\t\r\n\treturn nil\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/events/AIAnimalInseminationEvent.lua",
    "content": "AIAnimalInseminationEvent = {}\r\n\r\nlocal AIAnimalInseminationEvent_mt = Class(AIAnimalInseminationEvent, Event)\r\nInitEventClass(AIAnimalInseminationEvent, \"AIAnimalInseminationEvent\")\r\n\r\n\r\nfunction AIAnimalInseminationEvent.emptyNew()\r\n\r\n    local self = Event.new(AIAnimalInseminationEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalInseminationEvent.new(object, items)\r\n\r\n\tlocal event = AIAnimalInseminationEvent.emptyNew()\r\n\r\n\tevent.object = object\r\n\tevent.items = items\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalInseminationEvent:readStream(streamId, connection)\r\n\r\n\tself.object = NetworkUtil.readNodeObject(streamId)\r\n\tlocal numItems = streamReadUInt16(streamId)\r\n\r\n\tself.items = {}\r\n\r\n\tfor i = 1, numItems do\r\n\r\n\t\tlocal identifiers = Animal.readStreamIdentifiers(streamId, connection)\r\n\t\tlocal dewarUniqueId = streamReadString(streamId)\r\n\r\n\t\ttable.insert(self.items, { [\"animal\"] = identifiers, [\"dewar\"] = dewarUniqueId })\r\n\r\n\tend\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalInseminationEvent:writeStream(streamId, connection)\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.object)\r\n\r\n\tstreamWriteUInt16(streamId, #self.items)\r\n\r\n\tfor _, item in pairs(self.items) do\r\n\t\t\r\n\t\titem.animal:writeStreamIdentifiers(streamId, connection)\r\n\t\tstreamWriteString(item.dewar)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalInseminationEvent:run(connection)\r\n\r\n\tlocal clusterSystem = self.object:getClusterSystem()\r\n\tlocal farmId = self.object:getOwnerFarmId()\r\n\tlocal farmDewars = g_dewarManager:getDewarsByFarm(farmId)\r\n\r\n\tif farmDewars == nil then return end\r\n\r\n\tfor i, item in pairs(self.items) do\r\n\t\r\n\t\tlocal dewars = farmDewars[item.animal.animalTypeIndex]\r\n\r\n\t\tif dewars == nil or #dewars == 0 then continue end\r\n\r\n\t\tlocal identifiers = item.animal\r\n\r\n\t\tfor _, dewar in pairs(dewars) do\r\n\r\n\t\t\tif dewar:getUniqueId() == item.dewar then\r\n\r\n\t\t\t\tfor _, animal in pairs(clusterSystem.animals) do\r\n\r\n\t\t\t\t\tif animal.farmId == identifiers.farmId and animal.uniqueId == identifiers.uniqueId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) then\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tanimal:setInsemination(dewar.animal)\r\n\t\t\t\t\t\tdewar:changeStraws(-1)\r\n\r\n\t\t\t\t\t\tbreak\r\n\r\n\t\t\t\t\tend\r\n\r\n\t\t\t\tend\r\n\r\n\t\t\t\tbreak\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/events/AIAnimalSellEvent.lua",
    "content": "AIAnimalSellEvent = {}\r\n\r\nlocal AIAnimalSellEvent_mt = Class(AIAnimalSellEvent, Event)\r\nInitEventClass(AIAnimalSellEvent, \"AIAnimalSellEvent\")\r\n\r\n\r\nfunction AIAnimalSellEvent.emptyNew()\r\n\r\n    local self = Event.new(AIAnimalSellEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalSellEvent.new(object, animals, price)\r\n\r\n\tlocal event = AIAnimalSellEvent.emptyNew()\r\n\r\n\tevent.object = object\r\n\tevent.animals = animals\r\n\tevent.price = price\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalSellEvent:readStream(streamId, connection)\r\n\r\n\tself.object = NetworkUtil.readNodeObject(streamId)\r\n\tlocal numAnimals = streamReadUInt16(streamId)\r\n\r\n\tself.animals = {}\r\n\r\n\tfor i = 1, numAnimals do\r\n\r\n\t\tlocal identifiers = Animal.readStreamIdentifiers(streamId, connection)\r\n\t\ttable.insert(self.animals, identifiers)\r\n\r\n\tend\r\n\r\n\tself.price = streamReadFloat32(streamId)\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalSellEvent:writeStream(streamId, connection)\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.object)\r\n\r\n\tstreamWriteUInt16(streamId, #self.animals)\r\n\r\n\tfor _, animal in pairs(self.animals) do animal:writeStreamIdentifiers(streamId, connection) end\r\n\r\n\tstreamWriteFloat32(streamId, self.price)\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalSellEvent:run(connection)\r\n\r\n\tlocal clusterSystem = self.object:getClusterSystem()\r\n\r\n\tfor i, identifier in pairs(self.animals) do\r\n\r\n\t\tclusterSystem:removeCluster(identifier.farmId .. \" \" .. identifier.uniqueId .. \" \" .. (identifier.country or identifier.birthday.country))\r\n\r\n\tend\r\n\r\n\tif g_server ~= nil then\r\n\r\n\t\tlocal farmId = self.object:getOwnerFarmId()\r\n\r\n\t\tg_currentMission:addMoney(self.price, farmId, MoneyType.SOLD_ANIMALS, true, true)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction AIAnimalSellEvent.validate(object, numAnimals, price, farmId)\r\n\r\n\tif object == nil then return AnimalSellEvent.SELL_ERROR_OBJECT_DOES_NOT_EXIST end\r\n\t\r\n\treturn nil\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/events/AIBulkMessageEvent.lua",
    "content": "AIBulkMessageEvent = {}\r\n\r\nlocal AIBulkMessageEvent_mt = Class(AIBulkMessageEvent, Event)\r\nInitEventClass(AIBulkMessageEvent, \"AIBulkMessageEvent\")\r\n\r\n\r\nfunction AIBulkMessageEvent.emptyNew()\r\n\r\n    local self = Event.new(AIBulkMessageEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AIBulkMessageEvent.new(object, messages)\r\n\r\n\tlocal event = AIBulkMessageEvent.emptyNew()\r\n\r\n\tevent.object = object\r\n\tevent.messages = messages\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction AIBulkMessageEvent:readStream(streamId, connection)\r\n\r\n\tself.object = NetworkUtil.readNodeObject(streamId)\r\n\tlocal numMessages = streamReadUInt16(streamId)\r\n\r\n\tself.messages = {}\r\n\r\n\tfor i = 1, numMessages do\r\n\r\n\t\tlocal id = streamReadString(streamId)\r\n\t\tlocal numArgs = streamReadUInt8(streamId)\r\n\t\tlocal args = {}\r\n\r\n\t\tfor j = 1, numArgs do table.insert(args, streamReadString(streamId)) end\r\n\r\n\t\ttable.insert(self.messages, {\r\n\t\t\t[\"id\"] = id,\r\n\t\t\t[\"args\"] = args\r\n\t\t})\r\n\r\n\tend\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AIBulkMessageEvent:writeStream(streamId, connection)\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.object)\r\n\r\n\tstreamWriteUInt16(streamId, #self.messages)\r\n\r\n\tfor i = 1, #self.messages do\r\n\r\n\t\tlocal message = self.messages[i]\r\n\t\tmessage.args = message.args or {}\r\n\r\n\t\tstreamWriteString(streamId, message.id)\r\n\t\tstreamWriteUInt8(streamId, #message.args)\r\n\r\n\t\tfor j = 1, #message.args do streamWriteString(streamId, message.args[j]) end\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction AIBulkMessageEvent:run(connection)\r\n\r\n\tfor i = 1, #self.messages do\r\n\r\n\t\tlocal message = self.messages[i]\r\n\t\tself.object:addRLMessage(message.id, nil, message.args)\r\n\r\n\tend\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/events/AnimalBuyEvent.lua",
    "content": "function AnimalBuyEvent.new(object, animals, buyPrice, transportPrice)\r\n\r\n\tlocal event = AnimalBuyEvent.emptyNew()\r\n\r\n\tevent.object = object\r\n\tevent.animals = animals\r\n\tevent.buyPrice = buyPrice\r\n\tevent.transportPrice = transportPrice\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction AnimalBuyEvent:readStream(streamId, connection)\r\n\r\n\tif connection:getIsServer() then\r\n\r\n\t\tself.errorCode = streamReadUIntN(streamId, 3)\r\n\r\n\telse\r\n\r\n\t\tself.object = NetworkUtil.readNodeObject(streamId)\r\n\t\tlocal numAnimals = streamReadUInt16(streamId)\r\n\r\n\t\tself.animals = {}\r\n\r\n\t\tfor i = 1, numAnimals do\r\n\r\n\t\t\tlocal animal = Animal.new()\r\n\t\t\tanimal:readStream(streamId, connection)\r\n\t\t\ttable.insert(self.animals, animal)\r\n\r\n\t\tend\r\n\r\n\t\tself.buyPrice = streamReadFloat32(streamId)\r\n\t\tself.transportPrice = streamReadFloat32(streamId)\r\n\r\n\tend\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalBuyEvent:writeStream(streamId, connection)\r\n\r\n\tif not connection:getIsServer() then\r\n\t\tstreamWriteUIntN(streamId, self.errorCode, 3)\r\n\t\treturn\r\n\tend\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.object)\r\n\r\n\tstreamWriteUInt16(streamId, #self.animals)\r\n\r\n\tfor _, animal in pairs(self.animals) do animal:writeStream(streamId, connection) end\r\n\r\n\tstreamWriteFloat32(streamId, self.buyPrice)\r\n\tstreamWriteFloat32(streamId, self.transportPrice)\r\n\r\nend\r\n\r\n\r\nfunction AnimalBuyEvent:run(connection)\r\n\r\n\tif connection:getIsServer() then\r\n\r\n\t\tg_messageCenter:publish(AnimalBuyEvent, self.errorCode)\r\n\t\treturn\r\n\r\n\tend\r\n\r\n\tif not g_currentMission:getHasPlayerPermission(\"tradeAnimals\", connection) then\r\n\r\n\t\tconnection:sendEvent(AnimalBuyEvent.newServerToClient(AnimalBuyEvent.BUY_ERROR_NO_PERMISSION))\r\n\t\treturn\r\n\r\n\tend\r\n\r\n\tlocal userId = g_currentMission.userManager:getUniqueUserIdByConnection(connection)\r\n\tlocal farmId = g_farmManager:getFarmForUniqueUserId(userId).farmId\r\n\r\n\tfor _, animal in pairs(self.animals) do\r\n\r\n\t\tlocal errorCode = AnimalBuyEvent.validate(self.object, animal.subTypeIndex, animal.age, #self.animals, self.buyPrice, self.transportPrice, farmId)\r\n\r\n\t\tif errorCode ~= nil then\r\n\t\t\tconnection:sendEvent(AnimalBuyEvent.newServerToClient(errorCode))\r\n\t\t\treturn\r\n\t\tend\r\n\t\r\n\tend\r\n\r\n\tfor _, animal in pairs(self.animals) do\r\n\r\n\t\tg_currentMission.animalSystem:removeSaleAnimal(animal.animalTypeIndex, animal.birthday.country, animal.farmId, animal.uniqueId)\r\n\r\n\tend\r\n\r\n\tself.object:addAnimals(self.animals)\r\n\r\n\tg_currentMission:addMoney(self.buyPrice + self.transportPrice, farmId, MoneyType.NEW_ANIMALS_COST, true, true)\r\n\tconnection:sendEvent(AnimalBuyEvent.newServerToClient(AnimalBuyEvent.BUY_SUCCESS))\r\n\r\n\tif g_server ~= nil and not g_server.netIsRunning then return end\r\n\r\n\tif #self.animals == 1 then\r\n        self.object:addRLMessage(\"BOUGHT_ANIMALS_SINGLE\", nil, { g_i18n:formatMoney(math.abs(self.buyPrice + self.transportPrice), 2, true, true) })\r\n    elseif #self.animals > 0 then\r\n        self.object:addRLMessage(\"BOUGHT_ANIMALS_MULTIPLE\", nil, { #self.animals, g_i18n:formatMoney(math.abs(self.buyPrice + self.transportPrice), 2, true, true) })\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/events/AnimalInseminationEvent.lua",
    "content": "AnimalInseminationEvent = {}\r\n\r\nlocal AnimalInseminationEvent_mt = Class(AnimalInseminationEvent, Event)\r\nInitEventClass(AnimalInseminationEvent, \"AnimalInseminationEvent\")\r\n\r\n\r\nfunction AnimalInseminationEvent.emptyNew()\r\n\r\n    local self = Event.new(AnimalInseminationEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalInseminationEvent.new(object, animal, semen)\r\n\r\n\tlocal event = AnimalInseminationEvent.emptyNew()\r\n\r\n\tevent.object = object\r\n\tevent.animal = animal\r\n\tevent.semen = semen\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction AnimalInseminationEvent:readStream(streamId, connection)\r\n\r\n\tself.object = NetworkUtil.readNodeObject(streamId)\r\n\tself.animal = Animal.readStreamIdentifiers(streamId, connection)\r\n\t\r\n\tself.semen = { [\"genetics\"] = {} }\r\n\r\n\tsemen.country = streamReadUInt8(streamId)\r\n\tsemen.farmId = streamReadString(streamId)\r\n\tsemen.uniqueId = streamReadString(streamId)\r\n\tsemen.name = streamReadString(streamId)\r\n\tsemen.typeIndex = streamReadUInt8(streamId)\r\n\tsemen.subTypeIndex = streamReadUInt8(streamId)\r\n\tsemen.success = streamReadFloat32(streamId)\r\n\r\n\tsemen.genetics.metabolism = streamReadFloat32(streamId)\r\n\tsemen.genetics.fertility = streamReadFloat32(streamId)\r\n\tsemen.genetics.health = streamReadFloat32(streamId)\r\n\tsemen.genetics.quality = streamReadFloat32(streamId)\r\n\tsemen.genetics.productivity = streamReadFloat32(streamId)\r\n\r\n\tif semen.genetics.productivity < 0 then semen.genetics.productivity = nil end\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalInseminationEvent:writeStream(streamId, connection)\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.object)\r\n\tself.animal:writeStreamIdentifiers(streamId, connection)\r\n\r\n\tlocal semen = self.semen\r\n\r\n\tstreamWriteUInt8(streamId, semen.country)\r\n\tstreamWriteString(streamId, semen.farmId)\r\n\tstreamWriteString(streamId, semen.uniqueId)\r\n\tstreamWriteString(streamId, semen.name or \"\")\r\n\tstreamWriteUInt8(streamId, semen.typeIndex)\r\n\tstreamWriteUInt8(streamId, semen.subTypeIndex)\r\n\tstreamWriteFloat32(streamId, semen.success)\r\n\r\n\tstreamWriteFloat32(streamId, semen.genetics.metabolism)\r\n\tstreamWriteFloat32(streamId, semen.genetics.fertility)\r\n\tstreamWriteFloat32(streamId, semen.genetics.health)\r\n\tstreamWriteFloat32(streamId, semen.genetics.quality)\r\n\tstreamWriteFloat32(streamId, semen.genetics.productivity or -1)\r\n\r\nend\r\n\r\n\r\nfunction AnimalInseminationEvent:run(connection)\r\n\r\n\tlocal clusterSystem = self.object:getClusterSystem()\r\n\tlocal identifiers = self.animal\r\n\r\n\tfor _, animal in pairs(clusterSystem.animals) do\r\n\r\n\t\tif animal.farmId == identifiers.farmId and animal.uniqueId == identifiers.uniqueId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) then\r\n\t\t\t\t\t\r\n\t\t\tanimal:setInsemination(self.semen)\r\n\t\t\tbreak\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/events/AnimalInseminationResultEvent.lua",
    "content": "AnimalInseminationResultEvent = {}\r\n\r\nlocal AnimalInseminationResultEvent_mt = Class(AnimalInseminationResultEvent, Event)\r\nInitEventClass(AnimalInseminationResultEvent, \"AnimalInseminationResultEvent\")\r\n\r\n\r\nfunction AnimalInseminationResultEvent.emptyNew()\r\n\r\n    local self = Event.new(AnimalInseminationResultEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalInseminationResultEvent.new(object, animal, success)\r\n\r\n\tlocal event = AnimalInseminationResultEvent.emptyNew()\r\n\r\n\tevent.object = object\r\n\tevent.animal = animal\r\n\tevent.success = success\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction AnimalInseminationResultEvent:readStream(streamId, connection)\r\n\r\n\tself.object = NetworkUtil.readNodeObject(streamId)\r\n\tself.animal = Animal.readStreamIdentifiers(streamId, connection)\t\r\n\tself.success = streamReadBool(streamId)\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalInseminationResultEvent:writeStream(streamId, connection)\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.object)\r\n\tself.animal:writeStreamIdentifiers(streamId, connection)\r\n\tstreamWriteBool(streamId, self.success)\r\n\r\nend\r\n\r\n\r\nfunction AnimalInseminationResultEvent:run(connection)\r\n\r\n\tif g_server ~= nil and not g_server.netIsRunning then return end\r\n\r\n\tlocal clusterSystem = self.object:getClusterSystem()\r\n\tlocal identifiers = self.animal\r\n\r\n\tfor _, animal in pairs(clusterSystem.animals) do\r\n\r\n\t\tif animal.farmId == identifiers.farmId and animal.uniqueId == identifiers.uniqueId and animal.birthday.country == (identifiers.country or identifiers.birthday.country) then\r\n\t\t\t\t\t\r\n\t\t\tanimal:addRLMessage(string.format(\"INSEMINATION_%s\", self.success and \"SUCCESS\" or \"FAIL\"))\r\n\t\t\treturn\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/events/AnimalMoveEvent.lua",
    "content": "function AnimalMoveEvent.new(sourceObject, targetObject, animals, moveType)\r\n\r\n\tlocal event = AnimalMoveEvent.emptyNew()\r\n\r\n\tevent.sourceObject = sourceObject\r\n\tevent.targetObject = targetObject\r\n\tevent.animals = animals\r\n\tevent.moveType = moveType\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction AnimalMoveEvent:readStream(streamId, connection)\r\n\r\n\tif connection:getIsServer() then\r\n\r\n\t\tself.errorCode = streamReadUIntN(streamId, 3)\r\n\r\n\telse\r\n\r\n\t\tself.moveType = streamReadString(streamId)\r\n\r\n\t\tself.sourceObject = NetworkUtil.readNodeObject(streamId)\r\n\t\tself.targetObject = NetworkUtil.readNodeObject(streamId)\r\n\r\n\t\tlocal numAnimals = streamReadUInt16(streamId)\r\n\r\n\t\tself.animals = {}\r\n\r\n\t\tfor i = 1, numAnimals do\r\n\r\n\t\t\tlocal animal = Animal.new()\r\n\t\t\tlocal success = animal:readStream(streamId, connection)\r\n\t\t\ttable.insert(self.animals, animal)\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalMoveEvent:writeStream(streamId, connection)\r\n\r\n\tif not connection:getIsServer() then\r\n\t\tstreamWriteUIntN(streamId, self.errorCode, 3)\r\n\t\treturn\r\n\tend\r\n\r\n\tstreamWriteString(streamId, self.moveType)\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.sourceObject)\r\n\tNetworkUtil.writeNodeObject(streamId, self.targetObject)\r\n\r\n\tstreamWriteUInt16(streamId, #self.animals)\r\n\r\n\tfor _, animal in pairs(self.animals) do local success = animal:writeStream(streamId, connection) end\r\n\r\nend\r\n\r\n\r\nfunction AnimalMoveEvent:run(connection)\r\n\r\n\tif connection:getIsServer() then\r\n\r\n\t\tg_messageCenter:publish(AnimalMoveEvent, self.errorCode)\r\n\t\treturn\r\n\r\n\tend\r\n\r\n\tlocal userId = g_currentMission.userManager:getUniqueUserIdByConnection(connection)\r\n\tlocal farmId = g_farmManager:getFarmForUniqueUserId(userId).farmId\r\n\r\n\tfor _, animal in pairs(self.animals) do\r\n\r\n\t\tlocal errorCode = AnimalMoveEvent.validate(self.sourceObject, self.targetObject, farmId, animal.subTypeIndex)\r\n\r\n\t\tif errorCode ~= nil then\r\n\t\t\tconnection:sendEvent(AnimalMoveEvent.newServerToClient(errorCode))\r\n\t\t\treturn\r\n\t\tend\r\n\t\r\n\tend\r\n\r\n\tlocal clusterSystemSource = self.sourceObject:getClusterSystem()\r\n\tlocal clusterSystemTarget = self.targetObject:getClusterSystem()\r\n\r\n\tfor _, animal in pairs(self.animals) do\r\n\r\n\t\tclusterSystemSource:removeCluster(animal.farmId .. \" \" .. animal.uniqueId .. \" \" .. animal.birthday.country)\r\n\t\tanimal.id, animal.idFull = nil, nil\r\n\t\tclusterSystemTarget:addCluster(animal)\r\n\r\n\tend\r\n\r\n\tconnection:sendEvent(AnimalMoveEvent.newServerToClient(AnimalMoveEvent.MOVE_SUCCESS))\r\n\r\n\tif g_server ~= nil and not g_server.netIsRunning then return end\r\n\r\n\tlocal husbandry, trailer\r\n\t\r\n\tif self.moveType == \"SOURCE\" then \r\n\t\thusbandry, trailer = self.sourceObject, self.targetObject\r\n\telse\r\n\t\thusbandry, trailer = self.targetObject, self.sourceObject\r\n\tend\r\n\r\n\tif #self.animals == 1 then\r\n        husbandry:addRLMessage(string.format(\"MOVE_ANIMALS_%s_SINLGE\", self.moveType), nil, { trailer:getName() })\r\n    elseif #self.animals > 0 then\r\n        husbandry:addRLMessage(string.format(\"MOVE_ANIMALS_%s_MULTIPLE\", self.moveType), nil, { #self.animals, trailer:getName() })\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalMoveEvent.validate(sourceObject, targetObject, farmId, subTypeIndex)\r\n\r\n\tif sourceObject == nil then return AnimalMoveEvent.MOVE_ERROR_SOURCE_OBJECT_DOES_NOT_EXIST end\r\n\t\r\n\tif targetObject == nil then return AnimalMoveEvent.MOVE_ERROR_TARGET_OBJECT_DOES_NOT_EXIST end\r\n\r\n\tif not g_currentMission.accessHandler:canFarmAccess(farmId, sourceObject) or not g_currentMission.accessHandler:canFarmAccess(farmId, targetObject) then return AnimalMoveEvent.MOVE_ERROR_NO_PERMISSION end\r\n\r\n\tif not targetObject:getSupportsAnimalSubType(subTypeIndex) then return AnimalMoveEvent.MOVE_ERROR_ANIMAL_NOT_SUPPORTED end\r\n\r\n\tif targetObject:getNumOfFreeAnimalSlots(subTypeIndex) < 1 then return AnimalMoveEvent.MOVE_ERROR_NOT_ENOUGH_SPACE end\r\n\r\n\treturn nil\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/events/AnimalSellEvent.lua",
    "content": "function AnimalSellEvent.new(object, animals, price, transportPrice)\r\n\r\n\tlocal event = AnimalSellEvent.emptyNew()\r\n\r\n\tevent.object = object\r\n\tevent.animals = animals\r\n\tevent.price = price\r\n\tevent.transportPrice = transportPrice\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction AnimalSellEvent:readStream(streamId, connection)\r\n\r\n\tif connection:getIsServer() then\r\n\r\n\t\tself.errorCode = streamReadUIntN(streamId, 3)\r\n\r\n\telse\r\n\r\n\t\tself.object = NetworkUtil.readNodeObject(streamId)\r\n\t\tlocal numAnimals = streamReadUInt16(streamId)\r\n\r\n\t\tself.animals = {}\r\n\r\n\t\tfor i = 1, numAnimals do\r\n\r\n\t\t\tlocal identifiers = Animal.readStreamIdentifiers(streamId, connection)\r\n\t\t\ttable.insert(self.animals, identifiers)\r\n\r\n\t\tend\r\n\r\n\t\tself.price = streamReadFloat32(streamId)\r\n\t\tself.transportPrice = streamReadFloat32(streamId)\r\n\r\n\tend\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction AnimalSellEvent:writeStream(streamId, connection)\r\n\r\n\tif not connection:getIsServer() then\r\n\t\tstreamWriteUIntN(streamId, self.errorCode, 3)\r\n\t\treturn\r\n\tend\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.object)\r\n\r\n\tstreamWriteUInt16(streamId, #self.animals)\r\n\r\n\tfor i, animal in pairs(self.animals) do\r\n\t\tlocal success = animal:writeStreamIdentifiers(streamId, connection)\r\n\tend\r\n\r\n\tstreamWriteFloat32(streamId, self.price)\r\n\tstreamWriteFloat32(streamId, self.transportPrice)\r\n\r\nend\r\n\r\n\r\nfunction AnimalSellEvent:run(connection)\r\n\r\n\tif connection:getIsServer() then\r\n\r\n\t\tg_messageCenter:publish(AnimalSellEvent, self.errorCode)\r\n\t\treturn\r\n\r\n\tend\r\n\r\n\tif not g_currentMission:getHasPlayerPermission(\"tradeAnimals\", connection) then\r\n\r\n\t\tconnection:sendEvent(AnimalSellEvent.newServerToClient(AnimalSellEvent.SELL_ERROR_NO_PERMISSION))\r\n\t\treturn\r\n\r\n\tend\r\n\r\n\tlocal userId = g_currentMission.userManager:getUniqueUserIdByConnection(connection)\r\n\tlocal farmId = g_farmManager:getFarmForUniqueUserId(userId).farmId\r\n\r\n\t--for _, animal in pairs(self.animals) do\r\n\r\n\t\t--local errorCode = AnimalSellEvent.validate(self.object, animal.subTypeIndex, animal.age, 1, self.price, self.transportPrice, farmId)\r\n\r\n\t\t--if errorCode ~= nil then\r\n\t\t\t--connection:sendEvent(AnimalSellEvent.newServerToClient(errorCode))\r\n\t\t\t--return\r\n\t\t--end\r\n\t\r\n\t--end\r\n\r\n\tlocal clusterSystem = self.object:getClusterSystem()\r\n\r\n\tfor i, identifier in pairs(self.animals) do\r\n\r\n\t\tclusterSystem:removeCluster(identifier.farmId .. \" \" .. identifier.uniqueId .. \" \" .. (identifier.country or identifier.birthday.country))\r\n\r\n\tend\r\n\r\n\tg_currentMission:addMoney(self.price + self.transportPrice, farmId, MoneyType.SOLD_ANIMALS, true, true)\r\n\tconnection:sendEvent(AnimalSellEvent.newServerToClient(AnimalSellEvent.SELL_SUCCESS))\r\n\r\n\tif g_server ~= nil and not g_server.netIsRunning then return end\r\n\r\n\tif #self.animals == 1 then\r\n        self.object:addRLMessage(\"SOLD_ANIMALS_SINGLE\", nil, { g_i18n:formatMoney(math.abs(self.price + self.transportPrice), 2, true, true) })\r\n    elseif #self.animals > 0 then\r\n        self.object:addRLMessage(\"SOLD_ANIMALS_MULTIPLE\", nil, { #self.animals, g_i18n:formatMoney(math.abs(self.price + self.transportPrice), 2, true, true) })\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/animals/shop/events/RealisticLivestock_AnimalSellEvent.lua",
    "content": "RealisticLivestock_AnimalSellEvent = {}\r\n\r\nfunction RealisticLivestock_AnimalSellEvent:run(connection)\r\n    if connection:getIsServer() then return end\r\n\r\n    if g_currentMission:getHasPlayerPermission(\"tradeAnimals\", connection) then\r\n\r\n        local validate = AnimalSellEvent.validate(self.object, self.clusterId, self.numAnimals, self.sellPrice, self.feePrice)\r\n        if validate == nil then\r\n            \r\n            local animal = self.object:getClusterById(self.clusterId)\r\n            animal.isSold = true\r\n            local spec = self.object.spec_husbandryAnimals\r\n\r\n            if animal.idFull ~= nil and animal.idFull ~= \"1-1\" and spec ~= nil then\r\n\r\n                local sep = string.find(animal.idFull, \"-\")\r\n                local husbandry = tonumber(string.sub(animal.idFull, 1, sep - 1))\r\n                local animalId = tonumber(string.sub(animal.idFull, sep + 1))\r\n\r\n                if husbandry == 0 or animalId == 0 then return end\r\n\r\n                removeHusbandryAnimal(husbandry, animalId)\r\n\r\n                local clusterHusbandry = spec.clusterHusbandry\r\n                clusterHusbandry.husbandryIdsToVisualAnimalCount[husbandry] = math.max(clusterHusbandry.husbandryIdsToVisualAnimalCount[husbandry] - 1, 0)\r\n                clusterHusbandry.visualAnimalCount = math.max(clusterHusbandry.visualAnimalCount - 1, 0)\r\n\r\n                for husbandryIndex, animalIds in pairs(clusterHusbandry.animalIdToCluster) do\r\n\r\n                    if clusterHusbandry.husbandryIds[husbandryIndex] == husbandry then\r\n\r\n                        table.remove(animalIds, animalId)\r\n                        break\r\n\r\n                    end\r\n\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n    end\r\nend\r\n\r\nAnimalSellEvent.run = Utils.prependedFunction(AnimalSellEvent.run, RealisticLivestock_AnimalSellEvent.run)"
  },
  {
    "path": "src/animals/shop/events/SemenBuyEvent.lua",
    "content": "SemenBuyEvent = {}\r\n\r\nlocal SemenBuyEvent_mt = Class(SemenBuyEvent, Event)\r\nInitEventClass(SemenBuyEvent, \"SemenBuyEvent\")\r\n\r\n\r\nfunction SemenBuyEvent.emptyNew()\r\n\r\n    local self = Event.new(SemenBuyEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction SemenBuyEvent.new(animal, quantity, price, farmId, position, rotation)\r\n\r\n\tlocal event = SemenBuyEvent.emptyNew()\r\n\r\n\tevent.animal = animal\r\n\tevent.quantity = quantity\r\n\tevent.price = price\r\n\tevent.farmId = farmId\r\n\tevent.position = position\r\n\tevent.rotation = rotation\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction SemenBuyEvent.newServerToClient(errorCode)\r\n\r\n\tlocal event = SemenBuyEvent.emptyNew()\r\n\r\n\tevent.errorCode = errorCode\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction SemenBuyEvent:readStream(streamId, connection)\r\n\r\n\tself.animal = Animal.new()\r\n\tself.animal:readStream(streamId, connection)\r\n\tself.animal.success = streamReadFloat32(streamId)\r\n\r\n\tself.quantity = streamReadUInt16(streamId)\r\n\tself.price = streamReadFloat32(streamId)\r\n\tself.farmId = streamReadUInt8(streamId)\r\n\r\n\tlocal x = streamReadFloat32(streamId)\r\n\tlocal y = streamReadFloat32(streamId)\r\n\tlocal z = streamReadFloat32(streamId)\r\n\r\n\tlocal rx = streamReadFloat32(streamId)\r\n\tlocal ry = streamReadFloat32(streamId)\r\n\tlocal rz = streamReadFloat32(streamId)\r\n\t\t\r\n\tself.position = { x, y, z }\r\n\tself.rotation = { rx, ry, rz }\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction SemenBuyEvent:writeStream(streamId, connection)\r\n\r\n\tself.animal:writeStream(streamId, connection)\r\n\tstreamWriteFloat32(streamId, self.animal.success or 0.65)\r\n\r\n\tstreamWriteUInt16(streamId, self.quantity)\r\n\tstreamWriteFloat32(streamId, self.price)\r\n\tstreamWriteUInt8(streamId, self.farmId)\r\n\t\r\n\tstreamWriteFloat32(streamId, self.position[1])\r\n\tstreamWriteFloat32(streamId, self.position[2])\r\n\tstreamWriteFloat32(streamId, self.position[3])\r\n\r\n\tstreamWriteFloat32(streamId, self.rotation[1])\r\n\tstreamWriteFloat32(streamId, self.rotation[2])\r\n\tstreamWriteFloat32(streamId, self.rotation[3])\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction SemenBuyEvent:run(connection)\r\n\r\n\tlocal dewar = Dewar.new(g_currentMission:getIsServer(), g_currentMission:getIsClient())\r\n\r\n    dewar:setOwnerFarmId(self.farmId)\r\n    dewar:register(self.position, self.rotation, self.animal, self.quantity)\r\n\r\n\tg_currentMission:addMoney(self.price, self.farmId, MoneyType.SEMEN_PURCHASE, true, true)\r\n\r\nend"
  },
  {
    "path": "src/events/DewarManagerStateEvent.lua",
    "content": "DewarManagerStateEvent = {}\r\n\r\nlocal DewarManagerStateEvent_mt = Class(DewarManagerStateEvent, Event)\r\nInitEventClass(DewarManagerStateEvent, \"DewarManagerStateEvent\")\r\n\r\n\r\nfunction DewarManagerStateEvent.emptyNew()\r\n\r\n    local self = Event.new(DewarManagerStateEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction DewarManagerStateEvent.new()\r\n\r\n\tlocal event = DewarManagerStateEvent.emptyNew()\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction DewarManagerStateEvent:readStream(streamId, connection)\r\n\r\n\tg_dewarManager:readStream(streamId, connection)\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction DewarManagerStateEvent:writeStream(streamId, connection)\r\n\r\n\tg_dewarManager:writeStream(streamId, connection)\r\n\r\nend\r\n\r\n\r\nfunction DewarManagerStateEvent:run(connection)\r\n\r\n\r\n\r\nend"
  },
  {
    "path": "src/events/HusbandryMessageStateEvent.lua",
    "content": "HusbandryMessageStateEvent = {}\r\n\r\nlocal HusbandryMessageStateEvent_mt = Class(HusbandryMessageStateEvent, Event)\r\nInitEventClass(HusbandryMessageStateEvent, \"HusbandryMessageStateEvent\")\r\n\r\n\r\nfunction HusbandryMessageStateEvent.emptyNew()\r\n\r\n    local self = Event.new(HusbandryMessageStateEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction HusbandryMessageStateEvent.new(husbandries)\r\n\r\n\tlocal event = HusbandryMessageStateEvent.emptyNew()\r\n\r\n\tevent.husbandries = husbandries\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction HusbandryMessageStateEvent:readStream(streamId, connection)\r\n\r\n\tlocal numHusbandries = streamReadUInt8(streamId)\r\n\r\n\tfor i = 1, numHusbandries do\r\n\r\n\t\tlocal husbandry = NetworkUtil.readNodeObject(streamId)\r\n\r\n\t\tlocal hasUnreadMessages = streamReadBool(streamId)\r\n\t\tlocal nextUniqueId = streamReadUInt16(streamId)\r\n\t\thusbandry:setHasUnreadRLMessages(hasUnreadMessages)\r\n\t\thusbandry:setNextRLMessageUniqueId(nextUniqueId)\r\n\r\n\t\tlocal numMessages = streamReadUInt16(streamId)\r\n\t\tlocal messages = {}\r\n\r\n\t\tfor j = 1, numMessages do\r\n\t\t\t\r\n\t\t\tlocal id = streamReadString(streamId)\r\n\t\t\tlocal date = streamReadString(streamId)\r\n\t\t\tlocal uniqueId = streamReadUInt16(streamId)\r\n\r\n\t\t\tlocal message = {\r\n\t\t\t\t[\"id\"] = id,\r\n\t\t\t\t[\"date\"] = date,\r\n\t\t\t\t[\"uniqueId\"] = uniqueId,\r\n\t\t\t\t[\"args\"] = {}\r\n\t\t\t}\r\n\r\n\t\t\tlocal hasAnimal = streamReadBool(streamId)\r\n\r\n\t\t\tif hasAnimal then message.animal = streamReadString(streamId) end\r\n\r\n\t\t\tlocal numArgs = streamReadUInt8(streamId)\r\n\t\t\tfor k = 1, numArgs do table.insert(message.args, streamReadString(streamId)) end\r\n\r\n\t\t\ttable.insert(messages, message)\r\n\r\n\t\tend\r\n\r\n\t\thusbandry.spec_husbandryAnimals.messages = messages\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HusbandryMessageStateEvent:writeStream(streamId, connection)\r\n\r\n\tstreamWriteUInt8(streamId, #self.husbandries)\r\n\r\n\tfor _, husbandry in pairs(self.husbandries) do\r\n\r\n\t\tNetworkUtil.writeNodeObject(streamId, husbandry)\r\n\t\tstreamWriteBool(streamId, husbandry:getHasUnreadRLMessages())\r\n\t\tstreamWriteUInt16(streamId, husbandry:getNextRLMessageUniqueId())\r\n\r\n\t\tlocal messages = husbandry:getRLMessages()\r\n\t\tstreamWriteUInt16(streamId, #messages)\r\n\r\n\t\tfor i = 1, #messages do\r\n\r\n\t\t\tlocal message = messages[i]\r\n\r\n\t\t\tstreamWriteString(streamId, message.id)\r\n\t\t\tstreamWriteString(streamId, message.date)\r\n\t\t\tstreamWriteUInt16(streamId, message.uniqueId)\r\n\r\n\t\t\tstreamWriteBool(streamId, message.animal ~= nil)\r\n\r\n\t\t\tif message.animal ~= nil then streamWriteString(streamId, message.animal) end\r\n\r\n\t\t\tstreamWriteUInt8(streamId, #message.args)\r\n\r\n\t\t\tfor j = 1, #message.args do streamWriteString(streamId, message.args[j]) end\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend"
  },
  {
    "path": "src/events/ReturnStrawEvent.lua",
    "content": "ReturnStrawEvent = {}\r\n\r\nlocal ReturnStrawEvent_mt = Class(ReturnStrawEvent, Event)\r\nInitEventClass(ReturnStrawEvent, \"ReturnStrawEvent\")\r\n\r\n\r\nfunction ReturnStrawEvent.emptyNew()\r\n\r\n    local self = Event.new(ReturnStrawEvent_mt)\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction ReturnStrawEvent.new(object)\r\n\r\n\tlocal event = ReturnStrawEvent.emptyNew()\r\n\r\n\tevent.object = object\r\n\r\n\treturn event\r\n\r\nend\r\n\r\n\r\nfunction ReturnStrawEvent:readStream(streamId, connection)\r\n\r\n\tself.object = NetworkUtil.readNodeObject(streamId)\r\n\r\n\tself:run(connection)\r\n\r\nend\r\n\r\n\r\nfunction ReturnStrawEvent:writeStream(streamId, connection)\r\n\r\n\tNetworkUtil.writeNodeObject(streamId, self.object)\r\n\r\nend\r\n\r\n\r\nfunction ReturnStrawEvent:run(connection)\r\n\r\n\tif self.object ~= nil then self.object:changeStraws(1) end\r\n\r\nend"
  },
  {
    "path": "src/farms/FarmManager.lua",
    "content": "RL_FarmManager = {}\r\n\r\n\r\nfunction RL_FarmManager:loadFromXMLFile(superFunc, path)\r\n\r\n\tlocal returnValue = superFunc(self, path)\r\n\r\n    local animalSystem = g_currentMission.animalSystem\r\n    animalSystem:initialiseCountries()\r\n\r\n    if g_currentMission:getIsServer() then\r\n        local hasData = animalSystem:loadFromXMLFile()\r\n        animalSystem:validateFarms(hasData)\r\n    end\r\n\r\n    return returnValue\r\n\r\nend\r\n\r\nFarmManager.loadFromXMLFile = Utils.overwrittenFunction(FarmManager.loadFromXMLFile, RL_FarmManager.loadFromXMLFile)"
  },
  {
    "path": "src/farms/RealisticLivestock_FarmStats.lua",
    "content": "RealisticLivestock_FarmStats = {}\r\n\r\nfunction RealisticLivestock_FarmStats:loadFromXMLFile(xmlFile, rootKey)\r\n\r\n    local key = rootKey .. \".statistics\"\r\n    self.statistics.farmId = xmlFile:getInt(key .. \".farmId\", math.random(100000, 999999))\r\n    self.statistics.cowId = xmlFile:getInt(key .. \".cowId\", 0)\r\n    self.statistics.pigId = xmlFile:getInt(key .. \".pigId\", 0)\r\n    self.statistics.sheepId = xmlFile:getInt(key .. \".sheepId\", 0)\r\n    self.statistics.horseId = xmlFile:getInt(key .. \".horseId\", 0)\r\n    self.statistics.chickenId = xmlFile:getInt(key .. \".chickenId\", 0)\r\n\r\nend\r\n\r\nFarmStats.loadFromXMLFile = Utils.prependedFunction(FarmStats.loadFromXMLFile, RealisticLivestock_FarmStats.loadFromXMLFile)\r\n\r\n\r\nfunction RealisticLivestock_FarmStats:saveToXMLFile(xmlFile, rootKey)\r\n\r\n    local key = rootKey .. \".statistics\"\r\n\r\n    if self.statistics.farmId == nil then self.statistics.farmId = math.random(100000, 999999) end\r\n    if self.statistics.cowId == nil then self.statistics.cowId = 0 end\r\n    if self.statistics.pigId == nil then self.statistics.pigId = 0 end\r\n    if self.statistics.sheepId == nil then self.statistics.sheepId = 0 end\r\n    if self.statistics.horseId == nil then self.statistics.horseId = 0 end\r\n    if self.statistics.chickenId == nil then self.statistics.chickenId = 0 end\r\n\r\n\r\n    xmlFile:setInt(key .. \".farmId\", self.statistics.farmId)\r\n    xmlFile:setInt(key .. \".cowId\", self.statistics.cowId)\r\n    xmlFile:setInt(key .. \".pigId\", self.statistics.pigId)\r\n    xmlFile:setInt(key .. \".sheepId\", self.statistics.sheepId)\r\n    xmlFile:setInt(key .. \".horseId\", self.statistics.horseId)\r\n    xmlFile:setInt(key .. \".chickenId\", self.statistics.chickenId)\r\n\r\nend\r\n\r\nFarmStats.saveToXMLFile = Utils.prependedFunction(FarmStats.saveToXMLFile, RealisticLivestock_FarmStats.saveToXMLFile)\r\n\r\n\r\nfunction RealisticLivestock_FarmStats:getNextAnimalId(animalType)\r\n\r\n    if animalType == AnimalType.COW then\r\n        if self.statistics.cowId == nil then self.statistics.cowId = 0 end\r\n        self.statistics.cowId = self.statistics.cowId + 1\r\n        return self.statistics.cowId\r\n    end\r\n\r\n    if animalType == AnimalType.PIG then\r\n        if self.statistics.pigId == nil then self.statistics.pigId = 0 end\r\n        self.statistics.pigId = self.statistics.pigId + 1\r\n        return self.statistics.pigId\r\n    end\r\n\r\n    if animalType == AnimalType.SHEEP then\r\n        if self.statistics.sheepId == nil then self.statistics.sheepId = 0 end\r\n        self.statistics.sheepId = self.statistics.sheepId + 1\r\n        return self.statistics.sheepId\r\n    end\r\n\r\n    if animalType == AnimalType.HORSE then\r\n        if self.statistics.horseId == nil then self.statistics.horseId = 0 end\r\n        self.statistics.horseId = self.statistics.horseId + 1\r\n        return self.statistics.horseId\r\n    end\r\n\r\n    if animalType == AnimalType.CHICKEN then\r\n        if self.statistics.chickenId == nil then self.statistics.chickenId = 0 end\r\n        self.statistics.chickenId = self.statistics.chickenId + 1\r\n        return self.statistics.chickenId\r\n    end\r\n\r\n    return 1\r\n\r\nend\r\n\r\nFarmStats.getNextAnimalId = RealisticLivestock_FarmStats.getNextAnimalId"
  },
  {
    "path": "src/fillTypes/RealisticLivestock_FillTypeManager.lua",
    "content": "RealisticLivestock_FillTypeManager = {}\r\n\r\nlocal modDir = g_currentModDirectory\r\nlocal modName = g_currentModName\r\n\r\nif FillTypeManager.SEND_NUM_BITS < 10 then FillTypeManager.SEND_NUM_BITS = 10 end\r\n\r\nfunction RealisticLivestock_FillTypeManager.loadFillTypes(xmlFile, missionInfo, baseDir)\r\n\r\n    local xml = loadXMLFile(\"fillTypes\", modDir .. \"xml/fillTypes.xml\")\r\n    g_fillTypeManager:loadFillTypes(xml, modDir , false, modName)\r\n\r\nend\r\n\r\nFillTypeManager.loadMapData = Utils.appendedFunction(FillTypeManager.loadMapData, RealisticLivestock_FillTypeManager.loadFillTypes)"
  },
  {
    "path": "src/gui/AnimalAIDialog.lua",
    "content": "AnimalAIDialog = {}\r\n\r\nlocal AnimalAIDialog_mt = Class(AnimalAIDialog, MessageDialog)\r\nlocal modDirectory = g_currentModDirectory\r\n\r\nfunction AnimalAIDialog.register()\r\n    local dialog = AnimalAIDialog.new()\r\n    g_gui:loadGui(modDirectory .. \"gui/AnimalAIDialog.xml\", \"AnimalAIDialog\", dialog)\r\n    AnimalAIDialog.INSTANCE = dialog\r\nend\r\n\r\n\r\nfunction AnimalAIDialog.new(target, customMt)\r\n    local dialog = MessageDialog.new(target, customMt or AnimalAIDialog_mt)\r\n    dialog.children = {}\r\n    return dialog\r\nend\r\n\r\n\r\nfunction AnimalAIDialog.createFromExistingGui(gui)\r\n\r\n    AnimalAIDialog.register()\r\n    AnimalAIDialog.show()\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog.show(farmId, animalTypeIndex, animal)\r\n\r\n    if AnimalAIDialog.INSTANCE == nil then AnimalAIDialog.register() end\r\n\r\n    local dialog = AnimalAIDialog.INSTANCE\r\n\r\n    dialog.farmId, dialog.animalTypeIndex, dialog.animal = farmId, animalTypeIndex, animal\r\n\r\n    dialog:updateDewars()\r\n\r\n    g_gui:showDialog(\"AnimalAIDialog\")\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:onCreate()\r\n    AnimalAIDialog:superClass().onCreate(self)\r\n    self:setDialogType(DialogElement.Type_INFO)\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:onClickOk()\r\n\r\n    local farmDewars = g_dewarManager:getDewarsByFarm(self.farmId)\r\n    local selectedDewar = self.dewars[self.dewarList.selectedIndex]\r\n    \r\n    if farmDewars == nil or farmDewars[self.animalTypeIndex] == nil or selectedDewar == nil then return end\r\n\r\n    local uniqueId = selectedDewar:getUniqueId()\r\n\r\n    for _, dewar in pairs(farmDewars[self.animalTypeIndex]) do\r\n\r\n        if dewar:getUniqueId() == uniqueId then\r\n\r\n            dewar:changeStraws(-1)\r\n            self.animal:setInsemination(dewar.animal)\r\n            break\r\n\r\n        end\r\n\r\n    end\r\n\r\n    self:updateDewars()\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:onClickBack()\r\n\r\n    self:close()\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:updateDewars()\r\n\r\n    local farmDewars = g_dewarManager:getDewarsByFarm(self.farmId)\r\n    self.dewars = farmDewars and table.clone(farmDewars[self.animalTypeIndex], 5) or {}\r\n\r\n    self:resetButtonStates()\r\n    self.dewarList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:onListSelectionChanged(list, index)\r\n\r\n    local dewar = self.dewars[index]\r\n\r\n    if dewar == nil then return end\r\n\r\n    self.okButton:setDisabled(not self.animal:getCanBeInseminatedByAnimal(dewar.animal))\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:getNumberOfSections()\r\n\r\n\tif self.dewars == nil or #self.dewars == 0 then return 0 end\r\n\r\n\treturn 1\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:getNumberOfItemsInSection(list, section)\r\n\r\n\treturn self.dewars == nil and 0 or #self.dewars\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:getTitleForSectionHeader(list, section)\r\n\r\n    return \"\"\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:populateCellForItemInSection(list, section, index, cell)\r\n\r\n\tlocal dewar = self.dewars[index]\r\n\r\n    if dewar == nil or dewar.animal == nil then return end\r\n\r\n    local animal = dewar.animal\r\n    local subType = g_currentMission.animalSystem:getSubTypeByIndex(animal.subTypeIndex)\r\n\r\n    cell:getAttribute(\"name\"):setText(animal.name)\r\n    cell:getAttribute(\"identifier\"):setText(string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[animal.country].code, animal.farmId, animal.uniqueId))\r\n    cell:getAttribute(\"subType\"):setText(g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex))\r\n    cell:getAttribute(\"straws\"):setText(dewar.straws)\r\n    cell:getAttribute(\"success\"):setText(string.format(\"%s%%\", tostring(math.round(animal.success * 100))))\r\n\r\n    cell:getAttribute(\"productivity\"):setText(\"N/A\")\r\n\r\n    for type, value in pairs(animal.genetics) do\r\n\r\n\t\tlocal valueText\r\n\r\n\t\tif value >= 1.65 then\r\n            valueText = \"extremelyHigh\"\r\n        elseif value >= 1.4 then\r\n            valueText = \"veryHigh\"\r\n        elseif value >= 1.1 then\r\n            valueText = \"high\"\r\n        elseif value >= 0.9 then\r\n            valueText = \"average\"\r\n        elseif value >= 0.7 then\r\n            valueText = \"low\"\r\n        elseif value >= 0.35 then\r\n            valueText = \"veryLow\"\r\n        else\r\n            valueText = \"extremelyLow\"\r\n        end\r\n\r\n        cell:getAttribute(type):setText(g_i18n:getText(\"rl_ui_genetics_\" .. valueText))\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:resetButtonStates()\r\n\r\n\tself.buttonStates = {\r\n\t\t[self.nameButton] = { [\"sorter\"] = false, [\"target\"] = \"animal|name\", [\"pos\"] = \"-5px\" },\r\n\t\t[self.identifierButton] = { [\"sorter\"] = false, [\"target\"] = \"identifier\", [\"pos\"] = \"12px\" },\r\n\t\t[self.subTypeButton] = { [\"sorter\"] = false, [\"target\"] = \"animal|subTypeIndex\", [\"pos\"] = \"35px\" },\r\n\t\t[self.strawsButton] = { [\"sorter\"] = false, [\"target\"] = \"straws\", [\"pos\"] = \"12px\" },\r\n\t\t[self.successButton] = { [\"sorter\"] = false, [\"target\"] = \"animal|success\", [\"pos\"] = \"12px\" },\r\n\t\t[self.metabolismButton] = { [\"sorter\"] = false, [\"target\"] = \"animal|genetics|metabolism\", [\"pos\"] = \"22px\" },\r\n\t\t[self.qualityButton] = { [\"sorter\"] = false, [\"target\"] = \"animal|genetics|quality\", [\"pos\"] = \"36px\" },\r\n\t\t[self.healthButton] = { [\"sorter\"] = false, [\"target\"] = \"animal|genetics|health\", [\"pos\"] = \"36px\" },\r\n\t\t[self.fertilityButton] = { [\"sorter\"] = false, [\"target\"] = \"animal|genetics|fertility\", [\"pos\"] = \"10px\" },\r\n\t\t[self.productivityButton] = { [\"sorter\"] = false, [\"target\"] = \"animal|genetics|productivity\", [\"pos\"] = \"20px\" }\r\n\t}\r\n\r\n\tself.sortingIcon_true:setVisible(false)\r\n\tself.sortingIcon_false:setVisible(false)\r\n\r\nend\r\n\r\n\r\nfunction AnimalAIDialog:onClickSortButton(button)\r\n\t\r\n\tlocal buttonState = self.buttonStates[button]\r\n\r\n\tself[\"sortingIcon_\" .. tostring(buttonState.sorter)]:setVisible(false)\r\n\tself[\"sortingIcon_\" .. tostring(not buttonState.sorter)]:setVisible(true)\r\n\tself[\"sortingIcon_\" .. tostring(not buttonState.sorter)]:setPosition(button.position[1] + GuiUtils.getNormalizedXValue(buttonState.pos), 0)\r\n\r\n\tbuttonState.sorter = not buttonState.sorter\r\n\t\r\n\tlocal sorter = buttonState.sorter\r\n\tlocal target = buttonState.target\r\n    local targetPaths = string.split(target, \"|\")\r\n\r\n\ttable.sort(self.dewars, function(a, b)\r\n\r\n        local aTarget, bTarget\r\n\r\n        if target == \"identifier\" then\r\n\r\n            aTarget = string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[a.animal.country].code, a.animal.farmId, a.animal.uniqueId)\r\n            bTarget = string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[b.animal.country].code, b.animal.farmId, b.animal.uniqueId)\r\n\r\n        else\r\n\r\n            aTarget = a[targetPaths[1]]\r\n            bTarget = b[targetPaths[1]]\r\n\r\n            for i = 2, #targetPaths do\r\n\r\n                aTarget = aTarget[targetPaths[i]]\r\n                bTarget = bTarget[targetPaths[i]]\r\n\r\n            end\r\n\r\n        end\r\n\r\n\t\tif sorter then return aTarget > bTarget end\r\n\r\n\t\treturn aTarget < bTarget\r\n\r\n\tend)\r\n\r\n\tself.dewarList:reloadData()\r\n\r\nend"
  },
  {
    "path": "src/gui/AnimalFilterDialog.lua",
    "content": "AnimalFilterDialog = {}\r\n\r\nlocal animalFilterDialog_mt = Class(AnimalFilterDialog, MessageDialog)\r\nlocal modDirectory = g_currentModDirectory\r\n\r\nfunction AnimalFilterDialog.register()\r\n\r\n    local dialog = AnimalFilterDialog.new()\r\n    g_gui:loadGui(modDirectory .. \"gui/AnimalFilterDialog.xml\", \"AnimalFilterDialog\", dialog)\r\n    AnimalFilterDialog.INSTANCE = dialog\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog.new(target, customMt)\r\n\r\n    local self = MessageDialog.new(target, customMt or animalFilterDialog_mt)\r\n\r\n    self.items = nil\r\n    self.filters = nil\r\n    self.elementsToDelete = {}\r\n    self.sliderTemplateOffset = GuiUtils.getNormalizedScreenValues(\"0px 45px\")\r\n    self.binaryOptionTemplateOffset = GuiUtils.getNormalizedScreenValues(\"0px 30px\")\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog.createFromExistingGui(gui)\r\n\r\n    AnimalFilterDialog.register()\r\n    AnimalFilterDialog.show()\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog.show(items, animalTypeIndex, callback, target, isBuyMode)\r\n\r\n    if AnimalFilterDialog.INSTANCE == nil then AnimalFilterDialog.register() end\r\n\r\n    local dialog = AnimalFilterDialog.INSTANCE\r\n\r\n    dialog.items = table.clone(items)\r\n    dialog.animalTypeIndex = animalTypeIndex\r\n    dialog.callback = callback\r\n    dialog.target = target\r\n    dialog.isBuyMode = isBuyMode\r\n\r\n    g_gui:showDialog(\"AnimalFilterDialog\")\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog:onOpen()\r\n\r\n    AnimalFilterDialog:superClass().onOpen(self)\r\n\r\n    self.filters = {}\r\n\r\n    for i = #self.elementsToDelete, 1, -1 do\r\n        if self.elementsToDelete[i] ~= nil then self.elementsToDelete[i]:delete() end\r\n        table.remove(self.elementsToDelete, i)\r\n    end\r\n\r\n    local items = self.items\r\n    local anyText = g_i18n:getText(\"rl_ui_any\")\r\n    local geneticsText = g_i18n:getText(\"rl_ui_genetics\") .. \": \"\r\n\r\n    local filters = {\r\n\r\n        {\r\n            [\"target\"] = \"age\",\r\n            [\"name\"] = g_i18n:getText(\"infohud_age\"),\r\n            [\"template\"] = \"sliderTemplate\",\r\n            [\"text\"] = {\r\n                [\"single\"] = g_i18n:getText(\"rl_ui_formatMonth\"),\r\n                [\"multiple\"] = g_i18n:getText(\"rl_ui_formatMonths\")\r\n            },\r\n            [\"min\"] = 0,\r\n            [\"max\"] = 1\r\n        },\r\n\r\n        {\r\n            [\"target\"] = \"health\",\r\n            [\"name\"] = g_i18n:getText(\"infohud_health\"),\r\n            [\"requiresMonitor\"] = true,\r\n            [\"template\"] = \"sliderTemplate\",\r\n            [\"text\"] = {\r\n                [\"single\"] = \"%s%%\",\r\n                [\"multiple\"] = \"%s%%\"\r\n            },\r\n            [\"min\"] = 0,\r\n            [\"max\"] = 1\r\n        },\r\n\r\n        {\r\n            [\"target\"] = \"weight\",\r\n            [\"name\"] = g_i18n:getText(\"rl_ui_weight\"),\r\n            [\"requiresMonitor\"] = true,\r\n            [\"template\"] = \"sliderTemplate\",\r\n            [\"text\"] = {\r\n                [\"single\"] = \"%skg\",\r\n                [\"multiple\"] = \"%skg\"\r\n            },\r\n            [\"min\"] = 0,\r\n            [\"max\"] = 1\r\n        },\r\n\r\n        {\r\n            [\"target\"] = \"isPregnant\",\r\n            [\"name\"] = g_i18n:getText(\"rl_ui_pregnancy\"),\r\n            [\"template\"] = \"binaryOptionTemplate\",\r\n            [\"text\"] = {\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_notPregnant\"),\r\n                    [\"value\"] = false\r\n                },\r\n                {\r\n                    [\"text\"] = anyText,\r\n                    [\"value\"] = \"ignore\"\r\n                },\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_pregnant\"),\r\n                    [\"value\"] = true\r\n                }\r\n            },\r\n            [\"default\"] = 2\r\n        },\r\n\r\n        {\r\n            [\"target\"] = \"gender\",\r\n            [\"name\"] = g_i18n:getText(\"rl_ui_gender\"),\r\n            [\"template\"] = \"binaryOptionTemplate\",\r\n            [\"text\"] = {\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_female\"),\r\n                    [\"value\"] = \"female\"\r\n                },\r\n                {\r\n                    [\"text\"] = anyText,\r\n                    [\"value\"] = \"ignore\"\r\n                },\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_male\"),\r\n                    [\"value\"] = \"male\"\r\n                }\r\n            },\r\n            [\"default\"] = 2\r\n        },\r\n\r\n        {\r\n            [\"isFunction\"] = true,\r\n            [\"target\"] = \"getHasAnyDisease\",\r\n            [\"name\"] = g_i18n:getText(\"rl_disease\"),\r\n            [\"template\"] = \"binaryOptionTemplate\",\r\n            [\"text\"] = {\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_healthy\"),\r\n                    [\"value\"] = false\r\n                },\r\n                {\r\n                    [\"text\"] = anyText,\r\n                    [\"value\"] = \"ignore\"\r\n                },\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_hasDisease\"),\r\n                    [\"value\"] = true\r\n                }\r\n            },\r\n            [\"default\"] = 1\r\n        },\r\n\r\n        {\r\n            [\"isFunction\"] = true,\r\n            [\"target\"] = \"getHasName\",\r\n            [\"name\"] = g_i18n:getText(\"infohud_name\"),\r\n            [\"template\"] = \"binaryOptionTemplate\",\r\n            [\"text\"] = {\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_doesntHaveName\"),\r\n                    [\"value\"] = false\r\n                },\r\n                {\r\n                    [\"text\"] = anyText,\r\n                    [\"value\"] = \"ignore\"\r\n                },\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_doesHaveName\"),\r\n                    [\"value\"] = true\r\n                }\r\n            },\r\n            [\"default\"] = 2\r\n        },\r\n\r\n        {\r\n            [\"isFunction\"] = true,\r\n            [\"target\"] = \"getSellPrice\",\r\n            [\"name\"] = g_i18n:getText(\"rl_ui_value\"),\r\n            [\"template\"] = \"sliderTemplate\",\r\n            [\"text\"] = {\r\n                [\"formatFunction\"] = I18N.formatMoney,\r\n                [\"target\"] = g_i18n,\r\n                [\"args\"] = {\r\n                    \"value\",\r\n                    2,\r\n                    true,\r\n                    true\r\n                }\r\n            },\r\n            [\"min\"] = 0,\r\n            [\"max\"] = 1,\r\n            [\"multiplier\"] = self.isBuyMode and 1.075 or 1\r\n        },\r\n\r\n        {\r\n            [\"isLayered\"] = true,\r\n            [\"target\"] = {\r\n                \"genetics\",\r\n                \"metabolism\"\r\n            },\r\n            [\"name\"] = geneticsText .. g_i18n:getText(\"rl_ui_metabolism\"),\r\n            [\"template\"] = \"sliderTemplate\",\r\n            [\"text\"] = {\r\n                [\"formatFunction\"] = AnimalFilterDialog.formatGenetics,\r\n                [\"target\"] = self,\r\n                [\"args\"] = {\r\n                    \"value\"\r\n                }\r\n            },\r\n            [\"min\"] = 0,\r\n            [\"max\"] = 1,\r\n            [\"multiplier\"] = 100\r\n        },\r\n\r\n        {\r\n            [\"isLayered\"] = true,\r\n            [\"target\"] = {\r\n                \"genetics\",\r\n                \"health\"\r\n            },\r\n            [\"name\"] = geneticsText .. g_i18n:getText(\"rl_ui_health\"),\r\n            [\"template\"] = \"sliderTemplate\",\r\n            [\"text\"] = {\r\n                [\"formatFunction\"] = AnimalFilterDialog.formatGenetics,\r\n                [\"target\"] = self,\r\n                [\"args\"] = {\r\n                    \"value\"\r\n                }\r\n            },\r\n            [\"min\"] = 0,\r\n            [\"max\"] = 1,\r\n            [\"multiplier\"] = 100\r\n        },\r\n\r\n        {\r\n            [\"isLayered\"] = true,\r\n            [\"target\"] = {\r\n                \"genetics\",\r\n                \"fertility\"\r\n            },\r\n            [\"name\"] = geneticsText .. g_i18n:getText(\"rl_ui_fertility\"),\r\n            [\"template\"] = \"sliderTemplate\",\r\n            [\"text\"] = {\r\n                [\"formatFunction\"] = AnimalFilterDialog.formatGenetics,\r\n                [\"target\"] = self,\r\n                [\"args\"] = {\r\n                    \"value\"\r\n                }\r\n            },\r\n            [\"min\"] = 0,\r\n            [\"max\"] = 1,\r\n            [\"multiplier\"] = 100\r\n        },\r\n\r\n        {\r\n            [\"isLayered\"] = true,\r\n            [\"target\"] = {\r\n                \"genetics\",\r\n                \"quality\"\r\n            },\r\n            [\"name\"] = geneticsText .. g_i18n:getText(\"rl_ui_meat\"),\r\n            [\"template\"] = \"sliderTemplate\",\r\n            [\"text\"] = {\r\n                [\"formatFunction\"] = AnimalFilterDialog.formatGenetics,\r\n                [\"target\"] = self,\r\n                [\"args\"] = {\r\n                    \"value\"\r\n                }\r\n            },\r\n            [\"min\"] = 0,\r\n            [\"max\"] = 1,\r\n            [\"multiplier\"] = 100\r\n        }\r\n\r\n    }\r\n\r\n    if self.animalTypeIndex == AnimalType.COW or self.animalTypeIndex == AnimalType.SHEEP or self.animalTypeIndex == AnimalType.CHICKEN then\r\n        \r\n        table.insert(filters, {\r\n            [\"isLayered\"] = true,\r\n            [\"target\"] = {\r\n                \"genetics\",\r\n                \"productivity\"\r\n            },\r\n            [\"name\"] = geneticsText .. g_i18n:getText(\"statistic_productivity\"),\r\n            [\"template\"] = \"sliderTemplate\",\r\n            [\"text\"] = {\r\n                [\"formatFunction\"] = AnimalFilterDialog.formatGenetics,\r\n                [\"target\"] = self,\r\n                [\"args\"] = {\r\n                    \"value\"\r\n                }\r\n            },\r\n            [\"min\"] = 0,\r\n            [\"max\"] = 1,\r\n            [\"multiplier\"] = 100\r\n        })\r\n\r\n    end\r\n\r\n\r\n    if self.animalTypeIndex == AnimalType.COW then\r\n\r\n        table.insert(filters, 6, {\r\n            [\"target\"] = \"isLactating\",\r\n            [\"name\"] = g_i18n:getText(\"rl_ui_lactating\"),\r\n            [\"template\"] = \"binaryOptionTemplate\",\r\n            [\"text\"] = {\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_no\"),\r\n                    [\"value\"] = false\r\n                },\r\n                {\r\n                    [\"text\"] = anyText,\r\n                    [\"value\"] = \"ignore\"\r\n                },\r\n                {\r\n                    [\"text\"] = g_i18n:getText(\"rl_ui_yes\"),\r\n                    [\"value\"] = true\r\n                }\r\n            },\r\n            [\"default\"] = 2\r\n        })\r\n\r\n    end\r\n\r\n\r\n    for _, item in pairs(items) do\r\n\r\n        local animal = item.animal or item.cluster\r\n\r\n        for _, filter in pairs(filters) do\r\n\r\n            if (filter.requiresMonitor and not animal.monitor.active and not animal.monitor.removed) or filter.template ~= \"sliderTemplate\" then continue end\r\n\r\n            local value\r\n\r\n            if filter.isLayered then\r\n\r\n                value = animal\r\n\r\n                for _, target in pairs(filter.target) do\r\n\r\n                    value = value[target]\r\n\r\n                end\r\n\r\n            elseif filter.isFunction then\r\n\r\n                value = animal[filter.target](animal)\r\n\r\n            else\r\n\r\n                value = animal[filter.target]\r\n\r\n            end\r\n\r\n            if value < filter.min then filter.min = math.floor(value) end\r\n            if value > filter.max then filter.max = math.ceil(value) end\r\n\r\n            filter.hasValues = true\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n    for i = #filters, 1, -1 do\r\n\r\n        if filters[i].template == \"sliderTemplate\" and not filters[i].hasValues then table.remove(filters, i) end\r\n\r\n    end\r\n\r\n\r\n    self.filters = filters\r\n\r\n    self.filterList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog:onClose()\r\n\r\n    AnimalFilterDialog:superClass().onClose(self)\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog:onClickOk()\r\n\r\n    for i = #self.filters, 1, -1 do\r\n\r\n        local filter = self.filters[i]\r\n        local element = self.elementsToDelete[i]\r\n\r\n        if filter.template == \"sliderTemplate\" and element ~= nil then\r\n\r\n            local multiplier = filter.multiplier or 1\r\n\r\n            filter.min, filter.max = (element:getLowestState() - 1) / multiplier , (element:getHighestState() - 1) / multiplier\r\n\r\n        end\r\n\r\n        if filter.template == \"binaryOptionTemplate\" then\r\n\r\n            local state = element == nil and (filter.default or 1) or element:getState()\r\n            local value = filter.text[state].value\r\n\r\n            if value == \"ignore\" then\r\n                table.remove(self.filters, i)\r\n                continue\r\n            end\r\n\r\n            filter.value = value\r\n\r\n        end\r\n\r\n    end\r\n\r\n    for i = #self.items, 1, -1 do\r\n\r\n        local item = self.items[i]\r\n        local animal = item.animal or item.cluster\r\n        local meetsFilters = true\r\n\r\n        for _, filter in pairs(self.filters) do\r\n\r\n            if filter.requiresMonitor and not animal.monitor.active and not animal.monitor.removed then continue end\r\n\r\n            if filter.template == \"sliderTemplate\" then\r\n\r\n                local value\r\n\r\n                if filter.isLayered then\r\n\r\n                    value = animal\r\n\r\n                    for _, target in pairs(filter.target) do value = value[target] end\r\n\r\n                elseif filter.isFunction then\r\n\r\n                    value = animal[filter.target](animal)\r\n\r\n                    if filter.name == \"Value\" and self.isBuyMode then value = value * 1.075 end\r\n\r\n                else\r\n\r\n                    value = animal[filter.target]\r\n\r\n                end\r\n\r\n                if value < filter.min or value > filter.max then\r\n                    meetsFilters = false\r\n                    break\r\n                end\r\n\r\n            end\r\n\r\n\r\n            if filter.template == \"binaryOptionTemplate\" then\r\n\r\n                local Value\r\n\r\n                if filter.isFunction then\r\n                    \r\n                    value = animal[filter.target](animal)\r\n\r\n                else\r\n\r\n                    value = animal[filter.target]\r\n\r\n                end\r\n\r\n                if value ~= filter.value then\r\n                    meetsFilters = false\r\n                    break\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n\r\n        self.items[i].originalIndex = i\r\n\r\n        if not meetsFilters then table.remove(self.items, i) end\r\n\r\n    end\r\n\r\n    if self.callback ~= nil then\r\n\r\n        if self.target ~= nil then\r\n            self.callback(self.target, self.filters, self.items)\r\n        else\r\n            self.callback(self.filters, self.items)\r\n        end\r\n\r\n    end\r\n\r\n    self:close()\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog:getNumberOfSections()\r\n\r\n\treturn 1\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog:getNumberOfItemsInSection(list, section)\r\n\r\n\treturn #self.filters\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog:getTitleForSectionHeader(list, section)\r\n\r\n    return \"\"\r\n\r\nend\r\n\r\n\r\nfunction AnimalFilterDialog:populateCellForItemInSection(list, section, index, cell)\r\n\r\n\tlocal filter = self.filters[index]\r\n\r\n    cell:findAllAttributes()\r\n\r\n    cell:getAttribute(\"name\"):setText(filter.name)\r\n\r\n    if filter.template ~= nil then\r\n\r\n        if self.elementsToDelete[index] ~= nil then\r\n\r\n            local oldTemplate = self.elementsToDelete[index]\r\n            local template = self[filter.template]:clone(cell, false, false)\r\n\r\n            local texts = table.clone(oldTemplate.texts)\r\n            template:setTexts(texts)\r\n\r\n            template:setPosition(self[filter.template .. \"Offset\"][1], self[filter.template .. \"Offset\"][2])\r\n            template:setVisible(true)\r\n\r\n            if filter.template == \"sliderTemplate\" then\r\n\r\n                template.leftState = oldTemplate.leftState\r\n                template.rightState = oldTemplate.rightState\r\n\r\n                template:updateContentElement()\r\n                template:updateSlider()\r\n\r\n            end\r\n\r\n            if filter.template == \"binaryOptionTemplate\" then\r\n\r\n                template:setState(oldTemplate:getState(), false, true)\r\n\r\n            end\r\n\r\n            oldTemplate:delete()\r\n            self.elementsToDelete[index] = template\r\n\r\n\r\n        else\r\n\r\n            local template = self[filter.template]:clone(cell, false, false)\r\n            local templateTexts = {}\r\n\r\n            if filter.template == \"sliderTemplate\" then\r\n\r\n                local multiplier = filter.multiplier or 1\r\n\r\n                for i = filter.min * multiplier, filter.max * multiplier do\r\n\r\n                    if filter.text.formatFunction ~= nil then\r\n\r\n                        local args = table.clone(filter.text.args or {})\r\n\r\n                        for argIndex, arg in pairs(args) do if arg == \"value\" then args[argIndex] = i end end\r\n\r\n                        local text = filter.text.formatFunction(filter.text.target, args[1], args[2], args[3], args[4])\r\n                        table.insert(templateTexts, text)\r\n                \r\n                    else\r\n\r\n                        table.insert(templateTexts, string.format(filter.text[i == 1 and \"single\" or \"multiple\"], i))\r\n\r\n                    end\r\n\r\n                end\r\n\r\n            end\r\n\r\n            if filter.template == \"binaryOptionTemplate\" then\r\n\r\n                for _, data in pairs(filter.text) do table.insert(templateTexts, data.text) end\r\n\r\n            end\r\n\r\n            template:setTexts(templateTexts)\r\n            template:setPosition(self[filter.template .. \"Offset\"][1], self[filter.template .. \"Offset\"][2])\r\n            template:setVisible(true)\r\n\r\n            if filter.template == \"binaryOptionTemplate\" then template:setState(filter.default or 1) end\r\n\r\n            self.elementsToDelete[index] = template\r\n\r\n        end\r\n\r\n    end\r\n\r\n    for name, element in pairs(cell.attributes) do\r\n    \r\n        if name ~= \"name\" and name ~= \"separator\" then element:delete() end\r\n\r\n    end\r\n    \r\nend\r\n\r\n\r\nfunction AnimalFilterDialog:formatGenetics(value)\r\n\r\n    local text\r\n\r\n    if value >= 165 then\r\n        text = \"extremelyHigh\"\r\n    elseif value >= 140 then\r\n        text = \"veryHigh\"\r\n    elseif value >= 110 then\r\n        text = \"high\"\r\n    elseif value >= 90 then\r\n        text = \"average\"\r\n    elseif value >= 70 then\r\n        text = \"low\"\r\n    elseif value >= 35 then\r\n        text = \"veryLow\"\r\n    else\r\n        text = \"extremelyLow\"\r\n    end\r\n\r\n    return g_i18n:getText(\"rl_ui_genetics_\" .. text)\r\n\r\nend"
  },
  {
    "path": "src/gui/AnimalInfoDialog.lua",
    "content": "AnimalInfoDialog = {}\r\n\r\nlocal animalInfoDialog_mt = Class(AnimalInfoDialog, MessageDialog)\r\nlocal modDirectory = g_currentModDirectory\r\n\r\nfunction AnimalInfoDialog.register()\r\n    local dialog = AnimalInfoDialog.new()\r\n    g_gui:loadGui(modDirectory .. \"gui/AnimalInfoDialog.xml\", \"AnimalInfoDialog\", dialog)\r\n    AnimalInfoDialog.INSTANCE = dialog\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog.new(target, customMt)\r\n    local dialog = MessageDialog.new(target, customMt or animalInfoDialog_mt)\r\n    dialog.children = {}\r\n    return dialog\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog.createFromExistingGui(gui)\r\n\r\n    AnimalInfoDialog.register()\r\n    AnimalInfoDialog.show()\r\n\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog.show(farmId, uniqueId, children, animalType, identifiers)\r\n\r\n    if AnimalInfoDialog.INSTANCE == nil then AnimalInfoDialog.register() end\r\n\r\n    local dialog = AnimalInfoDialog.INSTANCE\r\n\r\n    dialog.identifiers = identifiers\r\n    dialog.animalType = animalType\r\n    dialog:setDialogType(DialogElement.TYPE_INFO)\r\n    dialog.children = children or {}\r\n    dialog:setChildren(children or {})\r\n    local success = dialog:updateContent(farmId, uniqueId, children ~= nil and #children > 0)\r\n\r\n    if success then g_gui:showDialog(\"AnimalInfoDialog\") end\r\n\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog:onOpen()\r\n    AnimalInfoDialog:superClass().onOpen(self)\r\n    FocusManager:setFocus(self.dialogTextElement)\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog:onClose()\r\n    self.children = {}\r\n    AnimalInfoDialog:superClass().onClose(self)\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog:onCreate()\r\n    AnimalInfoDialog:superClass().onCreate(self)\r\n    self:setDialogType(DialogElement.Type_INFO)\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog:onClickOk()\r\n    self:close()\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog:setTexts(baseStatsTexts, advancedStatsTexts, horseStatsTexts, geneticsStatsTexts)\r\n\r\n    for i=10, #self.infoTitle do\r\n        self.infoTitle[i]:setVisible(false)\r\n        self.infoValue[i]:setVisible(false)\r\n        self.infoTitle[i]:setTextColor(0.89627, 0.92158, 0.81485, 1)\r\n        self.infoValue[i]:setTextColor(0.89627, 0.92158, 0.81485, 1)\r\n    end\r\n\r\n    self.separator1:setVisible(#advancedStatsTexts > 0 or #horseStatsTexts > 0 or #geneticsStatsTexts > 0)\r\n    self.separator2:setVisible(#advancedStatsTexts > 0 and (#horseStatsTexts > 0 or #geneticsStatsTexts > 0))\r\n    self.separator3:setVisible(#advancedStatsTexts > 0 and #horseStatsTexts > 0 and #geneticsStatsTexts > 0)\r\n\r\n\r\n\r\n    for i=1, 9 do\r\n\r\n        self.infoTitle[i]:setVisible(baseStatsTexts[i] ~= nil)\r\n        self.infoValue[i]:setVisible(baseStatsTexts[i] ~= nil)\r\n\r\n        if baseStatsTexts[i] ~= nil then\r\n            self.infoTitle[i]:setText(baseStatsTexts[i].title)\r\n            self.infoValue[i]:setText(baseStatsTexts[i].text)\r\n        end\r\n\r\n    end\r\n\r\n    local k = 1\r\n\r\n    if #advancedStatsTexts > 0 then\r\n\r\n        for i=10, 15 do\r\n\r\n            self.infoTitle[i]:setVisible(advancedStatsTexts[k] ~= nil)\r\n            self.infoValue[i]:setVisible(advancedStatsTexts[k] ~= nil)\r\n\r\n            if advancedStatsTexts[k] ~= nil then\r\n                self.infoTitle[i]:setText(advancedStatsTexts[k].title)\r\n                self.infoValue[i]:setText(advancedStatsTexts[k].text)\r\n            end\r\n\r\n            k = k + 1\r\n\r\n        end\r\n\r\n    elseif #horseStatsTexts > 0 then\r\n\r\n        for i=10, 15 do\r\n\r\n            self.infoTitle[i]:setVisible(horseStatsTexts[k] ~= nil)\r\n            self.infoValue[i]:setVisible(horseStatsTexts[k] ~= nil)\r\n\r\n            if horseStatsTexts[k] ~= nil then\r\n                self.infoTitle[i]:setText(horseStatsTexts[k].title)\r\n                self.infoValue[i]:setText(horseStatsTexts[k].text)\r\n            end\r\n\r\n            k = k + 1\r\n\r\n        end\r\n\r\n    elseif #geneticsStatsTexts > 0 then\r\n\r\n        for i=10, 15 do\r\n\r\n            self.infoTitle[i]:setVisible(geneticsStatsTexts[k] ~= nil)\r\n            self.infoValue[i]:setVisible(geneticsStatsTexts[k] ~= nil)\r\n\r\n           if geneticsStatsTexts[k] ~= nil then\r\n                self.infoTitle[i]:setText(geneticsStatsTexts[k].title)\r\n                self.infoValue[i]:setText(g_i18n:getText(geneticsStatsTexts[k].text))\r\n\r\n                local quality = geneticsStatsTexts[k].text\r\n\r\n                if quality == \"rl_ui_genetics_extremelyLow\" or quality == \"rl_ui_genetics_extremelyBad\" then\r\n                    self.infoTitle[i]:setTextColor(1, 0, 0, 1)\r\n                    self.infoValue[i]:setTextColor(1, 0, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_veryLow\" or quality == \"rl_ui_genetics_veryBad\" then\r\n                    self.infoTitle[i]:setTextColor(1, 0.2, 0, 1)\r\n                    self.infoValue[i]:setTextColor(1, 0.2, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_low\" or quality == \"rl_ui_genetics_bad\" then\r\n                    self.infoTitle[i]:setTextColor(1, 0.52, 0, 1)\r\n                    self.infoValue[i]:setTextColor(1, 0.52, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_average\" then\r\n                    self.infoTitle[i]:setTextColor(1, 1, 0, 1)\r\n                    self.infoValue[i]:setTextColor(1, 1, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_high\" or quality == \"rl_ui_genetics_good\" then\r\n                    self.infoTitle[i]:setTextColor(0.52, 1, 0, 1)\r\n                    self.infoValue[i]:setTextColor(0.52, 1, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_veryHigh\" or quality == \"rl_ui_genetics_veryGood\" then\r\n                    self.infoTitle[i]:setTextColor(0.2, 1, 0, 1)\r\n                    self.infoValue[i]:setTextColor(0.2, 1, 0, 1)\r\n                else\r\n                    self.infoTitle[i]:setTextColor(0, 1, 0, 1)\r\n                    self.infoValue[i]:setTextColor(0, 1, 0, 1)\r\n                end\r\n            end\r\n\r\n            k = k + 1\r\n\r\n        end\r\n\r\n    end\r\n\r\n    k = 1\r\n\r\n    if #advancedStatsTexts > 0 then\r\n\r\n        if #horseStatsTexts > 0 then\r\n\r\n            for i=16, 21 do\r\n\r\n                self.infoTitle[i]:setVisible(horseStatsTexts[k] ~= nil)\r\n                self.infoValue[i]:setVisible(horseStatsTexts[k] ~= nil)\r\n\r\n                if horseStatsTexts[k] ~= nil then\r\n                    self.infoTitle[i]:setText(horseStatsTexts[k].title)\r\n                    self.infoValue[i]:setText(horseStatsTexts[k].text)\r\n                end\r\n\r\n                k = k + 1\r\n\r\n            end\r\n\r\n        elseif #geneticsStatsTexts > 0 then\r\n\r\n            for i=16, 21 do\r\n\r\n                self.infoTitle[i]:setVisible(geneticsStatsTexts[k] ~= nil)\r\n                self.infoValue[i]:setVisible(geneticsStatsTexts[k] ~= nil)\r\n\r\n                if geneticsStatsTexts[k] ~= nil then\r\n                    self.infoTitle[i]:setText(geneticsStatsTexts[k].title)\r\n                    self.infoValue[i]:setText(g_i18n:getText(geneticsStatsTexts[k].text))\r\n\r\n                    local quality = geneticsStatsTexts[k].text\r\n\r\n                    if quality == \"rl_ui_genetics_extremelyLow\" or quality == \"rl_ui_genetics_extremelyBad\" then\r\n                        self.infoTitle[i]:setTextColor(1, 0, 0, 1)\r\n                        self.infoValue[i]:setTextColor(1, 0, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_veryLow\" or quality == \"rl_ui_genetics_veryBad\" then\r\n                        self.infoTitle[i]:setTextColor(1, 0.2, 0, 1)\r\n                        self.infoValue[i]:setTextColor(1, 0.2, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_low\" or quality == \"rl_ui_genetics_bad\" then\r\n                        self.infoTitle[i]:setTextColor(1, 0.52, 0, 1)\r\n                        self.infoValue[i]:setTextColor(1, 0.52, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_average\" then\r\n                        self.infoTitle[i]:setTextColor(1, 1, 0, 1)\r\n                        self.infoValue[i]:setTextColor(1, 1, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_high\" or quality == \"rl_ui_genetics_good\" then\r\n                        self.infoTitle[i]:setTextColor(0.52, 1, 0, 1)\r\n                        self.infoValue[i]:setTextColor(0.52, 1, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_veryHigh\" or quality == \"rl_ui_genetics_veryGood\" then\r\n                        self.infoTitle[i]:setTextColor(0.2, 1, 0, 1)\r\n                        self.infoValue[i]:setTextColor(0.2, 1, 0, 1)\r\n                    else\r\n                        self.infoTitle[i]:setTextColor(0, 1, 0, 1)\r\n                        self.infoValue[i]:setTextColor(0, 1, 0, 1)\r\n                    end\r\n                end\r\n\r\n                k = k + 1\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    k = 1\r\n\r\n    if #advancedStatsTexts > 0 and #horseStatsTexts > 0  then\r\n\r\n        for i=22, 27 do\r\n\r\n                self.infoTitle[i]:setVisible(geneticsStatsTexts[k] ~= nil)\r\n                self.infoValue[i]:setVisible(geneticsStatsTexts[k] ~= nil)\r\n\r\n                if geneticsStatsTexts[k] ~= nil then\r\n                    self.infoTitle[i]:setText(geneticsStatsTexts[k].title)\r\n                    self.infoValue[i]:setText(g_i18n:getText(geneticsStatsTexts[k].text))\r\n\r\n                    local quality = geneticsStatsTexts[k].text\r\n\r\n                    if quality == \"rl_ui_genetics_extremelyLow\" or quality == \"rl_ui_genetics_extremelyBad\" then\r\n                        self.infoTitle[i]:setTextColor(1, 0, 0, 1)\r\n                        self.infoValue[i]:setTextColor(1, 0, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_veryLow\" or quality == \"rl_ui_genetics_veryBad\" then\r\n                        self.infoTitle[i]:setTextColor(1, 0.2, 0, 1)\r\n                        self.infoValue[i]:setTextColor(1, 0.2, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_low\" or quality == \"rl_ui_genetics_bad\" then\r\n                        self.infoTitle[i]:setTextColor(1, 0.52, 0, 1)\r\n                        self.infoValue[i]:setTextColor(1, 0.52, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_average\" then\r\n                        self.infoTitle[i]:setTextColor(1, 1, 0, 1)\r\n                        self.infoValue[i]:setTextColor(1, 1, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_high\" or quality == \"rl_ui_genetics_good\" then\r\n                        self.infoTitle[i]:setTextColor(0.52, 1, 0, 1)\r\n                        self.infoValue[i]:setTextColor(0.52, 1, 0, 1)\r\n                    elseif quality == \"rl_ui_genetics_veryHigh\" or quality == \"rl_ui_genetics_veryGood\" then\r\n                        self.infoTitle[i]:setTextColor(0.2, 1, 0, 1)\r\n                        self.infoValue[i]:setTextColor(0.2, 1, 0, 1)\r\n                    else\r\n                        self.infoTitle[i]:setTextColor(0, 1, 0, 1)\r\n                        self.infoValue[i]:setTextColor(0, 1, 0, 1)\r\n                    end\r\n                end\r\n\r\n                k = k + 1\r\n\r\n            end\r\n\r\n    end\r\n\r\n\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog:setChildren(children)\r\n\r\n    local texts = {}\r\n    local foundChildren = {}\r\n    local placeables = g_currentMission.placeableSystem.placeables\r\n\r\n    for _, placeable in ipairs(placeables) do\r\n\r\n        if placeable.spec_husbandryAnimals == nil and placeable.spec_livestockTrailer == nil then continue end\r\n\r\n        local clusterSystem = nil\r\n\r\n        if placeable.spec_husbandryAnimals ~= nil then\r\n            if placeable.spec_husbandryAnimals.animalTypeIndex ~= self.animalType then continue end\r\n            clusterSystem = placeable.spec_husbandryAnimals.clusterSystem\r\n        elseif placeable.spec_livestockTrailer ~= nil then\r\n            clusterSystem = placeable.spec_livestockTrailer.clusterSystem\r\n        end\r\n        if clusterSystem == nil then continue end\r\n\r\n        local animals = clusterSystem:getAnimals()\r\n\r\n        for _, animal in ipairs(animals) do\r\n\r\n            for _, child in ipairs(children) do\r\n                if child.farmId == animal.farmId and child.uniqueId == animal.uniqueId then\r\n                    table.insert(foundChildren, animal)\r\n                    break\r\n                end\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    self.children = foundChildren\r\n\r\n    for _, child in ipairs(foundChildren) do\r\n        table.insert(texts, child.farmId .. \" \" .. child.uniqueId)\r\n    end\r\n\r\n    self.childrenSelector:setTexts(texts or {})\r\n    self.childrenSelector:setVisible(foundChildren ~= nil and #foundChildren > 0)\r\n    if foundChildren ~= nil and #foundChildren > 0 then self.childrenSelector:setState(1) end\r\n\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog:onClickItems(index, _, _)\r\n\r\n    if self.children == nil or #self.children == 0 or self.children[index] == nil then return end\r\n    self:updateContent(self.children[index].farmId, self.children[index].uniqueId, true)\r\n\r\nend\r\n\r\n\r\nfunction AnimalInfoDialog:updateContent(farmId, uniqueId, useChildren)\r\n\r\n    if farmId == nil or uniqueId == nil then return false end\r\n\r\n    local parent = nil\r\n\r\n    if useChildren then\r\n\r\n        for _, child in ipairs(self.children) do\r\n            if child.farmId == farmId and child.uniqueId == uniqueId then\r\n                parent = child\r\n                break\r\n            end\r\n        end\r\n\r\n    else\r\n\r\n        local foundAnimals = {}\r\n\r\n        local placeables = g_currentMission.placeableSystem.placeables\r\n\r\n        for _, placeable in ipairs(placeables) do\r\n\r\n            if placeable.spec_husbandryAnimals == nil and placeable.spec_livestockTrailer == nil then continue end\r\n\r\n            local clusterSystem = nil\r\n\r\n            if placeable.spec_husbandryAnimals ~= nil then\r\n                if placeable.spec_husbandryAnimals.animalTypeIndex ~= self.animalType then continue end\r\n                clusterSystem = placeable.spec_husbandryAnimals.clusterSystem\r\n            elseif placeable.spec_livestockTrailer ~= nil then\r\n                clusterSystem = placeable.spec_livestockTrailer.clusterSystem\r\n            end\r\n            if clusterSystem == nil then continue end\r\n\r\n            local animals = clusterSystem:getAnimals()\r\n            for _, animal in ipairs(animals) do\r\n\r\n                if self.children ~= nil and #self.children > 1 and (animal.farmId ~= farmId or animal.uniqueId ~= uniqueId) then\r\n\r\n                    for _, child in ipairs(self.children) do\r\n                        if child.farmId == animal.farmId and child.uniqueId == animal.uniqueId then\r\n                            table.insert(foundAnimals, animal)\r\n                            break\r\n                        end\r\n                    end\r\n\r\n                end\r\n\r\n                if animal.farmId ~= farmId or animal.uniqueId ~= uniqueId then continue end\r\n\r\n                --parent = animal\r\n                table.insert(foundAnimals, animal)\r\n                if self.children == nil or #self.children <= 1 then break end\r\n            end\r\n\r\n            --if parent ~= nil then break end\r\n\r\n            if (self.children == nil or #self.children <= 1) and #foundAnimals >= 1 then\r\n                parent = foundAnimals[1]\r\n                break\r\n            end\r\n\r\n        end\r\n\r\n        if parent == nil then\r\n            --if self.children ~= nil and #self.children > 1 and self.childrenSelector:getState() < #self.children then\r\n                --local index = self.childrenSelector:getState() + 1\r\n                --self.childrenSelector:setState(index)\r\n                --self:updateContent(self.children[index].farmId, self.children[index].uniqueId)\r\n            --else\r\n                --InfoDialog.INSTANCE:setText(\"Could not find animal\")\r\n                --g_gui:showDialog(\"InfoDialog\")\r\n                --return false\r\n            --end\r\n\r\n            if self.children ~= nil and #self.children > 1 and #foundAnimals >= 1 then\r\n\r\n                local index = self.childrenSelector:getState()\r\n\r\n                while index <= #self.children do\r\n                    for _, child in ipairs(foundAnimals) do\r\n                        if child.farmId == self.children[index].farmId and child.uniqueId == self.children[index].uniqueId then\r\n                            parent = child\r\n                            self.childrenSelector:setState(index)\r\n                            break\r\n                        end\r\n                    end\r\n\r\n                    if parent ~= nil then break end\r\n\r\n                    index = index + 1\r\n                end\r\n            end\r\n\r\n\r\n\r\n        end\r\n\r\n    end\r\n\r\n    if parent == nil then\r\n        InfoDialog.INSTANCE:setText(g_i18n:getText(\"rl_ui_cantFindAnimal\"))\r\n        g_gui:showDialog(\"InfoDialog\")\r\n        return false\r\n    end\r\n\r\n        local visual = g_currentMission.animalSystem:getVisualByAge(parent:getSubTypeIndex(), parent.age)\r\n        self.animalIcon:setImageFilename(visual.store.imageFilename)\r\n\r\n        local baseStatsTexts = {}\r\n        local advancedStatsTexts = {}\r\n        local horseStatsTexts = {}\r\n        local geneticsStatsTexts = {}\r\n\r\n        local text = {\r\n            title = g_i18n:getText(\"rl_ui_uniqueId\"),\r\n            text = uniqueId\r\n        }\r\n\r\n        table.insert(baseStatsTexts, text)\r\n\r\n        text = {\r\n            title = g_i18n:getText(\"rl_ui_farmId\"),\r\n            text = farmId\r\n        }\r\n\r\n        table.insert(baseStatsTexts, text)\r\n\r\n        text = {\r\n            title = g_i18n:getText(\"infohud_age\"),\r\n            text = g_i18n:formatNumMonth(parent.age)\r\n        }\r\n\r\n        table.insert(baseStatsTexts, text)\r\n\r\n        text = {\r\n            title = g_i18n:getText(\"infohud_health\"),\r\n            text = string.format(\"%d %%\", parent.health)\r\n        }\r\n\r\n        table.insert(baseStatsTexts, text)\r\n\r\n        text = {\r\n            title = g_i18n:getText(\"rl_ui_gender\"),\r\n            text = g_i18n:getText(\"rl_ui_\" .. parent.gender)\r\n        }\r\n\r\n        table.insert(baseStatsTexts, text)\r\n\r\n        text = {\r\n            title = g_i18n:getText(\"rl_ui_weight\"),\r\n            text = string.format(\"%.2f\", parent.weight) .. \"kg\"\r\n        }\r\n\r\n        table.insert(baseStatsTexts, text)\r\n\r\n        text = {\r\n            title = g_i18n:getText(\"rl_ui_value\"),\r\n            text = g_i18n:formatMoney(parent:getSellPrice(), 2, true, true)\r\n        }\r\n\r\n        table.insert(baseStatsTexts, text)\r\n\r\n        text = {\r\n            title = g_i18n:getText(\"rl_ui_targetWeight\"),\r\n            text = string.format(\"%.2f\", parent.targetWeight) .. \"kg\"\r\n        }\r\n\r\n        table.insert(baseStatsTexts, text)\r\n\r\n        text = {\r\n            title = g_i18n:getText(\"rl_ui_valuePerKilo\"),\r\n            text = g_i18n:formatMoney(parent:getSellPrice() / parent.weight, 2, true, true)\r\n        }\r\n\r\n        table.insert(baseStatsTexts, text)\r\n\r\n\r\n        if parent.gender == \"female\" then\r\n\r\n            text = {\r\n                title = g_i18n:getText(\"infohud_reproduction\"),\r\n                text = string.format(\"%d %%\", parent.reproduction)\r\n            }\r\n\r\n            table.insert(advancedStatsTexts, text)\r\n\r\n            local subType = parent:getSubType()\r\n            local healthFactor = parent:getHealthFactor()\r\n            local canReproduce = g_i18n:getText(\"rl_ui_yes\")\r\n\r\n            if parent.age < subType.reproductionMinAgeMonth then\r\n                canReproduce = g_i18n:getText(\"rl_ui_tooYoungBracketed\")\r\n            elseif parent.isParent and parent.monthsSinceLastBirth <= 2 then\r\n                canReproduce = g_i18n:getText(\"rl_ui_recoveringLastBirthBracketed\")\r\n            elseif not RealisticLivestock.hasMaleAnimalInPen(parent.clusterSystem.owner.spec_husbandryAnimals, subType.name) and not parent.isPregnant then\r\n                canReproduce = g_i18n:getText(\"rl_ui_noMaleAnimalBracketed\")\r\n            elseif healthFactor < subType.reproductionMinHealth then\r\n                canReproduce = g_i18n:getText(\"rl_ui_unhealthyBracketed\")\r\n            end\r\n\r\n\r\n            text = {\r\n                title = g_i18n:getText(\"rl_ui_canReproduce\"),\r\n                text = canReproduce\r\n            }\r\n\r\n            table.insert(advancedStatsTexts, text)\r\n\r\n            if parent.age >= subType.reproductionMinAgeMonth then\r\n                text = {\r\n                    title = g_i18n:getText(\"rl_ui_pregnant\"),\r\n                    text = parent.isPregnant and g_i18n:getText(\"rl_ui_yes\") or g_i18n:getText(\"rl_ui_no\")\r\n                }\r\n\r\n                table.insert(advancedStatsTexts, text)\r\n            end\r\n\r\n            if parent.isPregnant then\r\n                text = {\r\n                    title = g_i18n:getText(\"rl_ui_impregnatedBy\"),\r\n                    text = (parent.impregnatedBy ~= nil and parent.impregnatedBy.uniqueId ~= \"-1\") and parent.impregnatedBy.uniqueId or g_i18n:getText(\"rl_ui_unknown\")\r\n                }\r\n\r\n                table.insert(advancedStatsTexts, text)\r\n            end\r\n\r\n\r\n\r\n            if parent.clusterSystem ~= nil and parent.clusterSystem.owner.spec_husbandryMilk ~= nil and parent.age >= 12 then\r\n                text = {\r\n                    title = g_i18n:getText(\"rl_ui_lactating\"),\r\n                    text = parent.isLactating and g_i18n:getText(\"rl_ui_yes\") or g_i18n:getText(\"rl_ui_no\")\r\n                }\r\n\r\n                table.insert(advancedStatsTexts, text)\r\n            end\r\n\r\n        end\r\n\r\n\r\n        if string.contains(parent.subType, \"HORSE\", true) or string.contains(parent.subType, \"STALLION\", true) then\r\n\r\n            text = {\r\n                title = g_i18n:getText(\"infohud_riding\"),\r\n                text = string.format(\"%d %%\", parent.riding)\r\n            }\r\n\r\n            table.insert(horseStatsTexts, text)\r\n\r\n            text = {\r\n\r\n                title = g_i18n:getText(\"infohud_fitness\"),\r\n                text = string.format(\"%d %%\", parent.fitness)\r\n            }\r\n\r\n            table.insert(horseStatsTexts, text)\r\n\r\n            text = {\r\n                title = g_i18n:getText(\"statistic_cleanliness\"),\r\n                text = string.format(\"%d %%\", parent.dirt)\r\n            }\r\n\r\n            table.insert(horseStatsTexts, text)\r\n\r\n        end\r\n\r\n\r\n        geneticsStatsTexts = parent:addGeneticsInfo()\r\n\r\n\r\n        self:setTexts(baseStatsTexts, advancedStatsTexts, horseStatsTexts, geneticsStatsTexts)\r\n\r\n        return true\r\n\r\n\r\nend"
  },
  {
    "path": "src/gui/DiseaseDialog.lua",
    "content": "DiseaseDialog = {}\r\n\r\nlocal diseaseDialog_mt = Class(DiseaseDialog, MessageDialog)\r\nlocal modDirectory = g_currentModDirectory\r\n\r\nfunction DiseaseDialog.register()\r\n\r\n    local dialog = DiseaseDialog.new()\r\n    g_gui:loadGui(modDirectory .. \"gui/DiseaseDialog.xml\", \"DiseaseDialog\", dialog)\r\n    DiseaseDialog.INSTANCE = dialog\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog.new(target, customMt)\r\n\r\n    local self = MessageDialog.new(target, customMt or diseaseDialog_mt)\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog.createFromExistingGui(gui)\r\n\r\n    DiseaseDialog.register()\r\n    DiseaseDialog.show()\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog.show(animal)\r\n\r\n    if DiseaseDialog.INSTANCE == nil then DiseaseDialog.register() end\r\n\r\n    local dialog = DiseaseDialog.INSTANCE\r\n\r\n    dialog.animal = animal\r\n    dialog.diseases = table.clone(animal.diseases)\r\n\r\n    g_gui:showDialog(\"DiseaseDialog\")\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog:onOpen()\r\n\r\n    DiseaseDialog:superClass().onOpen(self)\r\n\r\n    self.diseaseList:reloadData()\r\n\r\n    self:onClickListItem(1)\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog:onClickOk()\r\n\r\n    local disease = self.diseases[self.diseaseList.selectedIndex]\r\n\r\n    if disease == nil or disease.type.treatment == nil or disease.cured then return end\r\n\r\n    disease.beingTreated = not disease.beingTreated\r\n\r\n    if not disease.beingTreated then\r\n        self.animal:addMessage(\"DISEASE_TREATMENT_STOP\", { disease.type.name })\r\n    else\r\n        self.animal:addMessage(\"DISEASE_TREATMENT_\" .. (disease.treatmentDuration > 0 and \"RESUME\" or \"START\"), { disease.type.name, string.format(g_i18n:getText(\"rl_ui_feePerMonth\"), g_i18n:formatMoney(disease.type.treatment.cost, 2, true, true)) })\r\n    end\r\n    \r\n    for _, aDisease in pairs(self.animal.diseases) do\r\n\r\n        if aDisease.type.title == disease.type.title then\r\n            aDisease.beingTreated = disease.beingTreated\r\n            break\r\n        end\r\n\r\n    end\r\n\r\n    self:onClickListItem(self.diseaseList.selectedIndex)\r\n    self.diseaseList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog:onClickListItem(index)\r\n\r\n    local disease = self.diseases[index]\r\n\r\n    if disease == nil or disease.type.treatment == nil or disease.cured then\r\n\r\n        self.yesButton:setDisabled(true)\r\n        return\r\n\r\n    end\r\n\r\n    self.yesButton:setDisabled(false)\r\n    self.yesButton:setText(g_i18n:getText(\"rl_ui_\" .. (disease.beingTreated and \"stop\" or (disease.treatmentDuration > 0 and \"resume\" or \"start\")) .. \"Treatment\"))\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog:getNumberOfSections()\r\n\r\n\treturn 1\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog:getNumberOfItemsInSection(list, section)\r\n\r\n\treturn #self.animal.diseases\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog:getTitleForSectionHeader(list, section)\r\n\r\n    return \"\"\r\n\r\nend\r\n\r\n\r\nfunction DiseaseDialog:populateCellForItemInSection(list, section, index, cell)\r\n\r\n\tlocal disease = self.diseases[index]\r\n\r\n    if disease == nil then return end\r\n\r\n    local type = disease.type\r\n    local treatment = type.treatment\r\n\r\n    cell:getAttribute(\"title\"):setText(type.name)\r\n    cell:getAttribute(\"duration\"):setText(treatment == nil and \"N/A\" or RealisticLivestock.formatAge(treatment.duration - disease.treatmentDuration))\r\n    cell:getAttribute(\"fee\"):setText(treatment == nil and \"N/A\" or string.format(g_i18n:getText(\"rl_ui_feePerMonth\"), g_i18n:formatMoney(treatment.cost, 2, true, true)))\r\n    cell:getAttribute(\"status\"):setText(disease:getStatus())\r\n\r\n    cell.setSelected = Utils.appendedFunction(cell.setSelected, function(cell, selected)\r\n\t\tif selected then self:onClickListItem(index) end\r\n\tend)\r\n    \r\nend"
  },
  {
    "path": "src/gui/EarTagColourPickerDialog.lua",
    "content": "EarTagColourPickerDialog = {}\r\n\r\nlocal earTagColourPickerDialog_mt = Class(EarTagColourPickerDialog, MessageDialog)\r\nlocal modDirectory = g_currentModDirectory\r\n\r\nEarTagColourPickerDialog.INPUT_THRESHOLD = 0.01\r\nEarTagColourPickerDialog.INPUT_SCALE = 10000\r\nEarTagColourPickerDialog.DOUBLE_CLICK_INTERVAL = 400\r\n\r\n\r\nfunction EarTagColourPickerDialog.register()\r\n\r\n    local dialog = EarTagColourPickerDialog.new()\r\n    g_gui:loadGui(modDirectory .. \"gui/EarTagColourPickerDialog.xml\", \"EarTagColourPickerDialog\", dialog)\r\n    EarTagColourPickerDialog.INSTANCE = dialog\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog.show()\r\n\r\n    if EarTagColourPickerDialog.INSTANCE ~= nil then\r\n        local dialog = EarTagColourPickerDialog.INSTANCE\r\n        g_gui:showDialog(\"EarTagColourPickerDialog\")\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog.new(target, customMt)\r\n\r\n    local self = MessageDialog.new(target, customMt or earTagColourPickerDialog_mt)\r\n\r\n    self.animalTypes = g_currentMission.animalSystem:getTypes()\r\n    self.texts = {\r\n        [\"earTagLeft\"] = {},\r\n        [\"earTagRight\"] = {}\r\n    }\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog.createFromExistingGui(gui, _)\r\n\r\n    EarTagColourPickerDialog.register()\r\n    EarTagColourPickerDialog.show()\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onGuiSetupFinished()\r\n\r\n    EarTagColourPickerDialog:superClass().onGuiSetupFinished(self)\r\n\r\n    local typeTexts = {}\r\n\r\n    for _, type in pairs(self.animalTypes) do\r\n\r\n        table.insert(typeTexts, type.name)\r\n\r\n    end\r\n\r\n    self.animalTypePicker:setTexts(typeTexts)\r\n\r\n    local rgbTexts = {}\r\n    local hsvTexts = {}\r\n\r\n\tfor i = 0, 360 do\r\n\r\n        table.insert(hsvTexts, tostring(i))\r\n\r\n        if i <= 255 then table.insert(rgbTexts, tostring(i)) end\r\n\r\n    end\r\n    \r\n\tself.hueSliderBase:setTexts(hsvTexts)\r\n\tself.hueSliderText:setTexts(hsvTexts)\r\n    self.baseRgbRed:setTexts(rgbTexts)\r\n\tself.baseRgbGreen:setTexts(rgbTexts)\r\n\tself.baseRgbBlue:setTexts(rgbTexts)\r\n    self.textRgbRed:setTexts(rgbTexts)\r\n\tself.textRgbGreen:setTexts(rgbTexts)\r\n\tself.textRgbBlue:setTexts(rgbTexts)\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onOpen()\r\n\r\n    EarTagColourPickerDialog:superClass().onOpen(self)\r\n\t\r\n    self.customPickerUpDownEventId = g_inputBinding:registerActionEvent(InputAction.AXIS_PICK_COLOR_UPDOWN, self, self.onVerticalCursorInput, false, false, true, true)\r\n\tself.customPickerLeftRightEventId = g_inputBinding:registerActionEvent(InputAction.AXIS_PICK_COLOR_LEFTRIGHT, self, self.onHorizontalCursorInput, false, false, true, true)\r\n    \r\n    self.accumHorizontalInput, self.accumVerticalInput = 0, 0\r\n\r\n\tself.colorRender:createScene()\r\n\r\n    self.animalTypePicker:setState(1)\r\n\r\n    self.context = \"earTagLeft\"\r\n    self:setColourFromType(1)\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onClose()\r\n\r\n    EarTagColourPickerDialog:superClass().onClose(self)\r\n\r\n\tg_inputBinding:removeActionEventsByTarget(self)\r\n    \r\n\tself.colorRender:destroyScene()\r\n    self.renderNode = nil\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onAnimalTypeChanged()\r\n\r\n    local index = self.animalTypePicker:getState()\r\n\r\n    self:setColourFromType(index)\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:setColourFromType(index)\r\n\r\n    local baseColour = self.animalTypes[index].colours[self.context]\r\n    local textColour = self.animalTypes[index].colours[self.context .. \"_text\"]\r\n\r\n    self.baseRgbRed:setState(math.floor(baseColour[1] * 255) + 1)\r\n    self.baseRgbGreen:setState(math.floor(baseColour[2] * 255) + 1)\r\n    self.baseRgbBlue:setState(math.floor(baseColour[3] * 255) + 1)\r\n\r\n    self.textRgbRed:setState(math.floor(textColour[1] * 255) + 1)\r\n    self.textRgbGreen:setState(math.floor(textColour[2] * 255) + 1)\r\n    self.textRgbBlue:setState(math.floor(textColour[3] * 255) + 1)\r\n\r\n    self:onBaseRGBChanged()\r\n    self:onTextRGBChanged()\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onBaseRGBChanged()\r\n\r\n    local baseR = (self.baseRgbRed:getState() - 1) / 255\r\n    local baseG = (self.baseRgbGreen:getState() - 1) / 255\r\n    local baseB = (self.baseRgbBlue:getState() - 1) / 255\r\n\r\n\tlocal hsvR, hsvG, hsvB = GuiUtils.rgbToHSV(baseR, baseG, baseB)\r\n\tlocal r, g, b = GuiUtils.hsvToRGB(hsvR)\r\n\r\n\tself.customPickerBase:setImageColor(nil, math.pow(r, 2.2), math.pow(g, 2.2), math.pow(b, 2.2), 1)\r\n\tself.hueSliderBase:setState(math.floor(hsvR * 360) + 1)\r\n\r\n\tself.baseCursor:setAbsolutePosition(self.customPickerBase.absPosition[1] + self.customPickerBase.absSize[1] * hsvG - self.baseCursor.absSize[1] * 0.5, self.customPickerBase.absPosition[2] + self.customPickerBase.absSize[2] * hsvB - self.baseCursor.absSize[2] * 0.5)\r\n\r\n    self:setCustomColorHSVBase(math.floor(hsvR * 360), hsvG, hsvB)\r\n\r\n    self.pendingRenderUpdate = true\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onTextRGBChanged()\r\n\r\n    local textR = (self.textRgbRed:getState() - 1) / 255\r\n    local textG = (self.textRgbGreen:getState() - 1) / 255\r\n    local textB = (self.textRgbBlue:getState() - 1) / 255\r\n\r\n\tlocal hsvR, hsvG, hsvB = GuiUtils.rgbToHSV(textR, textG, textB)\r\n\tlocal r, g, b = GuiUtils.hsvToRGB(hsvR)\r\n\r\n\tself.customPickerText:setImageColor(nil, math.pow(r, 2.2), math.pow(g, 2.2), math.pow(b, 2.2), 1)\r\n\tself.hueSliderText:setState(math.floor(hsvR * 360) + 1)\r\n\r\n\tself.textCursor:setAbsolutePosition(self.customPickerText.absPosition[1] + self.customPickerText.absSize[1] * hsvG - self.textCursor.absSize[1] * 0.5, self.customPickerText.absPosition[2] + self.customPickerText.absSize[2] * hsvB - self.textCursor.absSize[2] * 0.5)\r\n\r\n    self:setCustomColorHSVText(math.floor(hsvR * 360), hsvG, hsvB)\r\n\r\n    self.pendingRenderUpdate = true\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onBaseHueChanged(index)\r\n\r\n\tlocal hsvR, hsvG, hsvB = GuiUtils.hsvToRGB((index - 1) / 360)\r\n\r\n\tlocal r = math.pow(hsvR, 2.2)\r\n\tlocal g = math.pow(hsvG, 2.2)\r\n\tlocal b = math.pow(hsvB, 2.2)\r\n\r\n\tself.customPickerBase:setImageColor(nil, r, g, b, 1)\r\n\t\r\n    self.baseRgbRed:setState(math.floor(r * 255) + 1)\r\n    self.baseRgbGreen:setState(math.floor(g * 255) + 1)\r\n    self.baseRgbBlue:setState(math.floor(b * 255) + 1)\r\n\r\n    self:setCustomColorHSVBase(index - 1)\r\n\r\n    self.pendingRenderUpdate = true\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onTextHueChanged(index)\r\n\r\n\tlocal hsvR, hsvG, hsvB = GuiUtils.hsvToRGB((index - 1) / 360)\r\n\r\n\tlocal r = math.pow(hsvR, 2.2)\r\n\tlocal g = math.pow(hsvG, 2.2)\r\n\tlocal b = math.pow(hsvB, 2.2)\r\n\r\n\tself.customPickerText:setImageColor(nil, r, g, b, 1)\r\n\t\r\n    self.textRgbRed:setState(math.floor(r * 255) + 1)\r\n    self.textRgbGreen:setState(math.floor(g * 255) + 1)\r\n    self.textRgbBlue:setState(math.floor(b * 255) + 1)\r\n\r\n    self:setCustomColorHSVText(index - 1)\r\n\r\n    self.pendingRenderUpdate = true\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:setCustomColorHSVBase(index, hsvG, hsvB)\r\n\r\n    if hsvG ~= nil and hsvB ~= nil then\r\n\t\tself.baseCursor:setAbsolutePosition(self.customPickerBase.absPosition[1] + self.customPickerBase.absSize[1] * hsvG - self.baseCursor.absSize[1] * 0.5, self.customPickerBase.absPosition[2] + self.customPickerBase.absSize[2] * hsvB - self.baseCursor.absSize[2] * 0.5)\r\n\tend\r\n\r\n\tif not hsvG then\r\n\t\tlocal sG = (self.baseCursor.absPosition[1] + self.baseCursor.absSize[1] * 0.5 - self.customPickerBase.absPosition[1]) / self.customPickerBase.absSize[1]\r\n\t\thsvG = math.clamp(sG, 0, 1)\r\n\tend\r\n\r\n\tif not hsvB then\r\n\t\tlocal sB = (self.baseCursor.absPosition[2] + self.baseCursor.absSize[2] * 0.5 - self.customPickerBase.absPosition[2]) / self.customPickerBase.absSize[2]\r\n\t\thsvB = math.clamp(sB, 0, 1)\r\n\tend\r\n\r\n    local r, g, b = GuiUtils.hsvToRGB(index / 360, hsvG, hsvB)\r\n\r\n    self.baseRgbRed:setState(math.floor(r * 255) + 1)\r\n    self.baseRgbGreen:setState(math.floor(g * 255) + 1)\r\n    self.baseRgbBlue:setState(math.floor(b * 255) + 1)\r\n\r\n    self.pendingRenderUpdate = true\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:setCustomColorHSVText(index, hsvG, hsvB)\r\n\r\n    if hsvG ~= nil and hsvB ~= nil then\r\n\t\tself.textCursor:setAbsolutePosition(self.customPickerText.absPosition[1] + self.customPickerText.absSize[1] * hsvG - self.textCursor.absSize[1] * 0.5, self.customPickerText.absPosition[2] + self.customPickerText.absSize[2] * hsvB - self.textCursor.absSize[2] * 0.5)\r\n\tend\r\n\r\n\tif not hsvG then\r\n\t\tlocal sG = (self.textCursor.absPosition[1] + self.textCursor.absSize[1] * 0.5 - self.customPickerText.absPosition[1]) / self.customPickerText.absSize[1]\r\n\t\thsvG = math.clamp(sG, 0, 1)\r\n\tend\r\n\r\n\tif not hsvB then\r\n\t\tlocal sB = (self.textCursor.absPosition[2] + self.textCursor.absSize[2] * 0.5 - self.customPickerText.absPosition[2]) / self.customPickerText.absSize[2]\r\n\t\thsvB = math.clamp(sB, 0, 1)\r\n\tend\r\n\r\n    local r, g, b = GuiUtils.hsvToRGB(index / 360, hsvG, hsvB)\r\n\r\n    self.textRgbRed:setState(math.floor(r * 255) + 1)\r\n    self.textRgbGreen:setState(math.floor(g * 255) + 1)\r\n    self.textRgbBlue:setState(math.floor(b * 255) + 1)\r\n\r\n    self.pendingRenderUpdate = true\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onClickOk()\r\n\r\n    local typeIndex = self.animalTypePicker:getState()\r\n\r\n    local baseR = (self.baseRgbRed:getState() - 1) / 255\r\n    local baseG = (self.baseRgbGreen:getState() - 1) / 255\r\n    local baseB = (self.baseRgbBlue:getState() - 1) / 255\r\n\r\n    local textR = (self.textRgbRed:getState() - 1) / 255\r\n    local textG = (self.textRgbGreen:getState() - 1) / 255\r\n    local textB = (self.textRgbBlue:getState() - 1) / 255\r\n\r\n    local type = g_currentMission.animalSystem.types[typeIndex]\r\n    type.colours[self.context] = { baseR, baseG, baseB }\r\n    type.colours[self.context .. \"_text\"] = { textR, textG, textB }\r\n\r\n\r\n    local leftTag, leftText, rightTag, rightText\r\n\r\n    if self.context == \"earTagLeft\" then leftTag, leftText = { baseR, baseG, baseB }, { textR, textG, textB } end\r\n    if self.context == \"earTagRight\" then rightTag, rightText = { baseR, baseG, baseB }, { textR, textG, textB } end\r\n\r\n\r\n    for _, placeable in pairs(g_currentMission.husbandrySystem.placeables) do\r\n\r\n        if placeable:getAnimalTypeIndex() ~= typeIndex then continue end\r\n\r\n        local animals = placeable:getClusters()\r\n\r\n        for _, animal in pairs(animals) do animal:setVisualEarTagColours(leftTag, leftText, rightTag, rightText) end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onClickEarTagLeft()\r\n\r\n    self.context = \"earTagLeft\"\r\n    self.animalTypePicker:setState(1)\r\n    self:setColourFromType(1)\r\n\r\n    for _, node in pairs(self.texts.earTagLeft) do setVisibility(node, true) end\r\n    for _, node in pairs(self.texts.earTagRight) do setVisibility(node, false) end\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onClickEarTagRight()\r\n\r\n    self.context = \"earTagRight\"\r\n    self.animalTypePicker:setState(1)\r\n    self:setColourFromType(1)\r\n\r\n    for _, node in pairs(self.texts.earTagLeft) do setVisibility(node, false) end\r\n    for _, node in pairs(self.texts.earTagRight) do setVisibility(node, true) end\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:update(dT)\r\n\r\n    EarTagColourPickerDialog:superClass().update(self, dT)\r\n\r\n    if self.pendingRenderUpdate and self.colorRender.scene ~= nil then\r\n\r\n        local baseR = (self.baseRgbRed:getState() - 1) / 255\r\n        local baseG = (self.baseRgbGreen:getState() - 1) / 255\r\n        local baseB = (self.baseRgbBlue:getState() - 1) / 255\r\n\r\n        local textR = (self.textRgbRed:getState() - 1) / 255\r\n        local textG = (self.textRgbGreen:getState() - 1) / 255\r\n        local textB = (self.textRgbBlue:getState() - 1) / 255\r\n\r\n        if self.renderNode == nil then self:setupScene() end\r\n\r\n        setShaderParameter(self.renderNode, \"colorScale\", baseR, baseG, baseB)\r\n\r\n        for _, node in pairs(self.texts[self.context]) do change3DLinkedTextColour(node, textR, textG, textB, 1) end\r\n\r\n        self.colorRender:setRenderDirty()\r\n        self.pendingRenderUpdate = false\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:setupScene()\r\n\r\n    self.renderNode = getChildAt(getChildAt(self.colorRender.scene, 0), 0)\r\n\r\n    local node = getChild(self.renderNode, \"front\")\r\n\r\n    local uniqueId, farmId, countryCode, name, birthday = \"405070\", \"109824\", \"UK\", \"Little Megan\", \"05/11/22\"\r\n\r\n\tset3DTextAutoScale(true)\r\n\tset3DTextRemoveSpaces(true)\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_MIDDLE)\r\n\tsetTextAlignment(RenderText.ALIGN_CENTER)\r\n\tsetTextColor(0, 0, 0, 1)\r\n\tsetTextFont(RealisticLivestock.FONTS.dejavu_sans)\r\n\r\n    self.texts.earTagLeft = {\r\n\t\t[\"uniqueId\"] = create3DLinkedText(node, 0, -0.006, -0.015, 0, 0, 0, 0.035, uniqueId),\r\n\t\t[\"farmId\"] = create3DLinkedText(node, 0, -0.041, -0.02, 0, 0, 0, 0.05, farmId),\r\n\t\t[\"country\"] = create3DLinkedText(node, 0, 0.021, -0.015, 0, 0, 0, 0.03, countryCode)\r\n\t}\r\n\r\n    self.texts.earTagRight = {\r\n        [\"birthday\"] = create3DLinkedText(node, 0, 0.018, -0.015, 0, 0, 0, 0.02, birthday)\r\n\t}\r\n\r\n\tsetTextFont(RealisticLivestock.FONTS.toms_handwritten)\r\n\tset3DTextWrapWidth(0.14)\r\n\tset3DTextWordsPerLine(1)\r\n\tsetTextLineHeightScale(0.75)\r\n\t\r\n\tself.texts.earTagRight.name = create3DLinkedText(node, 0, -0.01, -0.015, 0, 0, 0, 0.035, name)\r\n\r\n\tsetTextLineHeightScale(1.1)\r\n\tset3DTextWordsPerLine(0)\r\n\tset3DTextAutoScale(false)\r\n\tset3DTextRemoveSpaces(false)\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_BASELINE)\r\n\tsetTextAlignment(RenderText.ALIGN_LEFT)\r\n\tsetTextColor(1, 1, 1, 1)\r\n\tset3DTextWrapWidth(0)\r\n\tsetTextFont()\r\n\r\n    setVisibility(self.texts.earTagRight.birthday, false)\r\n    setVisibility(self.texts.earTagRight.name, false)\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:mouseEvent(pixelX, pixelY, isDown, isUp)\r\n\r\n\tlocal pixelsX = 20 * g_pixelSizeX\r\n\tlocal pixelsY = 20 * g_pixelSizeY\r\n\r\n\tif GuiUtils.checkOverlayOverlap(pixelX, pixelY, self.customPickerBase.absPosition[1] - pixelsX, self.customPickerBase.absPosition[2] - pixelsY, self.customPickerBase.absSize[1] + pixelsX * 2, self.customPickerBase.absSize[2] + pixelsY * 2) and self.customPickerBase:getIsVisible() then\r\n\r\n\t\tif isDown then\r\n\t\t\tself.inputDown = true\r\n\t\tend\r\n\r\n\t\tif self.inputDown then\r\n\r\n\t\t\tlocal positionX = math.clamp(pixelX, self.customPickerBase.absPosition[1], self.customPickerBase.absPosition[1] + self.customPickerBase.absSize[1])\r\n\t\t\tlocal positionY = math.clamp(pixelY, self.customPickerBase.absPosition[2], self.customPickerBase.absPosition[2] + self.customPickerBase.absSize[2])\r\n\r\n\t\t\tself.baseCursor:setAbsolutePosition(positionX - self.baseCursor.absSize[1] * 0.5, positionY - self.baseCursor.absSize[2] * 0.5)\r\n\t\t\tself:setCustomColorHSVBase(self.hueSliderBase:getState() - 1)\r\n\r\n\t\tend\r\n\tend\r\n\r\n\tif GuiUtils.checkOverlayOverlap(pixelX, pixelY, self.customPickerText.absPosition[1] - pixelsX, self.customPickerText.absPosition[2] - pixelsY, self.customPickerText.absSize[1] + pixelsX * 2, self.customPickerText.absSize[2] + pixelsY * 2) and self.customPickerText:getIsVisible() then\r\n\r\n\t\tif isDown then\r\n\t\t\tself.inputDown = true\r\n\t\tend\r\n\r\n\t\tif self.inputDown then\r\n\r\n\t\t\tlocal positionX = math.clamp(pixelX, self.customPickerText.absPosition[1], self.customPickerText.absPosition[1] + self.customPickerText.absSize[1])\r\n\t\t\tlocal positionY = math.clamp(pixelY, self.customPickerText.absPosition[2], self.customPickerText.absPosition[2] + self.customPickerText.absSize[2])\r\n\r\n\t\t\tself.textCursor:setAbsolutePosition(positionX - self.textCursor.absSize[1] * 0.5, positionY - self.textCursor.absSize[2] * 0.5)\r\n\t\t\tself:setCustomColorHSVText(self.hueSliderText:getState() - 1)\r\n\r\n\t\tend\r\n\tend\r\n\r\n\tif isUp then\r\n\t\tself.inputDown = false\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onHorizontalCursorInput(_, amount)\r\n\tself.accumHorizontalInput = self.accumHorizontalInput + amount\r\nend\r\n\r\n\r\nfunction EarTagColourPickerDialog:onVerticalCursorInput(_, amount)\r\n\tself.accumVerticalInput = self.accumVerticalInput + amount\r\nend"
  },
  {
    "path": "src/gui/FileExplorerDialog.lua",
    "content": "FileExplorerDialog = {}\r\n\r\n\r\nlocal modDirectory = g_currentModDirectory\r\nlocal FileExplorerDialog_mt = Class(FileExplorerDialog, MessageDialog)\r\n\r\n\r\nfunction FileExplorerDialog.register()\r\n\r\n\tlocal dialog = FileExplorerDialog.new()\r\n\tg_gui:loadGui(modDirectory .. \"gui/FileExplorerDialog.xml\", \"FileExplorerDialog\", dialog)\r\n\tFileExplorerDialog.INSTANCE = dialog\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog.show(files, baseDirectory, callback, target)\r\n\r\n    if FileExplorerDialog.INSTANCE ~= nil then\r\n\r\n        FileExplorerDialog.INSTANCE.files = files or {}\r\n        FileExplorerDialog.INSTANCE.baseDirectory = baseDirectory or \"\"\r\n        FileExplorerDialog.INSTANCE.callback = callback\r\n        FileExplorerDialog.INSTANCE.target = target\r\n        g_gui:showDialog(\"FileExplorerDialog\")\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog.new(target, customMt)\r\n\r\n    local self = MessageDialog.new(target, customMt or FileExplorerDialog_mt)\r\n\r\n    self.files = {}\r\n    self.baseDirectory = \"\"\r\n    self.currentFolder = {}\r\n    self.currentFolderPath = {}\r\n    self.resizeData = {\r\n        [\"active\"] = false,\r\n        [\"maximise\"] = false,\r\n        [\"delta\"] = { 0, 0 }\r\n    }\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog.createFromExistingGui(gui, _)\r\n\r\n    FileExplorerDialog.register()\r\n    FileExplorerDialog.show(gui.files)\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:onGuiSetupFinished()\r\n\r\n    FileExplorerDialog:superClass().onGuiSetupFinished(self)\r\n\r\n    self.windowSize = {\r\n        self.dialogElement.size[1],\r\n        self.dialogElement.size[2]\r\n    }\r\n\r\n    local sum = self.windowSize[1] + self.windowSize[2]\r\n\r\n    self.resizeData.delta = { (self.windowSize[2] / sum) * 0.01, (self.windowSize[1] / sum) * 0.01 }\r\n    self.cellSize = self.windowSize[1] * 0.95\r\n    self.fileListOffset = g_currentMission.hud.gameInfoDisplay:scalePixelToScreenHeight(\"-30\")\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:onOpen()\r\n\r\n    FileExplorerDialog:superClass().onOpen(self)\r\n\r\n    self.currentFolder = self.files[1]\r\n    \r\n    self.currentFolderPath = {\r\n        1\r\n    }\r\n    \r\n    self.pathText:setText(self.currentFolder.path)\r\n    self.fileList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:onClose()\r\n\r\n    FileExplorerDialog:superClass().onClose(self)\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:onClickCancel()\r\n\r\n    self:close()\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:onClickOk()\r\n\r\n    self:close()\r\n\r\n    local file = self.currentFolder.files[self.fileList.selectedIndex - #self.currentFolder.folders]\r\n\r\n    if file == nil then return end\r\n\r\n    local name = file.name\r\n    local valid = file.valid\r\n\r\n    if name ~= nil and self.callback ~= nil and valid then\r\n\r\n        if self.target ~= nil then\r\n            self.callback(self.target, self.currentFolder.path .. \"/\" .. name)\r\n        else\r\n            self.callback(self.currentFolder.path .. \"/\" .. name)\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:onClickResize()\r\n\r\n    self.resizeData.active = true\r\n    self.resizeData.maximise = not self.resizeData.maximise\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:update(dT)\r\n\r\n    FileExplorerDialog:superClass().update(self, dT)\r\n\r\n    if self.resizeData.active then\r\n\r\n        local data = self.resizeData\r\n\r\n        self.dialogElement:setSize(self.dialogElement.size[1] + data.delta[1] * (data.maximise and 1 or -1), self.dialogElement.size[2] + data.delta[2] * (data.maximise and 1 or -1))\r\n\r\n        local size = self.dialogElement.size\r\n\r\n        if not data.maximise then\r\n        \r\n            if size[1] <= self.windowSize[1] and size[2] <= self.windowSize[2] then data.active = false end\r\n\r\n        else\r\n                    \r\n            if size[1] >= 0.9 and size[2] >= 0.9 then data.active = false end\r\n\r\n        end\r\n\r\n        self.fileList:setSize(size[1] * 0.95, self.fileListSlider.size[2] - self.topPanel.size[2] + self.fileListOffset)\r\n        self.pathText:setSize(size[1] * 0.7275)\r\n\r\n        self.cellSize = size[1] * 0.95\r\n\r\n        for _, cell in pairs(self.fileList.elements) do cell:setSize(self.cellSize) end\r\n\r\n        self.fileList:updateView(true)\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:onClickPathUp()\r\n\r\n    self.upButton:onFocusLeave()\r\n\r\n    if #self.currentFolderPath <= 1 then return end\r\n\r\n    self.currentFolder = self.files[1]\r\n\r\n    for i = 2, #self.currentFolderPath - 1 do\r\n\r\n        self.currentFolder = self.currentFolder.folders[self.currentFolderPath[i]]\r\n\r\n    end\r\n\r\n    table.remove(self.currentFolderPath, #self.currentFolderPath)\r\n\r\n    self.pathText:setText(self.currentFolder.path)\r\n    self.fileList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:getNumberOfSections()\r\n\r\n\tif self.currentFolder == nil or (#self.currentFolder.folders == 0 and #self.currentFolder.files == 0) then return 0 end\r\n\r\n\treturn 1\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:getNumberOfItemsInSection(list, section)\r\n\r\n\treturn self.currentFolder == nil and 0 or (#self.currentFolder.folders + #self.currentFolder.files)\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:getTitleForSectionHeader(list, section)\r\n\r\n    return \"\"\r\n\r\nend\r\n\r\n\r\nfunction FileExplorerDialog:populateCellForItemInSection(list, section, index, cell)\r\n\r\n    if index <= #self.currentFolder.folders then\r\n\r\n        local folder = self.currentFolder.folders[index]\r\n\r\n\t    cell:getAttribute(\"name\"):setText(folder.name)\r\n        cell:getAttribute(\"icon\"):setImageSlice(nil, \"fileTypeIcons.folder\")\r\n\r\n        cell:setDisabled(g_server == nil or g_server.netIsRunning)\r\n\r\n        if g_server == nil or g_server.netIsRunning then\r\n\r\n            cell.onClickCallback = function() end\r\n\r\n        else\r\n\r\n            cell.onClickCallback = function()\r\n\r\n                self.currentFolder = folder\r\n                table.insert(self.currentFolderPath, index)\r\n\r\n                self.pathText:setText(folder.path)\r\n\r\n                self.fileList:reloadData()\r\n\r\n            end\r\n\r\n        end\r\n\r\n    else\r\n\r\n        local name = self.currentFolder.files[index - #self.currentFolder.folders].name\r\n        local extension = string.sub(name, #name - 2)\r\n\r\n        local valid = \"\"\r\n\r\n        if not self.currentFolder.files[index - #self.currentFolder.folders].valid then\r\n\r\n            valid = \" - \" .. g_i18n:getText(\"cl_invalidFile\")\r\n\r\n            cell:setDisabled(true)\r\n\r\n        else\r\n\r\n            cell:setDisabled(false)\r\n\r\n        end\r\n\r\n        cell:getAttribute(\"name\"):setText(name .. valid)\r\n        cell:getAttribute(\"icon\"):setImageSlice(nil, \"fileTypeIcons.\" .. extension)\r\n\r\n        cell.onClickCallback = function() end\r\n\r\n    end\r\n\r\n    cell:setSize(self.cellSize)\r\n\r\nend"
  },
  {
    "path": "src/gui/InGameMenuSettingsFrame.lua",
    "content": "RL_InGameMenuSettingsFrame = {}\r\n\r\n\r\nfunction RL_InGameMenuSettingsFrame:onFrameOpen(_)\r\n\r\n\tfor name, setting in pairs(RLSettings.SETTINGS) do\r\n\r\n\t\tif setting.dependancy then\r\n\t\t\tlocal dependancy = RLSettings.SETTINGS[setting.dependancy.name]\r\n\t\t\tif dependancy ~= nil and setting.element ~= nil then setting.element:setDisabled(dependancy.state ~= setting.dependancy.state) end\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\nInGameMenuSettingsFrame.onFrameOpen = Utils.appendedFunction(InGameMenuSettingsFrame.onFrameOpen, RL_InGameMenuSettingsFrame.onFrameOpen)\r\n\r\n\r\nfunction RL_InGameMenuSettingsFrame:onFrameClose()\r\n\r\n\tif g_server ~= nil then RLSettings.saveToXMLFile() end\r\n\r\n\tRL_BroadcastSettingsEvent.sendEvent()\r\n\r\nend\r\n\r\nInGameMenuSettingsFrame.onFrameClose = Utils.appendedFunction(InGameMenuSettingsFrame.onFrameClose, RL_InGameMenuSettingsFrame.onFrameClose)"
  },
  {
    "path": "src/gui/MPLoadingScreen.lua",
    "content": "local modDirectory = g_currentModDirectory\r\n\r\n\r\nlocal function getAreVersionsCompatible(version, minVersion)\r\n\r\n\tlocal versionParts = string.split(version, \".\")\r\n\tlocal minVersionParts = string.split(minVersion, \".\")\r\n\r\n\tfor i, versionNumber in pairs(versionParts) do\r\n\r\n\t\tif #minVersionParts < i or versionNumber < minVersionParts[i] then return false end\r\n\r\n\t\tif versionNumber > minVersionParts[i] then return true end\r\n\r\n\tend\r\n\r\n\treturn true\r\n\r\nend\r\n\r\n\r\nfunction MPLoadingScreen:verifyDependencies(directory)\r\n\r\n\tlocal xmlFile = XMLFile.load(\"tempModDesc\", modDirectory .. \"modDesc.xml\")\r\n\tlocal hasIncompatibleDependency = false\r\n\tlocal dependencies = {}\r\n\r\n\txmlFile:iterate(\"modDesc.dependencies.dependency\", function(_, key)\r\n\r\n\t\ttable.insert(dependencies, {\r\n\t\t\t[\"name\"] = xmlFile:getString(key),\r\n\t\t\t[\"minVersion\"] = xmlFile:getString(key .. \"#version\", \"1.0.0.0\"),\r\n\t\t\t[\"incompatible\"] = false,\r\n\t\t\t[\"installed\"] = false\r\n\t\t})\r\n\r\n\tend)\r\n\r\n\txmlFile:delete()\r\n\r\n\tfor _, dependency in pairs(dependencies) do\r\n\r\n\t\tdependency.installed = g_modIsLoaded[dependency.name]\r\n\r\n\t\tif dependency.installed then\r\n\t\t\tlocal modXmlFile = XMLFile.load(\"tempDependencyModDesc\", g_modNameToDirectory[dependency.name] .. \"modDesc.xml\")\r\n\t\t\tlocal version = modXmlFile:getString(\"modDesc.version\", \"1.0.0.0\")\r\n\t\t\tmodXmlFile:delete()\r\n\r\n\t\t\tdependency.version = version\r\n\r\n\t\t\tif not getAreVersionsCompatible(version, dependency.minVersion) then\r\n\t\t\t\thasIncompatibleDependency = true\r\n\t\t\t\tdependency.incompatible = true\r\n\t\t\tend\r\n\t\telse\r\n\t\t\thasIncompatibleDependency = true\r\n\t\tend\r\n\r\n\tend\r\n\r\n\treturn dependencies, hasIncompatibleDependency\r\n\r\nend\r\n\r\n\r\nfunction MPLoadingScreen:dependencyProblemOnQuitOk()\r\n\r\n\tdoRestart(false, \"\")\r\n\r\nend\r\n\r\n\r\nMPLoadingScreen.update = Utils.overwrittenFunction(MPLoadingScreen.update, function(self, superFunc, dT)\r\n\r\n\tif not self.verifiedDependencies then\r\n\r\n\t\tlocal dependencies, isIncompatible = self:verifyDependencies(modDirectory)\r\n\r\n\t\tself.verifiedDependencies = true\r\n\r\n\t\tif isIncompatible then\r\n\r\n\t\t\tlocal text = g_i18n:getText(\"rl_ui_dependencies_missing\") .. \"\\n\"\r\n\r\n\t\t\tfor _, dependency in pairs(dependencies) do\r\n\t\t\t\tif not dependency.installed then\r\n\t\t\t\t\ttext = text .. \"\\n\" .. string.format(g_i18n:getText(\"rl_ui_dependency_missing_notInstalled\"), dependency.name)\r\n\t\t\t\telseif dependency.incompatible then\r\n\t\t\t\t\ttext = text .. \"\\n\" .. string.format(g_i18n:getText(\"rl_ui_dependency_missing_installed\"), dependency.name, dependency.version, dependency.minVersion)\r\n\t\t\t\tend\r\n\t\t\tend\r\n\r\n\t\t\tOnInGameMenuMenu()\r\n\t\t\tInfoDialog.show(text, self.dependencyProblemOnQuitOk, self)\r\n\t\t\treturn\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tsuperFunc(self, dT)\r\n\r\nend)"
  },
  {
    "path": "src/gui/NameInputDialog.lua",
    "content": "NameInputDialog = {}\r\n\r\nlocal nameInputDialog_mt = Class(NameInputDialog, YesNoDialog)\r\nlocal function nameInputDialog_callback() end\r\nlocal modDirectory = g_currentModDirectory\r\n\r\n\r\nfunction NameInputDialog.register()\r\n    local dialog = NameInputDialog.new()\r\n    g_gui:loadGui(modDirectory .. \"gui/NameInputDialog.xml\", \"NameInputDialog\", dialog)\r\n    NameInputDialog.INSTANCE = dialog\r\n    dialog.textElement.maxCharacters = 20\r\nend\r\n\r\n\r\nfunction NameInputDialog.show(callback, target, text, prompt, maxCharacters, args, gender)\r\n    if NameInputDialog.INSTANCE ~= nil then\r\n        local dialog = NameInputDialog.INSTANCE\r\n        dialog:setText(text)\r\n        dialog:setCallback(callback, target, text, prompt, maxCharacters, args, gender)\r\n        g_gui:showDialog(\"NameInputDialog\")\r\n    end\r\nend\r\n\r\n\r\nfunction NameInputDialog.new(target, customMt)\r\n    local dialog = YesNoDialog.new(target, customMt or nameInputDialog_mt)\r\n    dialog.onTextEntered = nameInputDialog_callback\r\n    dialog.callbackArgs = nil\r\n    dialog.extraInputDisableTime = 0\r\n    local dismiss = GS_IS_CONSOLE_VERSION\r\n    if dismiss then dismiss = imeIsSupported() end\r\n    dialog.doHide = dismiss\r\n    dialog.disableOpenSound = true\r\n    dialog.animalGender = \"female\"\r\n    return dialog\r\nend\r\n\r\n\r\nfunction NameInputDialog.createFromExistingGui(gui, _)\r\n    NameInputDialog.register()\r\n    local callback = gui.onTextEntered\r\n    local target = gui.target\r\n    local text = gui.defaultText\r\n    local prompt = gui.dialogPrompt\r\n    local maxCharacters = gui.maxCharacters\r\n    local args = gui.callbackArgs\r\n    NameInputDialog.show(callback, target, text, prompt, maxCharacters, args)\r\nend\r\n\r\n\r\nfunction NameInputDialog:onOpen()\r\n    NameInputDialog:superClass().onOpen(self)\r\n    self.extraInputDisableTime = getPlatformId() == PlatformId.SWITCH and 0 or 100\r\n    FocusManager:setFocus(self.textElement)\r\n    self.textElement.blockTime = 0\r\n    self.textElement:onFocusActivate()\r\n    self:updateButtonVisibility()\r\nend\r\n\r\n\r\nfunction NameInputDialog:onClose()\r\n    NameInputDialog:superClass().onClose(self)\r\n    if not GS_IS_CONSOLE_VERSION then self.textElement:setForcePressed(false) end\r\n    self:updateButtonVisibility()\r\nend\r\n\r\n\r\nfunction NameInputDialog:onClickRandom()\r\n\r\n    local system = g_currentMission.animalNameSystem\r\n    if system == nil then return end\r\n\r\n    local attempts = 0\r\n\r\n    local name = system:getRandomName(self.animalGender)\r\n    while attempts < 10 and (name == nil or name == \"\" or name == self.textElement.text) do\r\n        name = system:getRandomName(self.animalGender)\r\n        attempts = attempts + 1\r\n    end\r\n\r\n    if name == nil or name == \"\" then return end\r\n\r\n    self.textElement:setText(name)\r\n\r\nend\r\n\r\n\r\nfunction NameInputDialog:setText(text)\r\n    NameInputDialog:superClass().setText(self,text)\r\n    self.inputText = text\r\nend\r\n\r\n\r\nfunction NameInputDialog:setCallback(callback, target, text, prompt, maxCharacters, args, gender)\r\n\r\n    self.onTextEntered = callback or nameInputDialog_callback\r\n    self.target = target\r\n    self.callbackArgs = args\r\n    self.textElement:setText(text or \"\")\r\n    self.textElement.maxCharacters = maxCharacters or self.textElement.maxCharacters\r\n\r\n    if prompt ~= nil then self.dialogTextElement:setText(prompt) end\r\n\r\n    self.dialogPrompt = prompt\r\n    self.maxCharacters = maxCharacters\r\n    self.animalGender = gender\r\n\r\nend\r\n\r\n\r\nfunction NameInputDialog:sendCallback(clickOk)\r\n    local text = self.textElement.text\r\n    self:close()\r\n\r\n    local words = string.split(text, \" \")\r\n\r\n    while #words > 2 do\r\n\r\n        words[2] = words[2] .. words[3]\r\n        table.remove(words, 3)\r\n\r\n    end\r\n\r\n    if #words == 2 then text = words[1] .. \" \" .. words[2] end\r\n\r\n    if self.target == nil then\r\n        self.onTextEntered(text, clickOk, self.callbackArgs)\r\n    else\r\n        self.onTextEntered(self.target, text, clickOk, self.callbackArgs)\r\n    end\r\nend\r\n\r\n\r\nfunction NameInputDialog:onEnterPressed( _, dismiss)\r\n    return dismiss and true or self:onClickOk()\r\nend\r\n\r\n\r\nfunction NameInputDialog:onEscPressed(_)\r\n    return self:onClickBack()\r\nend\r\n\r\n\r\nfunction NameInputDialog:onClickBack(_, _)\r\n    if self:isInputDisabled() then return true end\r\n\r\n    self:sendCallback(false)\r\n    return false\r\nend\r\n\r\n\r\nfunction NameInputDialog:onClickOk()\r\n    if self:isInputDisabled() then return true end\r\n\r\n    self:sendCallback(true)\r\n    self:updateButtonVisibility()\r\n    return false\r\nend\r\n\r\n\r\nfunction NameInputDialog:updateButtonVisibility()\r\n    if self.yesButton ~= nil then self.yesButton:setVisible(not self.textElement.imeActive) end\r\n    if self.noButton ~= nil then self.noButton:setVisible(not self.textElement.imeActive) end\r\nend\r\n\r\n\r\nfunction NameInputDialog:update(dT)\r\n    NameInputDialog:superClass().update(self, dT)\r\n\r\n    if self.reactivateNextFrame then\r\n        self.textElement.blockTime = 0\r\n        self.textElement:onFocusActivate()\r\n        self.reactivateNextFrame = false\r\n        self:updateButtonVisibility()\r\n    end\r\n    if self.extraInputDisableTime > 0 then\r\n        self.extraInputDisableTime = self.extraInputDisableTime - dT\r\n    end\r\nend\r\n\r\n\r\nfunction NameInputDialog:isInputDisabled()\r\n    local disabled\r\n\r\n    if self.extraInputDisableTime > 0 then\r\n        disabled = not self.doHide\r\n    else\r\n        disabled = false\r\n    end\r\n\r\n    return disabled\r\nend\r\n\r\n\r\nfunction NameInputDialog:disableInputForDuration(_) end\r\n\r\n\r\nfunction NameInputDialog:getIsVisible()\r\n    if self.doHide then return false end\r\n\r\n    return NameInputDialog:superClass().getIsVisible(self)\r\nend"
  },
  {
    "path": "src/gui/ProfileDialog.lua",
    "content": "ProfileDialog = {}\r\n\r\nlocal ProfileDialog_mt = Class(ProfileDialog, MessageDialog)\r\nlocal modSettingsDirectory = g_currentModSettingsDirectory\r\nlocal modDirectory = g_currentModDirectory\r\n\r\n\r\nfunction ProfileDialog.register()\r\n\r\n    local dialog = ProfileDialog.new()\r\n    g_gui:loadGui(modDirectory .. \"gui/ProfileDialog.xml\", \"ProfileDialog\", dialog)\r\n    ProfileDialog.INSTANCE = dialog\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog.show(context, manager, callback, target)\r\n    \r\n    if ProfileDialog.INSTANCE == nil then ProfileDialog.register() end\r\n\r\n    local dialog = ProfileDialog.INSTANCE\r\n\r\n    dialog.context = context or \"save\"\r\n    dialog.manager = manager\r\n    dialog.callback = callback\r\n    dialog.target = target\r\n\r\n    g_gui:showDialog(\"ProfileDialog\")\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog.new(target, customMt)\r\n\r\n    local self = MessageDialog.new(target, customMt or ProfileDialog_mt)\r\n\r\n    self.context = \"save\"\r\n    self.profiles = {}\r\n\r\n    self:loadProfiles()\r\n    \r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog.createFromExistingGui(gui, _)\r\n\r\n    ProfileDialog.register()\r\n    ProfileDialog.show()\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog:loadProfiles()\r\n\r\n    local xmlFile = XMLFile.loadIfExists(\"aiManagerProfiles\", modSettingsDirectory .. \"aiManagerProfiles.xml\")\r\n\r\n    if xmlFile == nil then return end\r\n\r\n    xmlFile:iterate(\"profiles.profile\", function(_, key)\r\n\r\n        local name = xmlFile:getString(key .. \"#profileName\")\r\n        local manager = AIAnimalManager.new()\r\n        manager.isProfile = true\r\n        manager:loadFromXMLFile(xmlFile, key)\r\n\r\n        self.profiles[name] = manager\r\n\r\n    end)\r\n\r\n    xmlFile:delete()\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog:saveProfiles()\r\n\r\n    local xmlFile = XMLFile.create(\"aiManagerProfiles\", modSettingsDirectory .. \"aiManagerProfiles.xml\", \"profiles\")\r\n\r\n    if xmlFile == nil then return end\r\n\r\n    local i = 0\r\n\r\n    for name, profile in pairs(self.profiles) do\r\n\r\n        local key = string.format(\"profiles.profile(%s)\", i)\r\n\r\n        xmlFile:setString(key .. \"#profileName\", name)\r\n        profile:saveToXMLFile(xmlFile, key)\r\n        i = i + 1\r\n\r\n    end\r\n\r\n    xmlFile:save(false, true)\r\n    xmlFile:delete()\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog.getProfiles()\r\n\r\n    return ProfileDialog.INSTANCE.profiles\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog.getAmountOfProfiles()\r\n\r\n    local profiles = ProfileDialog.INSTANCE.profiles\r\n\r\n    if profiles == nil then return 0 end\r\n\r\n    local i = 0\r\n\r\n    for _, profile in pairs(profiles) do i = i + 1 end\r\n\r\n    return i\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog.getHasProfiles()\r\n\r\n    local profiles = ProfileDialog.INSTANCE.profiles\r\n\r\n    if profiles == nil then return false end\r\n\r\n    for name, profile in pairs(profiles) do return true end\r\n\r\n    return false\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog:onOpen()\r\n\r\n    ProfileDialog:superClass().onOpen(self)\r\n\r\n    if self.context == \"save\" then\r\n\r\n        self.saveContainer:setVisible(true)\r\n        self.loadContainer:setVisible(false)\r\n\r\n        self.saveButton:setVisible(true)\r\n        self.loadButton:setVisible(false)\r\n\r\n        self.buttonsPC:invalidateLayout()\r\n\r\n        FocusManager:setFocus(self.saveProfileInput)\r\n\r\n    end\r\n\r\n    if self.context == \"load\" then\r\n\r\n        self.saveContainer:setVisible(false)\r\n        self.loadContainer:setVisible(true)\r\n\r\n        self.saveButton:setVisible(false)\r\n        self.loadButton:setVisible(true)\r\n\r\n        self.buttonsPC:invalidateLayout()\r\n\r\n        local texts = {}\r\n\r\n        for name, profile in pairs(self.profiles) do\r\n\r\n            table.insert(texts, name)\r\n\r\n        end\r\n\r\n        self.loadProfileSelector:setTexts(texts)\r\n        self.loadProfileSelector:setState(1)\r\n        self.profileIndexToName = texts\r\n\r\n        FocusManager:setFocus(self.loadProfileSelector)\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog:onClickSave()\r\n\r\n    local name = self.saveProfileInput:getText()\r\n    local profile = self.manager:createProfile()\r\n\r\n    self.profiles[name] = profile\r\n    self:saveProfiles()\r\n\r\n    self:close()\r\n\r\n    self.callback(self.target)\r\n\r\nend\r\n\r\n\r\nfunction ProfileDialog:onClickLoad()\r\n\r\n    local profile = self.profiles[self.profileIndexToName[self.loadProfileSelector:getState()]]\r\n\r\n    if profile ~= nil then self.manager:copyProfile(profile) end\r\n\r\n    self:close()\r\n\r\n    self.callback(self.target)\r\n\r\nend"
  },
  {
    "path": "src/gui/RL_InfoDisplayKeyValueBox.lua",
    "content": "RL_InfoDisplayKeyValueBox = {}\r\nlocal rl_InfoDisplayKeyValueBox_mt = Class(RL_InfoDisplayKeyValueBox, InfoDisplayBox)\r\n\r\n\r\nfunction RL_InfoDisplayKeyValueBox.new(infoDisplay, uiScale)\r\n\r\n    local self = InfoDisplayBox.new(infoDisplay, uiScale, rl_InfoDisplayKeyValueBox_mt)\r\n\r\n    self.lines = {}\r\n    self.title = \"Unknown Title\"\r\n\r\n    local r, g, b, a = unpack(HUD.COLOR.BACKGROUND)\r\n    self.bgScale = g_overlayManager:createOverlay(\"gui.fieldInfo_middle\", 0, 0, 0, 0)\r\n    self.bgScale:setColor(r, g, b, a)\r\n    self.bgBottom = g_overlayManager:createOverlay(\"gui.fieldInfo_bottom\", 0, 0, 0, 0)\r\n    self.bgBottom:setColor(r, g, b, a)\r\n    self.bgTop = g_overlayManager:createOverlay(\"gui.fieldInfo_top\", 0, 0, 0, 0)\r\n    self.bgTop:setColor(r, g, b, a)\r\n\r\n    r, g, b, a = unpack(HUD.COLOR.ACTIVE)\r\n    self.warningIcon = g_overlayManager:createOverlay(\"gui.fieldInfo_warning\", 0, 0, 0, 0)\r\n    self.warningIcon:setColor(r, g, b, a)\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction RL_InfoDisplayKeyValueBox:delete()\r\n\r\n    self.bgScale:delete()\r\n    self.bgBottom:delete()\r\n    self.bgTop:delete()\r\n    self.warningIcon:delete()\r\n\r\nend\r\n\r\n\r\nfunction RL_InfoDisplayKeyValueBox:storeScaledValues()\r\n\r\n    local infoDisplay = self.infoDisplay\r\n    local x, z = infoDisplay:scalePixelValuesToScreenVector(340, 6)\r\n    local y = infoDisplay:scalePixelToScreenHeight(6)\r\n\r\n    self.bgBottom:setDimension(x, z)\r\n    self.bgTop:setDimension(x, y)\r\n    self.bgScale:setDimension(x, 0)\r\n    self.boxWidth = infoDisplay:scalePixelToScreenWidth(340)\r\n    self.keyTextSize = infoDisplay:scalePixelToScreenHeight(14)\r\n    self.valueTextSize = infoDisplay:scalePixelToScreenHeight(14)\r\n    self.titleTextSize = infoDisplay:scalePixelToScreenHeight(15)\r\n    self.titleToLineOffsetY = infoDisplay:scalePixelToScreenHeight(-24)\r\n    self.lineToLineOffsetY = infoDisplay:scalePixelToScreenHeight(-21)\r\n    self.lineHeight = infoDisplay:scalePixelToScreenHeight(21)\r\n    self.titleAndBoxHeight = infoDisplay:scalePixelToScreenHeight(45)\r\n    self.dashedLineHeight = g_pixelSizeY\r\n    self.dashWidth = infoDisplay:scalePixelToScreenWidth(6)\r\n    self.dashGapWidth = infoDisplay:scalePixelToScreenWidth(3)\r\n    self.keyOffsetX = infoDisplay:scalePixelToScreenWidth(30)\r\n\r\n    local a, b = infoDisplay:scalePixelValuesToScreenVector(30, -3)\r\n    self.warningOffsetX = a\r\n    self.warningOffsetY = b\r\n    self.valueOffsetX = infoDisplay:scalePixelToScreenWidth(-14)\r\n\r\n    local c, d = infoDisplay:scalePixelValuesToScreenVector(14, -27)\r\n    self.titleOffsetX = c\r\n    self.titleOffsetY = d\r\n    self.titleMaxWidth = infoDisplay:scalePixelToScreenWidth(312)\r\n\r\n    local e, f = infoDisplay:scalePixelValuesToScreenVector(20, 20)\r\n\r\n    self.warningIcon:setDimension(e, f)\r\n    local g, h = infoDisplay:scalePixelValuesToScreenVector(10, -4)\r\n    self.warningIconOffsetX = g\r\n    self.warningIconOffsetY = h\r\n\r\nend\r\n\r\n\r\nfunction RL_InfoDisplayKeyValueBox:draw(posX, posY)\r\n\r\n    local leftX = posX - self.boxWidth\r\n    local height = self.titleAndBoxHeight\r\n\r\n    for _, line in ipairs(self.lines) do\r\n\r\n        if line.isActive then\r\n            height = height + self.lineHeight\r\n            if line.isWarning then height = height + math.abs(self.warningOffsetY) end\r\n        end\r\n\r\n    end\r\n\r\n    self.bgScale:setDimension(nil, height - self.bgBottom.height - self.bgTop.height)\r\n    self.bgBottom:setPosition(leftX, posY)\r\n    self.bgBottom:render()\r\n    self.bgScale:setPosition(leftX, self.bgBottom.y + self.bgBottom.height)\r\n    self.bgScale:render()\r\n    self.bgTop:setPosition(leftX, self.bgScale.y + self.bgScale.height)\r\n    self.bgTop:render()\r\n\r\n    local a = leftX + self.titleOffsetX\r\n    local b = self.bgTop.y + self.bgTop.height + self.titleOffsetY\r\n\r\n    setTextAlignment(RenderText.ALIGN_LEFT)\r\n    setTextColor(1, 1, 1, 1)\r\n    setTextBold(true)\r\n    renderText(a, b, self.titleTextSize, self.title)\r\n    setTextBold(false)\r\n\r\n    local c = leftX + self.keyOffsetX\r\n    local d = leftX + self.warningOffsetX\r\n    local e = leftX + self.warningIconOffsetX\r\n    local f = posX + self.valueOffsetX\r\n    local g = b + self.titleToLineOffsetY\r\n    local h = HUD.COLOR.ACTIVE\r\n    local i = HUD.COLOR.INACTIVE\r\n\r\n    for _, line in ipairs(self.lines) do\r\n\r\n        if line.isActive then\r\n            local key = line.key\r\n            local value = line.value\r\n\r\n            if line.isWarning then\r\n                setTextAlignment(RenderText.ALIGN_LEFT)\r\n                setTextColor(h[1], h[2], h[3], h[4])\r\n                setTextBold(true)\r\n                g = g + self.warningOffsetY\r\n                renderText(d, g, self.keyTextSize, key)\r\n                setTextBold(false)\r\n                self.warningIcon:setPosition(e, g + self.warningIconOffsetY)\r\n                self.warningIcon:render()\r\n            else\r\n\r\n                if value == \"rl_ui_genetics_extremelyLow\" or value == \"rl_ui_genetics_extremelyBad\" then\r\n                    setTextColor(1, 0, 0, 1)\r\n                elseif value == \"rl_ui_genetics_veryLow\" or value == \"rl_ui_genetics_veryBad\" then\r\n                    setTextColor(1, 0.2, 0, 1)\r\n                elseif value == \"rl_ui_genetics_low\" or value == \"rl_ui_genetics_bad\" then\r\n                    setTextColor(1, 0.52, 0, 1)\r\n                elseif value == \"rl_ui_genetics_average\" then\r\n                    setTextColor(1, 1, 0, 1)\r\n                elseif value == \"rl_ui_genetics_high\" or value == \"rl_ui_genetics_good\" then\r\n                    setTextColor(0.52, 1, 0, 1)\r\n                elseif value == \"rl_ui_genetics_veryHigh\" or value == \"rl_ui_genetics_veryGood\" then\r\n                    setTextColor(0.2, 1, 0, 1)\r\n                else\r\n                    setTextColor(0, 1, 0, 1)\r\n                end\r\n\r\n                value = g_i18n:getText(value)\r\n\r\n                if key == \"rl_ui_overall\" then\r\n                    setTextBold(true)\r\n                    key = g_i18n:getText(key)\r\n                end\r\n\r\n                setTextAlignment(RenderText.ALIGN_LEFT)\r\n                renderText(c, g, self.keyTextSize, key)\r\n                local j = getTextWidth(self.keyTextSize, key)\r\n                setTextAlignment(RenderText.ALIGN_RIGHT)\r\n                renderText(f, g, self.valueTextSize, value)\r\n                local k = getTextWidth(self.valueTextSize, value)\r\n                local l = c + j + 3 * g_pixelSizeX\r\n                local m = f - k - l - 3 * g_pixelSizeX\r\n                drawDashedLine(l, g, m, self.dashedLineHeight, self.dashWidth, self.dashGapWidth, i[1], i[2], i[3], i[4], true)\r\n                setTextBold(false)\r\n            end\r\n\r\n            g = g + self.lineToLineOffsetY\r\n        end\r\n\r\n    end\r\n\r\n    local newPosY = self.bgTop.y + self.bgTop.height\r\n    setTextAlignment(RenderText.ALIGN_LEFT)\r\n    setTextColor(1, 1, 1, 1)\r\n    self.doShowNextFrame = false\r\n\r\n    return posX, newPosY\r\n\r\nend\r\n\r\n\r\nfunction RL_InfoDisplayKeyValueBox:canDraw()\r\n    return self.doShowNextFrame\r\nend\r\n\r\n\r\nfunction RL_InfoDisplayKeyValueBox:showNextFrame()\r\n    self.doShowNextFrame = true\r\nend\r\n\r\n\r\nfunction RL_InfoDisplayKeyValueBox:clear()\r\n\r\n    for _, lines in ipairs(self.lines) do\r\n        lines.isActive = false\r\n    end\r\n    self.currentLineIndex = 0\r\n\r\nend\r\n\r\n\r\nfunction RL_InfoDisplayKeyValueBox:addLine(key, value, accentuate)\r\n\r\n    self.currentLineIndex = self.currentLineIndex + 1\r\n    local line = self.lines[self.currentLineIndex]\r\n    if line == nil then\r\n        line = {\r\n            [\"key\"] = \"\",\r\n            [\"value\"] = \"\",\r\n            [\"isWarning\"] = false\r\n        }\r\n        table.addElement(self.lines, line)\r\n    end\r\n    line.key = key\r\n    line.value = value or \"\"\r\n    line.isWarning = accentuate\r\n    line.isActive = true\r\n\r\nend\r\n\r\n\r\nfunction RL_InfoDisplayKeyValueBox:setTitle(title)\r\n\r\n    local newTitle = utf8ToUpper(title)\r\n    if newTitle ~= self.title then\r\n        self.title = Utils.limitTextToWidth(newTitle, self.titleTextSize, self.titleMaxWidth, false, \"...\")\r\n    end\r\n\r\nend"
  },
  {
    "path": "src/gui/RealisticLivestockFrame.lua",
    "content": "RealisticLivestockFrame = {}\r\n\r\nlocal realisticLivestockFrame_mt = Class(RealisticLivestockFrame, TabbedMenuFrameElement)\r\n\r\n\r\nfunction RealisticLivestockFrame.new()\r\n\r\n\tlocal self = RealisticLivestockFrame:superClass().new(nil, realisticLivestockFrame_mt)\r\n\t\r\n\tself.name = \"RealisticLivestockFrame\"\r\n\tself.husbandrySystem = g_currentMission.husbandrySystem\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:delete()\r\n\tRealisticLivestockFrame:superClass().delete(self)\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:initialize()\r\n\r\n\tself.backButtonInfo = {\r\n\t\t[\"inputAction\"] = InputAction.MENU_BACK\r\n\t}\r\n\r\n\tself.nextPageButtonInfo = {\r\n\t\t[\"inputAction\"] = InputAction.MENU_PAGE_NEXT,\r\n\t\t[\"text\"] = g_i18n:getText(\"ui_ingameMenuNext\"),\r\n\t\t[\"callback\"] = self.onPageNext\r\n\t}\r\n\r\n\tself.prevPageButtonInfo = {\r\n\t\t[\"inputAction\"] = InputAction.MENU_PAGE_PREV,\r\n\t\t[\"text\"] = g_i18n:getText(\"ui_ingameMenuPrev\"),\r\n\t\t[\"callback\"] = self.onPagePrevious\r\n\t}\r\n\r\n\tself.changeMonitorsButtonInfo = {\r\n\t\t[\"inputAction\"] = InputAction.MENU_ACTIVATE,\r\n\t\t[\"text\"] = g_i18n:getText(\"rl_ui_applyAllMonitor\"),\r\n\t\t[\"callback\"] = function()\r\n\t\t\tself:onClickChangeMonitors()\r\n\t\tend,\r\n\t\t[\"profile\"] = \"buttonSelect\"\r\n\t}\r\n\t\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:onGuiSetupFinished()\r\n\tRealisticLivestockFrame:superClass().onGuiSetupFinished(self)\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:onFrameOpen()\r\n\tRealisticLivestockFrame:superClass().onFrameOpen(self)\r\n\tself:updateContent()\r\n\tself:resetButtonStates()\r\n\tself:updateMenuButtons()\r\n\tself.husbandryList:reloadData()\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:onFrameClose()\r\n\tRealisticLivestockFrame:superClass().onFrameClose(self)\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:updateContent()\r\n\r\n\tself.currentBalanceText:setText(g_i18n:formatMoney(g_currentMission:getMoney(), 2, true, true))\r\n\r\n\tself.data = {}\r\n\tself.selectedRow = nil\r\n\r\n\tif g_localPlayer == nil then return end\r\n\r\n\tlocal placeables = self.husbandrySystem:getPlaceablesByFarm()\r\n\t\r\n\tfor _, placeable in pairs(placeables) do\r\n\r\n\t\tlocal animals = placeable:getClusters()\r\n\t\tlocal numMonitored = 0\r\n\t\tlocal animalTypeIndex = placeable:getAnimalTypeIndex()\r\n\t\tlocal farmland = placeable:getFarmlandId()\r\n\t\tlocal numAnimals = #animals\r\n\r\n\t\tlocal data = {\r\n\t\t\t[\"placeable\"] = placeable,\r\n\t\t\t[\"name\"] = placeable:getName(),\r\n\t\t\t[\"totalAnimals\"] = numAnimals,\r\n\t\t\t[\"farmland\"] = farmland,\r\n\t\t\t[\"animalTypeIndex\"] = animalTypeIndex,\r\n\t\t\t[\"fee\"] = 0,\r\n\t\t\t[\"food\"] = 0,\r\n\t\t\t[\"water\"] = 0,\r\n\t\t\t[\"straw\"] = 0,\r\n\t\t\t[\"product\"] = 0,\r\n\t\t\t[\"manure\"] = 0,\r\n\t\t\t[\"liquidManure\"] = 0\r\n\t\t}\r\n\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tif not animal.monitor.active and not animal.monitor.removed then continue end\r\n\r\n\t\t\tnumMonitored = numMonitored + 1\r\n\r\n\t\t\tfor fillType, amount in pairs(animal.input) do\r\n\r\n\t\t\t\tdata[fillType] = data[fillType] + amount\r\n\r\n\t\t\tend\r\n\r\n\t\t\tfor fillType, amount in pairs(animal.output) do\r\n\r\n\t\t\t\tlocal target = (fillType == \"pallets\" or fillType == \"milk\") and \"product\" or fillType\r\n\r\n\t\t\t\tdata[target] = data[target] + amount\r\n\r\n\t\t\tend\r\n\r\n\t\t\tdata.fee = data.fee + animal.monitor.fee\r\n\r\n\t\tend\r\n\r\n\t\tdata.totalMonitored = numMonitored\r\n\t\tdata.percentMonitored = numAnimals == 0 and 0 or (numMonitored / numAnimals)\r\n\r\n\t\ttable.insert(self.data, data)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:updateMenuButtons()\r\n\r\n\tself.menuButtonInfo = { self.backButtonInfo, self.nextPageButtonInfo, self.prevPageButtonInfo }\r\n\r\n\tif self.data ~= nil and self.selectedRow ~= nil then\r\n\r\n\t\tself.changeMonitorsButtonInfo.disabled = self.selectedRow.totalAnimals == 0\r\n\t\tself.changeMonitorsButtonInfo.text = g_i18n:getText(\"rl_ui_\" .. (self.selectedRow.percentMonitored == 1 and \"remove\" or \"apply\") .. \"AllMonitor\")\r\n\t\t\r\n\t\ttable.insert(self.menuButtonInfo, self.changeMonitorsButtonInfo)\r\n\r\n\tend\r\n\t\r\n\tself:setMenuButtonInfoDirty()\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:resetButtonStates()\r\n\r\n\tself.buttonStates = {\r\n\t\t[self.nameButton] = { [\"sorter\"] = false, [\"target\"] = \"name\", [\"pos\"] = \"-5px\" },\r\n\t\t[self.farmlandButton] = { [\"sorter\"] = false, [\"target\"] = \"farmland\", [\"pos\"] = \"12px\" },\r\n\t\t[self.animalTypeButton] = { [\"sorter\"] = false, [\"target\"] = \"animalTypeIndex\", [\"pos\"] = \"35px\" },\r\n\t\t[self.percentMonitoredButton] = { [\"sorter\"] = false, [\"target\"] = \"percentMonitored\", [\"pos\"] = \"12px\" },\r\n\t\t[self.feeButton] = { [\"sorter\"] = false, [\"target\"] = \"fee\", [\"pos\"] = \"12px\" },\r\n\t\t[self.foodButton] = { [\"sorter\"] = false, [\"target\"] = \"food\", [\"pos\"] = \"22px\" },\r\n\t\t[self.waterButton] = { [\"sorter\"] = false, [\"target\"] = \"water\", [\"pos\"] = \"36px\" },\r\n\t\t[self.strawButton] = { [\"sorter\"] = false, [\"target\"] = \"straw\", [\"pos\"] = \"36px\" },\r\n\t\t[self.productionButton] = { [\"sorter\"] = false, [\"target\"] = \"product\", [\"pos\"] = \"10px\" },\r\n\t\t[self.manureButton] = { [\"sorter\"] = false, [\"target\"] = \"manure\", [\"pos\"] = \"20px\" },\r\n\t\t[self.liquidManureButton] = { [\"sorter\"] = false, [\"target\"] = \"liquidManure\", [\"pos\"] = \"20px\" }\r\n\t}\r\n\r\n\tself.sortingIcon_true:setVisible(false)\r\n\tself.sortingIcon_false:setVisible(false)\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:getNumberOfSections()\r\n\r\n\tif self.data == nil or #self.data == 0 then return 0 end\r\n\r\n\treturn 1\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:getNumberOfItemsInSection(list, section)\r\n\r\n\treturn self.data == nil and 0 or #self.data\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:getTitleForSectionHeader(list, section)\r\n\r\n    return \"\"\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:populateCellForItemInSection(list, section, index, cell)\r\n\r\n\tlocal item = self.data[index]\r\n\r\n\tcell:getAttribute(\"name\"):setText(item.name)\r\n\tcell:getAttribute(\"farmland\"):setText(item.farmland)\r\n\r\n\tlocal animalType\r\n\r\n\tfor animalName, animalIndex in pairs(AnimalType) do\r\n\r\n\t\tif animalIndex == item.animalTypeIndex then\r\n\t\t\tanimalType = animalName:lower()\r\n\t\t\tbreak\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tif animalType ~= nil then animalType = string.sub(animalType, 1, 1):upper() .. string.sub(animalType, 2) end\r\n\r\n\tcell:getAttribute(\"animalType\"):setText(animalType)\r\n\tcell:getAttribute(\"percentMonitored\"):setText(string.format(\"%s / %s\", item.totalMonitored, item.totalAnimals))\r\n\tcell:getAttribute(\"fee\"):setText(string.format(g_i18n:getText(\"rl_ui_feePerMonth\"), g_i18n:formatMoney(item.fee, 2, true, true)))\r\n\r\n\tlocal daysPerMonth = g_currentMission.environment.daysPerPeriod\r\n\t\r\n\tcell:getAttribute(\"food\"):setText(string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (item.food * 24) / daysPerMonth))\r\n\tcell:getAttribute(\"water\"):setText(string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (item.water * 24) / daysPerMonth))\r\n\tcell:getAttribute(\"straw\"):setText(string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (item.straw * 24) / daysPerMonth))\r\n\t\r\n\tcell:getAttribute(\"product\"):setText(string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (item.product * 24) / daysPerMonth))\r\n\tcell:getAttribute(\"manure\"):setText(string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (item.manure * 24) / daysPerMonth))\r\n\tcell:getAttribute(\"liquidManure\"):setText(string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (item.liquidManure * 24) / daysPerMonth))\r\n\t\r\n\tcell.setSelected = Utils.appendedFunction(cell.setSelected, function(cell, selected)\r\n\t\tif selected then self:onClickListItem(cell) end\r\n\tend)\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:onClickSortButton(button)\r\n\t\r\n\tlocal buttonState = self.buttonStates[button]\r\n\r\n\tself[\"sortingIcon_\" .. tostring(buttonState.sorter)]:setVisible(false)\r\n\tself[\"sortingIcon_\" .. tostring(not buttonState.sorter)]:setVisible(true)\r\n\tself[\"sortingIcon_\" .. tostring(not buttonState.sorter)]:setPosition(button.position[1] + GuiUtils.getNormalizedXValue(buttonState.pos), 0)\r\n\r\n\tbuttonState.sorter = not buttonState.sorter\r\n\t\r\n\tlocal sorter = buttonState.sorter\r\n\tlocal target = buttonState.target\r\n\r\n\ttable.sort(self.data, function(a, b)\r\n\t\tif sorter then return a[target] > b[target] end\r\n\r\n\t\treturn a[target] < b[target]\r\n\tend)\r\n\r\n\tself.husbandryList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:onClickListItem(item)\r\n\r\n\tself.selectedRow = nil\r\n\r\n\tlocal index = item.indexInSection\r\n\r\n\tif self.data == nil or self.data[index] == nil then\r\n\t\tself:updateMenuButtons()\r\n\t\treturn\r\n\tend\r\n\r\n\tself.selectedRow = self.data[index]\r\n\r\n\tself:updateMenuButtons()\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestockFrame:onClickChangeMonitors()\r\n\r\n\tlocal selectedRow = self.selectedRow\r\n\r\n\tif selectedRow == nil then return end\r\n\r\n\tlocal animals = selectedRow.placeable:getClusters()\r\n\r\n\tif selectedRow.percentMonitored == 1 then\r\n\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tanimal.monitor.active = false\r\n\t\t\tanimal.monitor.removed = true\r\n\r\n\t\t\tAnimalMonitorEvent.sendEvent(selectedRow.placeable, animal, false, true)\r\n\r\n\t\tend\r\n\r\n\telse\r\n\r\n\t\tfor _, animal in pairs(animals) do\r\n\r\n\t\t\tanimal.monitor.active = true\r\n\t\t\tanimal.monitor.removed = false\r\n\r\n\t\t\tAnimalMonitorEvent.sendEvent(selectedRow.placeable, animal, true, false)\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tselectedRow.food, selectedRow.water, selectedRow.straw, selectedRow.product, selectedRow.manure, selectedRow.liquidManure, selectedRow.fee, selectedRow.totalMonitored = 0, 0, 0, 0, 0, 0, 0, 0\r\n\r\n\tfor _, animal in pairs(animals) do\r\n\r\n\t\tif not animal.monitor.active and not animal.monitor.removed then continue end\r\n\r\n\t\tselectedRow.totalMonitored = selectedRow.totalMonitored + 1\r\n\r\n\t\tfor fillType, amount in pairs(animal.input) do\r\n\r\n\t\t\tselectedRow[fillType] = selectedRow[fillType] + amount\r\n\r\n\t\tend\r\n\r\n\t\tfor fillType, amount in pairs(animal.output) do\r\n\r\n\t\t\tlocal target = (fillType == \"pallets\" or fillType == \"milk\") and \"product\" or fillType\r\n\r\n\t\t\tselectedRow[target] = selectedRow[target] + amount\r\n\r\n\t\tend\r\n\r\n\t\tselectedRow.fee = selectedRow.fee + animal.monitor.fee\r\n\r\n\tend\r\n\r\n\tselectedRow.percentMonitored = selectedRow.totalAnimals == 0 and 0 or (selectedRow.totalMonitored / selectedRow.totalAnimals)\r\n\r\n\tself.husbandryList:reloadData()\r\n\tself:updateMenuButtons()\r\n\r\nend"
  },
  {
    "path": "src/gui/RealisticLivestock_AnimalScreen.lua",
    "content": "RealisticLivestock_AnimalScreen = {}\r\n\r\n\r\nAnimalScreen.DEWAR_QUANTITIES = {\r\n    1,\r\n    2,\r\n    3,\r\n    4,\r\n    5,\r\n    10,\r\n    15,\r\n    20,\r\n    25,\r\n    30,\r\n    40,\r\n    50,\r\n    75,\r\n    100,\r\n    150,\r\n    200,\r\n    250,\r\n    300,\r\n    400,\r\n    500,\r\n    750,\r\n    1000\r\n}\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen.show(husbandry, vehicle, isDealer)\r\n\r\n    --if husbandry == nil and vehicle == nil then return end\r\n\r\n    g_animalScreen.isTrailerFarm = husbandry ~= nil and vehicle ~= nil\r\n    g_animalScreen.filters = nil\r\n    g_animalScreen.filteredItems = nil\r\n    \r\n\tg_animalScreen:setController(husbandry, vehicle, isDealer)\r\n\tg_gui:showGui(\"AnimalScreen\")\r\n\r\nend\r\n\r\nAnimalScreen.show = RealisticLivestock_AnimalScreen.show\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:setController(_, husbandry, vehicle, isDealer)\r\n\r\n    --if husbandry ~= nil then self.tabLogButton:setImageSlice(nil, \"realistic_livestock.messages\" .. (husbandry:getHasUnreadRLMessages() and \"_new\" or \"\")) end\r\n\r\n    self.isTrailer = husbandry == nil and vehicle ~= nil and not isDealer\r\n    self.isDirectFarm = husbandry ~= nil and vehicle == nil\r\n    self.isDealer = isDealer\r\n    self.husbandry = husbandry\r\n\r\n    local controller\r\n\r\n\tif husbandry == nil then\r\n\t\tif vehicle == nil then\r\n\t\t\tcontroller = AnimalScreenDealer.new()\r\n\t\telseif isDealer then\r\n\t\t\tcontroller = AnimalScreenDealerTrailer.new(vehicle)\r\n\t\telse\r\n\t\t\tcontroller = AnimalScreenTrailer.new(vehicle)\r\n\t\tend\r\n\telseif vehicle == nil then\r\n\t\tcontroller = AnimalScreenDealerFarm.new(husbandry)\r\n\telse\r\n\t\tcontroller = AnimalScreenTrailerFarm.new(husbandry, vehicle)\r\n\tend\r\n\r\n\tcontroller:init()\r\n\r\n    self.tabLog:setVisible(self.isDirectFarm)\r\n    self.tabHerdsman:setVisible(self.isDirectFarm)\r\n\r\n\tself.controller = controller\r\n\tself.controller:setAnimalsChangedCallback(self.onAnimalsChanged, self)\r\n\tself.controller:setActionTypeCallback(self.onActionTypeChanged, self)\r\n\tself.controller:setSourceActionFinishedCallback(self.onSourceActionFinished, self)\r\n\tself.controller:setTargetActionFinishedCallback(self.onTargetActionFinished, self)\r\n\tself.controller:setSourceBulkActionFinishedCallback(self.onSourceBulkActionFinished, self)\r\n\tself.controller:setTargetBulkActionFinishedCallback(self.onTargetBulkActionFinished, self)\r\n\tself.controller:setErrorCallback(self.onError, self)\r\n\r\n\tself.sourceList:reloadData(true)\r\n\r\nend\r\n\r\nAnimalScreen.setController = Utils.overwrittenFunction(AnimalScreen.setController, RealisticLivestock_AnimalScreen.setController)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onGuiSetupFinished()\r\n\r\n    local function getText(key)\r\n\r\n        return g_i18n:getText(key)\r\n\r\n    end\r\n    \r\n    local geneticTexts = {\r\n        getText(\"rl_ui_genetics_extremelyBad\"),\r\n        getText(\"rl_ui_genetics_veryBad\"),\r\n        getText(\"rl_ui_genetics_bad\"),\r\n        getText(\"rl_ui_genetics_average\"),\r\n        getText(\"rl_ui_genetics_high\"),\r\n        getText(\"rl_ui_genetics_veryHigh\"),\r\n        getText(\"rl_ui_genetics_extremelyHigh\"),\r\n        getText(\"rl_ui_genetics_highest\")\r\n    }\r\n\r\n    local fertilityTexts = table.clone(geneticTexts, 1)\r\n    table.insert(fertilityTexts, 1, getText(\"rl_ui_genetics_infertile\"))\r\n\r\n    self.currentHerdsmanPage = \"buy\"\r\n\r\n    self.herdsmanOptions = {\r\n        [\"enabled\"] = { [\"target\"] = \"enabled\", [\"type\"] = \"binary\", [\"values\"] = { false, true }, [\"texts\"] = { getText(\"setting_disasterDestructionState_disabled\"), getText(\"setting_disasterDestructionState_enabled\") } },\r\n        [\"budget|type\"] = { [\"target\"] = \"budget|type\", [\"type\"] = \"binary\", [\"values\"] = { \"fixed\", \"percentage\" }, [\"texts\"] = { getText(\"rl_ui_fixed\"), getText(\"rl_ui_percentage\") } },\r\n        [\"budget|fixed\"] = { [\"target\"] = \"budget|fixed\", [\"type\"] = \"input\", [\"inputType\"] = \"money\" },\r\n        [\"budget|percentage\"] = { [\"target\"] = \"budget|percentage\", [\"type\"] = \"multi\", [\"values\"] = { 0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8, 9, 10, 12.5, 15, 17.5, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 100 }, [\"texts\"] = { \"0.5%\", \"1%\", \"1.5%\", \"2%\", \"2.5%\", \"3%\", \"4%\", \"5%\", \"6%\", \"7%\", \"8%\", \"9%\", \"10%\", \"12.5%\", \"15%\", \"17.5%\", \"20%\", \"25%\", \"30%\", \"35%\", \"40%\", \"45%\", \"50%\", \"60%\", \"70%\", \"80%\", \"90%\", \"100%\" } },\r\n        [\"maxAnimals\"] = { [\"target\"] = \"maxAnimals\", [\"type\"] = \"input\", [\"inputType\"] = \"number\" },\r\n        [\"breed\"] = { [\"target\"] = \"breed\", [\"type\"] = \"multi\", [\"ignoreTexts\"] = true },\r\n        [\"semen\"] = { [\"target\"] = \"semen\", [\"type\"] = \"multi\", [\"ignoreTexts\"] = true },\r\n        [\"mark\"] = { [\"target\"] = \"mark\", [\"type\"] = \"binary\", [\"values\"] = { false, true }, [\"texts\"] = { getText(\"rl_ui_dontMark\"), getText(\"rl_ui_mark\") } },\r\n        [\"diseases\"] = { [\"target\"] = \"diseases\", [\"type\"] = \"binary\", [\"values\"] = { false, true }, [\"texts\"] = { getText(\"rl_ui_noDiseases\"), getText(\"rl_ui_any\") } },\r\n        [\"diseasesSecondary\"] = { [\"target\"] = \"diseases\", [\"type\"] = \"binary\", [\"values\"] = { false, true }, [\"texts\"] = { getText(\"rl_ui_any\"), getText(\"rl_ui_onlyDiseases\") } },\r\n        [\"gender\"] = { [\"target\"] = \"gender\", [\"type\"] = \"tripleOption\", [\"values\"] = { \"female\", \"any\", \"male\" }, [\"texts\"] = { getText(\"rl_ui_female\"), getText(\"rl_ui_any\"), getText(\"rl_ui_male\") } },\r\n        [\"age\"] = { [\"target\"] = \"age\", [\"type\"] = \"doubleSlider\", [\"ignoreTexts\"] = true },\r\n        [\"quality\"] = { [\"target\"] = \"quality\", [\"type\"] = \"doubleSlider\", [\"values\"] = { 25, 35, 70, 90, 110, 140, 165, 175 }, [\"texts\"] = geneticTexts },\r\n        [\"fertility\"] = { [\"target\"] = \"fertility\", [\"type\"] = \"doubleSlider\", [\"values\"] = { 0, 25, 35, 70, 90, 110, 140, 165, 175 }, [\"texts\"] = fertilityTexts },\r\n        [\"health\"] = { [\"target\"] = \"health\", [\"type\"] = \"doubleSlider\", [\"values\"] = { 25, 35, 70, 90, 110, 140, 165, 175 }, [\"texts\"] = geneticTexts },\r\n        [\"productivity\"] = { [\"target\"] = \"productivity\", [\"type\"] = \"doubleSlider\", [\"values\"] = { 25, 35, 70, 90, 110, 140, 165, 175 }, [\"texts\"] = geneticTexts },\r\n        [\"metabolism\"] = { [\"target\"] = \"metabolism\", [\"type\"] = \"doubleSlider\", [\"values\"] = { 25, 35, 70, 90, 110, 140, 165, 175 }, [\"texts\"] = geneticTexts },\r\n        [\"convention\"] = { [\"target\"] = \"convention\", [\"type\"] = \"binary\", [\"values\"] = { \"random\", \"alphabetical\" }, [\"texts\"] = { getText(\"rl_button_random\"), getText(\"rl_ui_alphabetical\") } }\r\n    }\r\n\r\n    local function updateTooltip(element)\r\n\r\n        local option = self.herdsmanOptions[element.name]\r\n            \r\n        local tooltip = element:getDescendantByName(\"tooltip\")\r\n        tooltip:setVisible(true)\r\n\r\n        if option.type == \"doubleSlider\" then\r\n\r\n            local lowestState = element:getLowestState()\r\n            local highestState = element:getHighestState()\r\n            \r\n            if lowestState == highestState then\r\n                tooltip:setText(string.format(getText(string.format(\"rl_ui_herdsmanTooltip_%s_%s_equal\", self.currentHerdsmanPage, element.name)), option.texts[lowestState]))\r\n            else\r\n                tooltip:setText(string.format(getText(string.format(\"rl_ui_herdsmanTooltip_%s_%s_range\", self.currentHerdsmanPage, element.name)), option.texts[lowestState], option.texts[highestState]))\r\n            end\r\n\r\n        elseif option.type == \"input\" then\r\n\r\n            if option.inputType == \"money\" then\r\n                tooltip:setText(string.format(getText(string.format(\"rl_ui_herdsmanTooltip_%s_%s\", self.currentHerdsmanPage, element.name)), g_i18n:formatMoney(tonumber(element:getText()) or 0, 2, true, true)))\r\n            elseif option.inputType == \"number\" then\r\n                tooltip:setText(string.format(getText(string.format(\"rl_ui_herdsmanTooltip_%s_%s\", self.currentHerdsmanPage, element.name)), g_i18n:formatNumber(tonumber(element:getText()) or 0)))\r\n            end\r\n\r\n        elseif option.type == \"multi\" then\r\n\r\n            if (option.target == \"breed\" or option.target == \"semen\") and option.values[element:getState()] == \"any\" then\r\n                \r\n                tooltip:setText(getText(string.format(\"rl_ui_herdsmanTooltip_%s_%s_any\", self.currentHerdsmanPage, option.target)))\r\n                \r\n            else\r\n\r\n                tooltip:setText(string.format(getText(string.format(\"rl_ui_herdsmanTooltip_%s_%s\", self.currentHerdsmanPage, element.name)), option.texts[element:getState()]))\r\n\r\n            end\r\n\r\n        else\r\n\r\n            tooltip:setText(getText(string.format(\"rl_ui_herdsmanTooltip_%s_%s_%s\", self.currentHerdsmanPage, element.name, element:getState())))\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n    self.herdsmanPages = {\r\n        [\"buy\"] = self.herdsmanPageBuyScrollingLayout,\r\n        [\"sell\"] = self.herdsmanPageSellScrollingLayout,\r\n        [\"castrate\"] = self.herdsmanPageCastrateScrollingLayout,\r\n        [\"naming\"] = self.herdsmanPageNamingScrollingLayout,\r\n        [\"ai\"] = self.herdsmanPageAIScrollingLayout\r\n    }\r\n\r\n\r\n    for _, page in pairs(self.herdsmanPages) do\r\n\r\n        for _, element in pairs(page.elements) do\r\n\r\n            if element.name == \"ignore\" then continue end\r\n            \r\n            element.onFocusEnter = updateTooltip\r\n            \r\n            if self.herdsmanOptions[element.name].type == \"input\" then\r\n                element.updateVisibleTextElements = Utils.appendedFunction(element.updateVisibleTextElements, updateTooltip)\r\n                continue\r\n            end\r\n\r\n            element.updateContentElement = Utils.appendedFunction(element.updateContentElement, updateTooltip)\r\n\r\n            if self.herdsmanOptions[element.name].ignoreTexts then continue end\r\n\r\n            element:setTexts(self.herdsmanOptions[element.name].texts)\r\n\r\n        end\r\n\r\n    end\r\n\r\n\r\n    local aiQuantityTexts = {}\r\n\r\n    for _, quantity in pairs(AnimalScreen.DEWAR_QUANTITIES) do table.insert(aiQuantityTexts, string.format(\"%s %s\", quantity, g_i18n:getText(\"rl_ui_straw\" .. (quantity == 1 and \"Single\" or \"Multiple\")))) end\r\n\r\n    self.aiQuantitySelector:setTexts(aiQuantityTexts)\r\n\r\nend\r\n\r\nAnimalScreen.onGuiSetupFinished = Utils.appendedFunction(AnimalScreen.onGuiSetupFinished, RealisticLivestock_AnimalScreen.onGuiSetupFinished)\r\n\r\n\r\nfunction AnimalScreen:resetMessageButtonStates()\r\n\r\n\tself.messageButtonStates = {\r\n\t\t[self.messagesImportanceButton] = { [\"sorter\"] = false, [\"target\"] = \"importance\", [\"pos\"] = \"-5px\" },\r\n\t\t[self.messagesTypeButton] = { [\"sorter\"] = false, [\"target\"] = \"title\", [\"pos\"] = \"50px\" },\r\n\t\t[self.messagesAnimalButton] = { [\"sorter\"] = false, [\"target\"] = \"animal\", [\"pos\"] = \"30px\" },\r\n\t\t[self.messagesMessageButton] = { [\"sorter\"] = false, [\"target\"] = \"text\", [\"pos\"] = \"20px\" },\r\n\t}\r\n\r\n\tself.sortingIcon_true:setVisible(false)\r\n\tself.sortingIcon_false:setVisible(false)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickMessageSortButton(button)\r\n\t\r\n\tlocal buttonState = self.messageButtonStates[button]\r\n\r\n\tself[\"sortingIcon_\" .. tostring(buttonState.sorter)]:setVisible(false)\r\n\tself[\"sortingIcon_\" .. tostring(not buttonState.sorter)]:setVisible(true)\r\n\tself[\"sortingIcon_\" .. tostring(not buttonState.sorter)]:setPosition(button.position[1] + GuiUtils.getNormalizedXValue(buttonState.pos), 0)\r\n\r\n\tbuttonState.sorter = not buttonState.sorter\r\n\t\r\n\tlocal sorter = buttonState.sorter\r\n\tlocal target = buttonState.target\r\n\r\n\ttable.sort(self.messages[self.currentMessagePage], function(a, b)\r\n\r\n        local aTarget = a[target] or RLMessage[a.id][target]\r\n        local bTarget = b[target] or RLMessage[b.id][target]\r\n\r\n\t\tif sorter then return aTarget > bTarget end\r\n\r\n\t\treturn aTarget < bTarget\r\n\tend)\r\n\r\n\tself.husbandryList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:updateLog()\r\n\r\n    self:resetMessageButtonStates()\r\n\r\n    self.messageListPageNumber:setText(string.format(\"%s/%s\", self.currentMessagePage, #self.messages))\r\n\r\n    local totalNumMessages = (#self.messages - 1) * 250 + #self.messages[#self.messages]\r\n\r\n    self.messageListMessageNumber:setText(string.format(g_i18n:getText(\"rl_ui_messageNumber\"), (#self.messages[self.currentMessagePage] == 0 and 0 or 1) + 250 * (self.currentMessagePage - 1), (self.currentMessagePage - 1) * 250 + #self.messages[self.currentMessagePage], totalNumMessages))\r\n\r\n    self.messageListPageFirst:setDisabled(self.currentMessagePage == 1)\r\n    self.messageListPagePrevious:setDisabled(self.currentMessagePage == 1)\r\n    self.messageListPageNext:setDisabled(self.currentMessagePage == #self.messages)\r\n    self.messageListPageLast:setDisabled(self.currentMessagePage == #self.messages)\r\n\r\n    self.husbandryList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickDeleteMessage()\r\n\r\n    local index = self.husbandryList.selectedIndex\r\n\r\n    local message = self.messages[self.currentMessagePage][index]\r\n\r\n    if message == nil then return end\r\n\r\n    self.husbandry:deleteRLMessage(message.uniqueId)\r\n\r\n    local currentMessagePage = self.currentMessagePage\r\n\r\n    self:onClickLogMode()\r\n\r\n    if #self.messages >= currentMessagePage then\r\n\r\n        self.currentMessagePage = currentMessagePage\r\n        self:updateLog()\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickMessagePageFirst()\r\n\r\n    self.currentMessagePage = 1\r\n    self:updateLog()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickMessagePagePrevious()\r\n\r\n    self.currentMessagePage = self.currentMessagePage - 1\r\n    self:updateLog()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickMessagePageNext()\r\n\r\n    self.currentMessagePage = self.currentMessagePage + 1\r\n    self:updateLog()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickMessagePageLast()\r\n\r\n    self.currentMessagePage = #self.messages\r\n    self:updateLog()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickAIMode()\r\n\r\n    self.filters = nil\r\n    self.filteredItems = nil\r\n    self.isInfoMode = false\r\n    self.isBuyMode = false\r\n    self.isLogMode = false\r\n    self.isHerdsmanMode = false\r\n    self.isAIMode = true\r\n\r\n    self.buttonBuySelected:setVisible(false)\r\n    self.buttonToggleSelectAll:setVisible(false)\r\n    self.buttonBuy:setVisible(false)\r\n    self.buttonMonitor:setVisible(false)\r\n    self.buttonArtificialInsemination:setVisible(false)\r\n    self.buttonMark:setVisible(false)\r\n    self.buttonRename:setVisible(false)\r\n    self.buttonSelect:setVisible(false)\r\n    self.buttonSell:setVisible(false)\r\n    self.buttonFilters:setVisible(false)\r\n    self.buttonDiseases:setVisible(false)\r\n    self.buttonDeleteMessage:setVisible(false)\r\n    self.buttonApplyHerdsmanSettings:setVisible(false)\r\n    self.buttonCastrate:setVisible(false)\r\n    self.buttonBuyAI:setVisible(true)\r\n    self.buttonFavourite:setVisible(true)\r\n\r\n    self.logContainer:setVisible(false)\r\n    self.herdsmanContainer:setVisible(false)\r\n    self.aiContainer:setVisible(true)\r\n    self.sourceBoxBg:setVisible(false)\r\n    self.mainContentContainer:setVisible(false)\r\n\r\n    self.tabBuy:setSelected(false)\r\n    self.tabSell:setSelected(false)\r\n    self.tabInfo:setSelected(false)\r\n    self.tabLog:setSelected(false)\r\n    self.tabHerdsman:setSelected(false)\r\n    self.tabAI:setSelected(true)\r\n\r\n    self.buttonsPanel:invalidateLayout()\r\n\r\n    self.aiAnimals = {}\r\n    local animalSystem = g_currentMission.animalSystem\r\n    local texts = {}\r\n\r\n    for animalTypeIndex, animalType in pairs(animalSystem:getTypes()) do\r\n\r\n        self.aiAnimals[animalTypeIndex] = animalSystem:getAIAnimalsByTypeIndex(animalTypeIndex)\r\n        table.sort(self.aiAnimals[animalTypeIndex], function(a, b) return a.subTypeIndex == b.subTypeIndex and a.age > b.age or a.subTypeIndex < b.subTypeIndex end)\r\n        table.insert(texts, animalType.groupTitle)\r\n\r\n    end\r\n\r\n\r\n    self.aiPageAnimalTypeSelector:setTexts(texts)\r\n    self.aiPageAnimalTypeSelector:setState(1)\r\n\r\n\r\n    self:onClickChangeAIAnimalType(1)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickBuyAI()\r\n\r\n    if self.aiAnimals == nil or self.aiAnimalTypeIndex == nil or self.aiAnimals[self.aiAnimalTypeIndex] == nil then return end\r\n\r\n    local animal = self.aiAnimals[self.aiAnimalTypeIndex][self.aiList.selectedIndex]\r\n\r\n    if animal == nil then return end\r\n\r\n    local spawnPlaces, usedPlaces = g_currentMission.storeSpawnPlaces, g_currentMission.usedStorePlaces\r\n\r\n    local x, y, z, place, width = PlacementUtil.getPlace(spawnPlaces, { [\"width\"] = 1, [\"height\"] = 2.5, [\"length\"] = 1, [\"widthOffset\"] = 0.5, [\"lengthOffset\"] = 0.5 }, usedPlaces, true, true, false, true)\r\n\t\r\n    if x == nil then\r\n\t\treturn\r\n\tend\r\n\t\r\n    PlacementUtil.markPlaceUsed(usedPlaces, place, width)\r\n\r\n    local farmId = g_localPlayer.farmId\r\n    \r\n    local quantity = AnimalScreen.DEWAR_QUANTITIES[self.aiQuantitySelector:getState()]\r\n    local price = g_currentMission.animalSystem:getFarmSemenPrice(animal.birthday.country, animal.farmId) * quantity * Dewar.PRICE_PER_STRAW * animal.success * 2.25\r\n\r\n    for _, value in pairs(animal.genetics) do price = price * value end\r\n\r\n    local errorCode\r\n\r\n    if not g_currentMission:getHasPlayerPermission(\"tradeAnimals\") then\r\n        errorCode = AnimalBuyEvent.BUY_ERROR_NO_PERMISSION\r\n    elseif g_currentMission:getMoney(farmId) + price < 0 then\r\n        errorCode = AnimalBuyEvent.BUY_ERROR_NOT_ENOUGH_MONEY\r\n    else\r\n        errorCode = AnimalBuyEvent.BUY_SUCCESS\r\n        g_client:getServerConnection():sendEvent(SemenBuyEvent.new(animal, quantity, -price, farmId, { x, y, z }, { 0, 0, 0 }), true)\r\n    end\r\n\r\n    self:onSemenBought(errorCode)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onSemenBought(errorCode)\r\n\r\n    local dialogType = DialogElement.TYPE_INFO\r\n    local text = \"rl_ui_semenPurchase_successful\"\r\n\t\r\n    if errorCode == AnimalBuyEvent.BUY_ERROR_NOT_ENOUGH_MONEY then\r\n        dialogType = DialogElement.TYPE_WARNING\r\n        text = \"rl_ui_semenPurchaseNoMoney\"\r\n    elseif errorCode == AnimalBuyEvent.BUY_ERROR_NO_PERMISSION then\r\n        dialogType = DialogElement.TYPE_WARNING\r\n        text = \"rl_ui_semenPurchaseNoPermission\"\r\n    elseif errorCode ~= AnimalBuyEvent.BUY_SUCCESS then\r\n        dialogType = DialogElement.TYPE_WARNING\r\n        text = \"rl_ui_semenPurchase_unsuccessful\"\r\n    end\r\n\t\r\n    InfoDialog.show(g_i18n:getText(text), self.postSemenBought, self, dialogType, nil, nil, true)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:postSemenBought()\r\n\r\n    self.aiList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onMoneyChange()\r\n\r\n    if g_localPlayer == nil then return end\r\n\r\n\tlocal farm = g_farmManager:getFarmById(g_localPlayer.farmId)\r\n\r\n\tif farm.money <= -1 then\r\n\t\tself.aiCurrentBalanceText:applyProfile(ShopMenu.GUI_PROFILE.SHOP_MONEY_NEGATIVE, nil, true)\r\n\telse\r\n\t\tself.aiCurrentBalanceText:applyProfile(ShopMenu.GUI_PROFILE.SHOP_MONEY, nil, true)\r\n\tend\r\n\r\n\tself.aiCurrentBalanceText:setText(g_i18n:formatMoney(farm.money, 0, true, false))\r\n\tif self.aiShopMoneyBox ~= nil then\r\n\t\tself.aiShopMoneyBox:invalidateLayout()\r\n\t\tself.aiShopMoneyBoxBg:setSize(self.aiShopMoneyBox.flowSizes[1] + 60 * g_pixelSizeScaledX)\r\n\tend\r\n\r\nend\r\n\r\nAnimalScreen.onMoneyChange = Utils.appendedFunction(AnimalScreen.onMoneyChange, RealisticLivestock_AnimalScreen.onMoneyChange)\r\n\r\n\r\nfunction AnimalScreen:onClickChangeAIAnimalType(animalTypeIndex)\r\n\r\n    self.aiAnimalTypeIndex = animalTypeIndex\r\n    self.aiList:reloadData()\r\n    self:onAIListSelectionChanged()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onAIListSelectionChanged()\r\n\r\n    self.aiInfoContainer:setVisible(false)\r\n    self.buttonBuyAI:setDisabled(true)\r\n    self.buttonFavourite:setDisabled(true)\r\n\r\n    if self.aiAnimals == nil or self.aiAnimalTypeIndex == nil or self.aiAnimals[self.aiAnimalTypeIndex] == nil then return end\r\n    \r\n    local index = self.aiList.selectedIndex\r\n    local animal = self.aiAnimals[self.aiAnimalTypeIndex][index]\r\n\r\n    if animal == nil then return end\r\n\r\n    self.buttonBuyAI:setDisabled(false)\r\n    self.buttonFavourite:setDisabled(false)\r\n\r\n    local uniqueUserId = g_localPlayer:getUniqueId()\r\n\r\n    self.buttonFavourite:setText(g_i18n:getText(\"rl_ui_\" .. (animal.favouritedBy[uniqueUserId] ~= nil and animal.favouritedBy[uniqueUserId] and \"unFavourite\" or \"favourite\")))\r\n\r\n    self.aiInfoContainer:setVisible(true)\r\n\r\n    self.aiSuccessValue:setText(string.format(\"%s%%\", tostring(math.round(animal.success * 100))))\r\n\r\n    for i = 1, #self.aiGeneticsTitle do\r\n        self.aiGeneticsTitle[i]:setVisible(false)\r\n        self.aiGeneticsValue[i]:setVisible(false)\r\n    end\r\n\r\n    local i = 1\r\n\r\n    for key, value in pairs(animal.genetics) do\r\n\r\n        self.aiGeneticsTitle[i]:setVisible(true)\r\n        self.aiGeneticsValue[i]:setVisible(true)\r\n\r\n        local text\r\n\r\n        if value >= 1.65 then\r\n            text = \"extremelyHigh\"\r\n        elseif value >= 1.4 then\r\n            text = \"veryHigh\"\r\n        elseif value >= 1.1 then\r\n            text = \"high\"\r\n        elseif value >= 0.9 then\r\n            text = \"average\"\r\n        elseif value >= 0.7 then\r\n            text = \"low\"\r\n        elseif value >= 0.35 then\r\n            text = \"veryLow\"\r\n        else\r\n            text = \"extremelyLow\"\r\n        end\r\n\r\n        self.aiGeneticsTitle[i]:setText(g_i18n:getText(\"rl_ui_\" .. key))\r\n        self.aiGeneticsValue[i]:setText(g_i18n:getText(\"rl_ui_genetics_\" .. text))\r\n\r\n        i = i + 1\r\n\r\n    end\r\n\r\n    self.aiQuantitySelector:setState(1)\r\n    self:onClickChangeAIQuantity(1)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickChangeAIQuantity(state)\r\n\r\n    local animal = self.aiAnimals[self.aiAnimalTypeIndex][self.aiList.selectedIndex]\r\n\r\n    local quantity = AnimalScreen.DEWAR_QUANTITIES[state]\r\n    local price = g_currentMission.animalSystem:getFarmSemenPrice(animal.birthday.country, animal.farmId) * quantity * animal.success * 2.25\r\n\r\n    for _, value in pairs(animal.genetics) do price = price * value end\r\n\r\n    self.aiQuantityPrice:setText(g_i18n:formatMoney(price * Dewar.PRICE_PER_STRAW, 2, true, true))\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickFavouriteAnimal()\r\n\r\n    local animal = self.aiAnimals[self.aiAnimalTypeIndex][self.aiList.selectedIndex]\r\n\r\n    if animal == nil then return end\r\n\r\n    local uniqueId = g_localPlayer:getUniqueId()\r\n\r\n    if animal.favouritedBy[uniqueId] == nil then\r\n        animal.favouritedBy[uniqueId] = true\r\n    else\r\n        animal.favouritedBy[uniqueId] = not animal.favouritedBy[uniqueId]\r\n    end\r\n\r\n    self.buttonFavourite:setText(g_i18n:getText(\"rl_ui_\" .. (animal.favouritedBy[uniqueUserId] ~= nil and animal.favouritedBy[uniqueUserId] and \"unFavourite\" or \"favourite\")))\r\n\r\n    self.aiList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickLogMode()\r\n\r\n    if self.husbandry == nil or not self.isDirectFarm then return end\r\n\r\n    self.filters = nil\r\n    self.filteredItems = nil\r\n    self.isInfoMode = false\r\n    self.isBuyMode = false\r\n    self.isLogMode = true\r\n    self.isHerdsmanMode = false\r\n    self.isAIMode = false\r\n\r\n    self.buttonBuySelected:setVisible(false)\r\n    self.buttonToggleSelectAll:setVisible(false)\r\n    self.buttonBuy:setVisible(false)\r\n    self.buttonMonitor:setVisible(false)\r\n    self.buttonArtificialInsemination:setVisible(false)\r\n    self.buttonMark:setVisible(false)\r\n    self.buttonRename:setVisible(false)\r\n    self.buttonSelect:setVisible(false)\r\n    self.buttonSell:setVisible(false)\r\n    self.buttonFilters:setVisible(false)\r\n    self.buttonDiseases:setVisible(false)\r\n    self.buttonDeleteMessage:setVisible(true)\r\n    self.buttonApplyHerdsmanSettings:setVisible(false)\r\n    self.buttonCastrate:setVisible(false)\r\n    self.buttonBuyAI:setVisible(false)\r\n    self.buttonFavourite:setVisible(false)\r\n\r\n    self.logContainer:setVisible(true)\r\n    self.herdsmanContainer:setVisible(false)\r\n    self.aiContainer:setVisible(false)\r\n    self.sourceBoxBg:setVisible(false)\r\n    self.mainContentContainer:setVisible(false)\r\n\r\n    self.tabBuy:setSelected(false)\r\n    self.tabSell:setSelected(false)\r\n    self.tabInfo:setSelected(false)\r\n    self.tabLog:setSelected(true)\r\n    self.tabHerdsman:setSelected(false)\r\n    self.tabAI:setSelected(false)\r\n\r\n    local allMessages = self.husbandry:getRLMessages()\r\n    local messages = { {} }\r\n\r\n    for i = #allMessages, 1, -1 do\r\n\r\n        local message = allMessages[i]\r\n\r\n        if #messages[#messages] >= 250 then table.insert(messages, { }) end\r\n\r\n        table.insert(messages[#messages], message)\r\n\r\n    end\r\n\r\n    self.messages, self.currentMessagePage = messages, 1\r\n\r\n    self:updateLog()\r\n\r\n    self.husbandry:setHasUnreadRLMessages(false)\r\n    self.buttonsPanel:invalidateLayout()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickHerdsmanMode()\r\n\r\n    if self.husbandry == nil or not self.isDirectFarm then return end\r\n\r\n    self.filters = nil\r\n    self.filteredItems = nil\r\n    self.isInfoMode = false\r\n    self.isBuyMode = false\r\n    self.isLogMode = false\r\n    self.isHerdsmanMode = true\r\n    self.isAIMode = false\r\n\r\n    self.buttonBuySelected:setVisible(false)\r\n    self.buttonToggleSelectAll:setVisible(false)\r\n    self.buttonBuy:setVisible(false)\r\n    self.buttonMonitor:setVisible(false)\r\n    self.buttonArtificialInsemination:setVisible(false)\r\n    self.buttonMark:setVisible(false)\r\n    self.buttonRename:setVisible(false)\r\n    self.buttonSelect:setVisible(false)\r\n    self.buttonSell:setVisible(false)\r\n    self.buttonFilters:setVisible(false)\r\n    self.buttonDiseases:setVisible(false)\r\n    self.buttonDeleteMessage:setVisible(false)\r\n    self.buttonApplyHerdsmanSettings:setVisible(true)\r\n    self.buttonCastrate:setVisible(false)\r\n    self.buttonBuyAI:setVisible(false)\r\n    self.buttonFavourite:setVisible(false)\r\n\r\n    self.logContainer:setVisible(false)\r\n    self.herdsmanContainer:setVisible(true)\r\n    self.aiContainer:setVisible(false)\r\n    self.sourceBoxBg:setVisible(false)\r\n    self.mainContentContainer:setVisible(false)\r\n\r\n    self.herdsmanLoadProfileButton:setDisabled(not ProfileDialog.getHasProfiles())\r\n\r\n    self.tabBuy:setSelected(false)\r\n    self.tabSell:setSelected(false)\r\n    self.tabInfo:setSelected(false)\r\n    self.tabLog:setSelected(false)\r\n    self.tabHerdsman:setSelected(true)\r\n    self.tabAI:setSelected(false)\r\n\r\n    self.buttonsPanel:invalidateLayout()\r\n    self.currentHerdsmanPage = nil\r\n\r\n    local animalTypeIndex = self.husbandry:getAnimalTypeIndex()\r\n    \r\n    \r\n    local ageValues = {}\r\n    local ageTexts = {}\r\n\r\n    if animalTypeIndex == AnimalType.COW then\r\n\r\n        ageValues = { 6, 12, 18, 24, 30, 36, 48, 60, 72, 84, 96, 108, 120 }\r\n\r\n    elseif animalTypeIndex == AnimalType.SHEEP then\r\n\r\n        ageValues = { 3, 6, 9, 12, 18, 24, 30, 36, 48, 60, 72 }\r\n\r\n    elseif animalTypeIndex == AnimalType.PIG then\r\n\r\n        ageValues = { 3, 6, 9, 12, 18, 24, 30, 36, 48, 60, 72 }\r\n\r\n    elseif animalTypeIndex == AnimalType.HORSE then\r\n\r\n        ageValues = { 12, 24, 36, 48, 60, 90, 120, 150, 180, 240 }\r\n\r\n    elseif animalTypeIndex == AnimalType.CHICKEN then\r\n\r\n        ageValues = { 3, 6, 9, 12, 18, 24, 30, 36, 48, 60 }\r\n\r\n    end\r\n\r\n    table.insert(ageValues, 1, 0)\r\n\r\n    for _, value in pairs(ageValues) do table.insert(ageTexts, RealisticLivestock.formatAge(value)) end\r\n\r\n    table.insert(ageValues, 999)\r\n    table.insert(ageTexts, g_i18n:getText(\"rl_ui_infinite\"))\r\n\r\n    self.herdsmanOptions[\"age\"].values = ageValues\r\n    self.herdsmanOptions[\"age\"].texts = ageTexts\r\n\r\n\r\n    local breeds = g_currentMission.animalSystem:getBreedsByAnimalTypeIndex(animalTypeIndex)\r\n    local breedsValues, breedsTexts = { \"any\" }, { \"any\" }\r\n\r\n    for breed, subTypes in pairs(breeds) do\r\n\r\n        table.insert(breedsValues, breed)\r\n        table.insert(breedsTexts, AnimalSystem.BREED_TO_NAME[breed] or breed)\r\n\r\n    end\r\n\r\n    self.herdsmanOptions[\"breed\"].values = breedsValues\r\n    self.herdsmanOptions[\"breed\"].texts = breedsTexts\r\n\r\n    local farmDewars = g_localPlayer ~= nil and g_dewarManager:getDewarsByFarm(g_localPlayer.farmId)\r\n    local dewars, dewarTexts, dewarValues = nil, { \"any\" }, { \"any\" }\r\n\r\n    if farmDewars ~= nil then\r\n\r\n        dewars = farmDewars[animalTypeIndex]\r\n\r\n        if dewars ~= nil then\r\n\r\n            for _, dewar in pairs(dewars) do\r\n\r\n                table.insert(dewarTexts, string.format(\"%s %s %s (%s %s)\", RealisticLivestock.AREA_CODES[dewar.animal.country].code, dewar.animal.farmId, dewar.animal.uniqueId, dewar.straws, g_i18n:getText(\"rl_ui_straw\" .. (dewar.straws == 1 and \"Single\" or \"Multiple\"))))\r\n                table.insert(dewarValues, dewar:getUniqueId())\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n    self.herdsmanAIDewars = dewars\r\n    self.herdsmanOptions[\"semen\"].values = dewarValues\r\n    self.herdsmanOptions[\"semen\"].texts = dewarTexts\r\n\r\n\r\n    self:onClickHerdsmanPageBuy()\r\n\r\n    local wage = self.husbandry:getAIManager().wage or 0\r\n    self.herdsmanPreviousWageText:setText(g_i18n:formatMoney(wage, 2, true, true))\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickHerdsmanPageBuy()\r\n\r\n    if self.currentHerdsmanPage == \"buy\" then return end\r\n\r\n    self.herdsmanPageBuy:setVisible(true)\r\n    self.herdsmanPageSell:setVisible(false)\r\n    self.herdsmanPageCastrate:setVisible(false)\r\n    self.herdsmanPageNaming:setVisible(false)\r\n    self.herdsmanPageAI:setVisible(false)\r\n\r\n    self.herdsmanPageBuyButtonBg:setSelected(true)\r\n    self.herdsmanPageSellButtonBg:setSelected(false)\r\n    self.herdsmanPageCastrateButtonBg:setSelected(false)\r\n    self.herdsmanPageNamingButtonBg:setSelected(false)\r\n    self.herdsmanPageAIButtonBg:setSelected(false)\r\n\r\n    self.currentHerdsmanPage = \"buy\"\r\n    self:setDefaultHerdsmanOptions()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickHerdsmanPageSell()\r\n\r\n    if self.currentHerdsmanPage == \"sell\" then return end\r\n\r\n    self.herdsmanPageBuy:setVisible(false)\r\n    self.herdsmanPageSell:setVisible(true)\r\n    self.herdsmanPageCastrate:setVisible(false)\r\n    self.herdsmanPageNaming:setVisible(false)\r\n    self.herdsmanPageAI:setVisible(false)\r\n\r\n    self.herdsmanPageBuyButtonBg:setSelected(false)\r\n    self.herdsmanPageSellButtonBg:setSelected(true)\r\n    self.herdsmanPageCastrateButtonBg:setSelected(false)\r\n    self.herdsmanPageNamingButtonBg:setSelected(false)\r\n    self.herdsmanPageAIButtonBg:setSelected(false)\r\n\r\n    self.currentHerdsmanPage = \"sell\"\r\n    self:setDefaultHerdsmanOptions()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickHerdsmanPageCastrate()\r\n\r\n    if self.currentHerdsmanPage == \"castrate\" then return end\r\n\r\n    self.herdsmanPageBuy:setVisible(false)\r\n    self.herdsmanPageSell:setVisible(false)\r\n    self.herdsmanPageCastrate:setVisible(true)\r\n    self.herdsmanPageNaming:setVisible(false)\r\n    self.herdsmanPageAI:setVisible(false)\r\n\r\n    self.herdsmanPageBuyButtonBg:setSelected(false)\r\n    self.herdsmanPageSellButtonBg:setSelected(false)\r\n    self.herdsmanPageCastrateButtonBg:setSelected(true)\r\n    self.herdsmanPageNamingButtonBg:setSelected(false)\r\n    self.herdsmanPageAIButtonBg:setSelected(false)\r\n\r\n    self.currentHerdsmanPage = \"castrate\"\r\n    self:setDefaultHerdsmanOptions()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickHerdsmanPageNaming()\r\n\r\n    if self.currentHerdsmanPage == \"naming\" then return end\r\n\r\n    self.herdsmanPageBuy:setVisible(false)\r\n    self.herdsmanPageSell:setVisible(false)\r\n    self.herdsmanPageCastrate:setVisible(false)\r\n    self.herdsmanPageNaming:setVisible(true)\r\n    self.herdsmanPageAI:setVisible(false)\r\n\r\n    self.herdsmanPageBuyButtonBg:setSelected(false)\r\n    self.herdsmanPageSellButtonBg:setSelected(false)\r\n    self.herdsmanPageCastrateButtonBg:setSelected(false)\r\n    self.herdsmanPageNamingButtonBg:setSelected(true)\r\n    self.herdsmanPageAIButtonBg:setSelected(false)\r\n\r\n    self.currentHerdsmanPage = \"naming\"\r\n    self:setDefaultHerdsmanOptions()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickHerdsmanPageAI()\r\n\r\n    if self.currentHerdsmanPage == \"ai\" then return end\r\n\r\n    self.herdsmanPageBuy:setVisible(false)\r\n    self.herdsmanPageSell:setVisible(false)\r\n    self.herdsmanPageCastrate:setVisible(false)\r\n    self.herdsmanPageNaming:setVisible(false)\r\n    self.herdsmanPageAI:setVisible(true)\r\n\r\n    self.herdsmanPageBuyButtonBg:setSelected(false)\r\n    self.herdsmanPageSellButtonBg:setSelected(false)\r\n    self.herdsmanPageCastrateButtonBg:setSelected(false)\r\n    self.herdsmanPageNamingButtonBg:setSelected(false)\r\n    self.herdsmanPageAIButtonBg:setSelected(true)\r\n\r\n    self.currentHerdsmanPage = \"ai\"\r\n    self:setDefaultHerdsmanOptions()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickHerdsmanSaveProfile()\r\n\r\n    ProfileDialog.show(\"save\", self.husbandry:getAIManager(), self.onHerdsmanSaveProfileCallback, self)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickHerdsmanLoadProfile()\r\n\r\n    ProfileDialog.show(\"load\", self.husbandry:getAIManager(), self.onHerdsmanLoadProfileCallback, self)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onHerdsmanSaveProfileCallback()\r\n\r\n    self.herdsmanLoadProfileButton:setDisabled(not ProfileDialog.getHasProfiles())\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onHerdsmanLoadProfileCallback()\r\n\r\n    self.herdsmanLoadProfileButton:setDisabled(not ProfileDialog.getHasProfiles())\r\n    self:setDefaultHerdsmanOptions()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickEnableHerdsman(state, button)\r\n\r\n    if self.currentHerdsmanPage == \"castrate\" and self.husbandry:getAnimalTypeIndex() == AnimalType.CHICKEN then\r\n        button:setState(1)\r\n        return\r\n    end\r\n\r\n    local option = self.herdsmanOptions.enabled\r\n\r\n    local enabled = option.values[state]\r\n    local page = self.herdsmanPages[self.currentHerdsmanPage]\r\n\r\n    for _, element in pairs(page.elements) do\r\n    \r\n        element:setDisabled(not enabled and element.name ~= \"enabled\")\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:setDefaultHerdsmanOptions()\r\n\r\n    local container = self.herdsmanPages[self.currentHerdsmanPage]\r\n\r\n    local settings = table.clone(self.husbandry:getAIManager():getSettings(), 5)\r\n    self.aiManagerSettings = settings\r\n\r\n    for _, element in pairs(container.elements) do\r\n    \r\n        element:setDisabled(not settings[self.currentHerdsmanPage][\"enabled\"] and element.name ~= \"enabled\")\r\n\r\n        if element.name == \"ignore\" then continue end\r\n\r\n        local option = self.herdsmanOptions[element.name]\r\n        local value\r\n\r\n        if string.contains(option.target, \"|\") then\r\n            \r\n            local paths = string.split(option.target, \"|\")\r\n            value = self.aiManagerSettings[self.currentHerdsmanPage][paths[1]]\r\n\r\n            for i = 2, #paths do value = value[paths[i]] end\r\n\r\n        else\r\n\r\n            value = self.aiManagerSettings[self.currentHerdsmanPage][option.target]\r\n\r\n        end\r\n\r\n        if option.ignoreTexts then\r\n\r\n            element:setTexts(option.texts)\r\n\r\n        end\r\n\r\n        if option.type == \"doubleSlider\" then\r\n\r\n            for i, state in pairs(option.values) do\r\n\r\n                if state == value.min then\r\n                    element.leftState = i\r\n                elseif state == value.max then\r\n                    element.rightState = i\r\n                end\r\n\r\n            end\r\n\r\n            element:updateSlider()\r\n            element:updateFillingBar()\r\n            element:updateContentElement()\r\n\r\n        elseif option.type == \"input\" then\r\n\r\n            element:setText(tostring(value))\r\n\r\n        else\r\n\r\n            for i, state in pairs(option.values) do\r\n                if state == value then\r\n                    element:setState(i)\r\n                    break\r\n                end\r\n            end\r\n\r\n        end\r\n\r\n        if element.name == \"budget|type\" then self:onClickChangeHerdsmanBudgetType(element:getState(), element) end\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickApplyHerdsmanSettings()\r\n\r\n    if self.currentHerdsmanPage == nil then return end\r\n\r\n    local settings = self.aiManagerSettings[self.currentHerdsmanPage]\r\n    local page = self.herdsmanPages[self.currentHerdsmanPage]\r\n\r\n    for _, element in pairs(page.elements) do\r\n\r\n        if element.name == \"ignore\" then continue end\r\n\r\n        local option = self.herdsmanOptions[element.name]\r\n\r\n        if option.type == \"binary\" or option.type == \"tripleOption\" or option.type == \"input\" or option.type == \"multi\" then\r\n\r\n            local value\r\n            \r\n            if option.type == \"input\" then\r\n                value = tonumber(element:getText()) or 0\r\n            else\r\n                value = option.values[element:getState()]\r\n            end\r\n\r\n            if string.contains(option.target, \"|\") then\r\n\r\n                local paths = string.split(option.target, \"|\")\r\n                \r\n                if #paths == 2 then\r\n                    settings[paths[1]][paths[2]] = value\r\n                elseif #paths == 3 then\r\n                    settings[paths[1]][paths[2]][paths[3]] = value\r\n                end\r\n\r\n            else\r\n\r\n                settings[option.target] = value\r\n\r\n            end\r\n\r\n        elseif option.type == \"doubleSlider\" then\r\n            \r\n            settings[option.target].min = option.values[element:getLowestState()]\r\n            settings[option.target].max = option.values[element:getHighestState()]\r\n\r\n        end\r\n\r\n    end\r\n\r\n    self.husbandry:getAIManager():setSettings(self.aiManagerSettings[self.currentHerdsmanPage], self.currentHerdsmanPage)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onHerdsmanTextChangedInt(element, text)\r\n\r\n    text = string.gsub(text, \"[%a%p]\", \"\")\r\n\r\n    element:setText(text)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickChangeHerdsmanBudgetType(state, button)\r\n\r\n    local value = self.herdsmanOptions[button.name].values[state]\r\n\r\n    for _, element in pairs(button.parent.elements) do\r\n\r\n        if element.name == \"budget|fixed\" then element:setVisible(value == \"fixed\") end\r\n        if element.name == \"budget|percentage\" then element:setVisible(value == \"percentage\") end\r\n\r\n    end\r\n\r\n    button.parent:invalidateLayout()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickDiseases()\r\n\r\n    local item = (self.filteredItems == nil and self.controller:getTargetItems() or self.filteredItems)[self.sourceList.selectedIndex]\r\n\r\n    if item == nil or (item.cluster == nil and item.animal == nil) then return end\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    DiseaseDialog.show(animal)\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onClickBuyMode(a, b)\r\n\r\n    self.isInfoMode = false\r\n    self.isLogMode = false\r\n    self.isHerdsmanMode = false\r\n    self.isAIMode = false\r\n\r\n    self.selectedItems = {}\r\n    self.pendingBulkTransaction = nil\r\n    self.filters = nil\r\n    self.filteredItems = nil\r\n\r\n    self.buttonToggleSelectAll:setVisible(true)\r\n    self.buttonToggleSelectAll:setText(g_i18n:getText(\"rl_ui_selectAll\"))\r\n    self.buttonBuySelected:setText(self.isTrailerFarm and g_i18n:getText(\"rl_ui_moveSelected\") or g_i18n:getText(\"rl_ui_buySelected\"))\r\n    self.buttonCastrate:setVisible(false)\r\n    self.buttonDeleteMessage:setVisible(false)\r\n    self.buttonDiseases:setVisible(false)\r\n    self.buttonFilters:setVisible(true)\r\n    self.buttonApplyHerdsmanSettings:setVisible(false)\r\n    self.buttonBuyAI:setVisible(false)\r\n    self.buttonFavourite:setVisible(false)\r\n\r\n    self.logContainer:setVisible(false)\r\n    self.herdsmanContainer:setVisible(false)\r\n    self.aiContainer:setVisible(false)\r\n    self.sourceBoxBg:setVisible(true)\r\n    self.tabListContainer:setVisible(true)\r\n    self.mainContentContainer:setVisible(true)\r\n\r\n    self.buttonsPanel:invalidateLayout()\r\n\r\nend\r\n\r\nAnimalScreen.onClickBuyMode = Utils.prependedFunction(AnimalScreen.onClickBuyMode, RealisticLivestock_AnimalScreen.onClickBuyMode)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onClickSellMode(a, b)\r\n\r\n    self.isInfoMode = false\r\n    self.isLogMode = false\r\n    self.isHerdsmanMode = false\r\n    self.isAIMode = false\r\n\r\n    self.selectedItems = {}\r\n    self.pendingBulkTransaction = nil\r\n    self.filters = nil\r\n    self.filteredItems = nil\r\n\r\n    self.buttonToggleSelectAll:setVisible(true)\r\n    self.buttonToggleSelectAll:setText(g_i18n:getText(\"rl_ui_selectAll\"))\r\n    self.buttonBuySelected:setText(self.isTrailerFarm and g_i18n:getText(\"rl_ui_moveSelected\") or g_i18n:getText(\"rl_ui_sellSelected\"))\r\n    self.buttonCastrate:setVisible(false)\r\n    self.buttonDeleteMessage:setVisible(false)\r\n    self.buttonDiseases:setVisible(false)\r\n    self.buttonFilters:setVisible(true)\r\n    self.buttonApplyHerdsmanSettings:setVisible(false)\r\n    self.buttonBuyAI:setVisible(false)\r\n    self.buttonFavourite:setVisible(false)\r\n\r\n    self.logContainer:setVisible(false)\r\n    self.herdsmanContainer:setVisible(false)\r\n    self.aiContainer:setVisible(false)\r\n    self.sourceBoxBg:setVisible(true)\r\n    self.tabListContainer:setVisible(true)\r\n    self.mainContentContainer:setVisible(true)\r\n\r\n    self.buttonsPanel:invalidateLayout()\r\n\r\nend\r\n\r\nAnimalScreen.onClickSellMode = Utils.prependedFunction(AnimalScreen.onClickSellMode, RealisticLivestock_AnimalScreen.onClickSellMode)\r\n\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onPageNext(superFunc)\r\n    if self.isBuyMode then\r\n        self:onClickSellMode()\r\n    elseif not self.isInfoMode and not self.isLogMode and not self.isHerdsmanMode and not self.isAIMode then\r\n        self:onClickInfoMode()\r\n    elseif self.isInfoMode then\r\n        self:onClickAIMode()\r\n    elseif self.isAIMode then\r\n        self:onClickLogMode()\r\n    elseif self.isLogMode then\r\n        self:onClickHerdsmanMode()\r\n    else\r\n        self:onClickBuyMode()\r\n    end\r\nend\r\n\r\nAnimalScreen.onPageNext = Utils.overwrittenFunction(AnimalScreen.onPageNext, RealisticLivestock_AnimalScreen.onPageNext)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onPagePrevious(superFunc)\r\n    if self.isBuyMode then\r\n        self:onClickHerdsmanMode()\r\n    elseif self.isHerdsmanMode then\r\n        self:onClickLogMode()\r\n    elseif self.isLogMode then\r\n        self:onClickAIMode()\r\n    elseif self.isAIMode then\r\n        self:onClickInfoMode()\r\n    elseif not self.isInfoMode then\r\n        self:onClickBuyMode()\r\n    else\r\n        self:onClickSellMode()\r\n    end\r\nend\r\n\r\nAnimalScreen.onPagePrevious = Utils.overwrittenFunction(AnimalScreen.onPagePrevious, RealisticLivestock_AnimalScreen.onPagePrevious)\r\n\r\n\r\nfunction AnimalScreen:onClickMark()\r\n\r\n    local item = (self.filteredItems == nil and self.controller:getTargetItems() or self.filteredItems)[self.sourceList.selectedIndex]\r\n\r\n    if item == nil or (item.cluster == nil and item.animal == nil) then return end\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    local isMarked = not animal:getMarked()\r\n\r\n    if isMarked then\r\n        animal:setMarked(\"PLAYER\", true)\r\n    else\r\n        animal:setMarked(nil, false)\r\n    end\r\n\r\n    self.sourceList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onClickRename()\r\n\r\n    local item = (self.filteredItems == nil and self.controller:getTargetItems() or self.filteredItems)[self.sourceList.selectedIndex]\r\n\r\n    if item == nil or (item.cluster == nil and item.animal == nil) then return end\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    local dialog = NameInputDialog.INSTANCE\r\n    local name = animal.name or g_currentMission.animalNameSystem:getRandomName(animal.gender)\r\n    dialog:setCallback(self.changeName, self, name, nil, 30, nil, animal.gender)\r\n    g_gui:showDialog(\"NameInputDialog\")\r\n\r\nend\r\n\r\nAnimalScreen.onClickRename = RealisticLivestock_AnimalScreen.onClickRename\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:changeName(text, clickOk)\r\n\r\n    if clickOk then\r\n\r\n        local item = (self.filteredItems == nil and self.controller:getTargetItems() or self.filteredItems)[self.sourceList.selectedIndex]\r\n        local animal = item.animal or item.cluster\r\n\r\n        if animal ~= nil then\r\n\r\n            text = text ~= \"\" and text or nil\r\n\r\n            if text ~= nil or animal.name ~= nil then\r\n\r\n                if text == nil then\r\n                    animal:addMessage(\"NAME_DELETED\", { animal.name })\r\n                elseif animal.name == nil then\r\n                    animal:addMessage(\"NAME_ADDED\", { text })\r\n                elseif animal.name ~= text then\r\n                    animal:addMessage(\"NAME_CHANGE\", { animal.name, text })\r\n                end\r\n\r\n            end\r\n\r\n            animal.name = text\r\n            animal:updateVisualRightEarTag()\r\n\r\n            AnimalNameChangeEvent.sendEvent(animal.clusterSystem.owner, animal, text)\r\n\r\n        end\r\n\r\n        g_animalScreen:updateInfoBox()\r\n    end\r\n\r\nend\r\n\r\nAnimalScreen.changeName = RealisticLivestock_AnimalScreen.changeName\r\n\r\n-- #################################################################################\r\n\r\n-- NOTES:\r\n\r\n-- sourceList:setSelectedItem() changes the selected animal in the leftmost animal list\r\n-- targetSelector buttons change the arrow buttons visibility at the top\r\n\r\n-- #################################################################################\r\n\r\nfunction RealisticLivestock_AnimalScreen:onClickAnimalInfo(button)\r\n\r\n    local item = (self.filteredItems == nil and self.controller:getTargetItems() or self.filteredItems)[self.sourceList.selectedIndex]\r\n\r\n    if item == nil then return end\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    if animal == nil then return end\r\n\r\n    local animalType = animal.animalTypeIndex\r\n\r\n    if button.id == \"childInfoButton\" then\r\n        local children = animal.children\r\n        if children == nil or #children == 0 then return end\r\n\r\n        AnimalInfoDialog.show(children[1].farmId, children[1].uniqueId, children, animalType)\r\n\r\n        return\r\n    end\r\n\r\n    local target = button.id == \"motherInfoButton\" and \"mother\" or \"father\"\r\n\r\n    if target == nil then return end\r\n\r\n    local uniqueId = animal[target .. \"Id\"]\r\n\r\n    if uniqueId == \"-1\" then return end\r\n\r\n    local farmId = \"\"\r\n    local i = string.find(uniqueId, \" \")\r\n\r\n    farmId = string.sub(uniqueId, 1, i - 1)\r\n    uniqueId = string.sub(uniqueId, i + 1)\r\n\r\n    if uniqueId == nil or farmId == nil then return end\r\n\r\n    AnimalInfoDialog.show(farmId, uniqueId, nil, animalType, animal:getIdentifiers())\r\n\r\nend\r\n\r\nAnimalScreen.onClickAnimalInfo = RealisticLivestock_AnimalScreen.onClickAnimalInfo\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onClickInfoMode(a, b)\r\n\r\n    self.filters = nil\r\n    self.filteredItems = nil\r\n    self.isInfoMode = true\r\n    self.isBuyMode = false\r\n    self.isLogMode = false\r\n    self.isHerdsmanMode = false\r\n    self.isAIMode = false\r\n\r\n    self.buttonToggleSelectAll:setVisible(false)\r\n    self.buttonDeleteMessage:setVisible(false)\r\n    self.buttonFilters:setVisible(true)\r\n    self.buttonDiseases:setVisible(true)\r\n    self.buttonBuyAI:setVisible(false)\r\n    self.buttonFavourite:setVisible(false)\r\n    self.buttonApplyHerdsmanSettings:setVisible(false)\r\n    self.targetSelector.leftButtonElement:setVisible(false)\r\n    self.targetSelector.rightButtonElement:setVisible(false)\r\n    self:initSubcategories()\r\n\r\n    self.sourceList:setSelectedItem(1, 1, nil, true)\r\n    self.sourceSelector:setState(1, true)\r\n    self.isAutoUpdatingList = a\r\n    self:updateScreen()\r\n    self.isAutoUpdatingList = false\r\n    self:setSelectionState(AnimalScreen.SELECTION_SOURCE, true)\r\n\r\n    self.logContainer:setVisible(false)\r\n    self.herdsmanContainer:setVisible(false)\r\n    self.aiContainer:setVisible(false)\r\n    self.sourceBoxBg:setVisible(true)\r\n    self.tabListContainer:setVisible(true)\r\n    self.mainContentContainer:setVisible(true)\r\n\r\n    self.buttonsPanel:invalidateLayout()\r\n\r\nend\r\n\r\nAnimalScreen.onClickInfoMode = RealisticLivestock_AnimalScreen.onClickInfoMode\r\n\r\n\r\nfunction AnimalScreen:onClickArtificialInsemination()\r\n\r\n    local item = (self.filteredItems == nil and self.controller:getTargetItems() or self.filteredItems)[self.sourceList.selectedIndex]\r\n\r\n    if item == nil or g_localPlayer == nil then return end\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    if animal == nil then return end\r\n\r\n    AnimalAIDialog.show(g_localPlayer.farmId, animal.animalTypeIndex, animal)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickMonitor()\r\n\r\n    local item = (self.filteredItems == nil and self.controller:getTargetItems() or self.filteredItems)[self.sourceList.selectedIndex]\r\n\r\n    if item == nil then return end\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    if animal == nil then return end\r\n\r\n    local monitor = animal.monitor\r\n\r\n    monitor.active = not monitor.active\r\n    monitor.removed = not monitor.active\r\n    animal:updateVisualMonitor()\r\n\r\n    AnimalMonitorEvent.sendEvent(animal.clusterSystem.owner, animal, monitor.active, monitor.removed)\r\n\r\n    self.buttonMonitor:setText(g_i18n:getText(\"rl_ui_\" .. (monitor.active and \"remove\" or \"apply\") .. \"Monitor\"))\r\n    self.buttonMonitor:setDisabled(monitor.removed)\r\n\r\n    self:updateInfoBox()\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickCastrate()\r\n\r\n    self.buttonCastrate:setDisabled(true)\r\n\r\n    local item = (self.filteredItems == nil and self.controller:getTargetItems() or self.filteredItems)[self.sourceList.selectedIndex]\r\n\r\n    if item == nil then return end\r\n\r\n    local animal = item.animal or item.cluster\r\n\r\n    if animal == nil then return end\r\n\r\n    animal.isCastrated = true\r\n    animal.genetics.fertility = 0\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onListSelectionChanged(superFunc, list)\r\n\r\n    if list == self.sourceList or list == self.targetList then\r\n        superFunc(self, list)\r\n    else\r\n        self:onAIListSelectionChanged()\r\n    end\r\n\r\nend\r\n\r\nAnimalScreen.onListSelectionChanged = Utils.overwrittenFunction(AnimalScreen.onListSelectionChanged, RealisticLivestock_AnimalScreen.onListSelectionChanged)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:updateInfoBox(superFunc, isSourceSelected)\r\n\r\n    if not g_gui.currentlyReloading then\r\n\r\n        --if isSourceSelected == nil then\r\n            --local _ = self.isSourceSelected\r\n        --end\r\n\r\n        local animalType = self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()]\r\n        local item\r\n        self.buttonCastrate:setVisible(false)\r\n        self.buttonMark:setVisible(false)\r\n\r\n        if self.filteredItems == nil then\r\n\r\n            if self.isBuyMode then\r\n                item = self.controller:getSourceItems(animalType, self.isBuyMode)[self.sourceList.selectedIndex]\r\n            else\r\n                item = self.controller:getTargetItems()[self.sourceList.selectedIndex]\r\n            end\r\n\r\n        else\r\n\r\n            item = self.filteredItems[self.sourceList.selectedIndex]\r\n\r\n        end\r\n\r\n        self.infoIcon:setVisible(item ~= nil)\r\n        self.infoName:setVisible(item ~= nil)\r\n\r\n        if item ~= nil then\r\n\r\n            self.detailsContainer:setVisible(true)\r\n\r\n            local animal = item.animal or item.cluster\r\n\r\n            self.inputBox:setVisible(self.isInfoMode and (animal.monitor.active or animal.monitor.removed))\r\n            self.outputBox:setVisible(self.isInfoMode and (animal.monitor.active or animal.monitor.removed))\r\n\r\n            self.infoIcon:setImageFilename(item:getFilename())\r\n            self.infoDescription:setText(item:getDescription())\r\n            local subType = g_currentMission.animalSystem:getSubTypeByIndex(item:getSubTypeIndex())\r\n            local fillTypeTitle = g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex)\r\n            self.infoName:setText(fillTypeTitle)\r\n            local infos = item:getInfos()\r\n\r\n            for k, infoTitle in ipairs(self.infoTitle) do\r\n                local info = infos[k]\r\n                local infoValue = self.infoValue[k]\r\n                infoTitle:setVisible(info ~= nil)\r\n                infoValue:setVisible(info ~= nil)\r\n                if info ~= nil then\r\n                    infoTitle:setText(info.title)\r\n                    infoValue:setText(info.value)\r\n\r\n                    if info.colour ~= nil then\r\n                        infoTitle:setTextColor(info.colour[1], info.colour[2], info.colour[3], 1)\r\n                        infoValue:setTextColor(info.colour[1], info.colour[2], info.colour[3], 1)\r\n                    else\r\n                        infoTitle:setTextColor(1, 1, 1, 1)\r\n                        infoValue:setTextColor(1, 1, 1, 1)\r\n                    end\r\n                end\r\n            end\r\n\r\n            self.diseasesBox:setVisible(not self.isInfoMode)\r\n\r\n            if not self.isInfoMode then\r\n\r\n                local diseases = animal.diseases\r\n\r\n                for i = 1, #self.diseasesTitle do\r\n                    self.diseasesTitle[i]:setVisible(false)\r\n                    self.diseasesValue[i]:setVisible(false)\r\n                end\r\n\r\n                for i, disease in pairs(diseases) do\r\n\r\n                    self.diseasesTitle[i]:setVisible(true)\r\n                    self.diseasesValue[i]:setVisible(true)\r\n\r\n                    self.diseasesTitle[i]:setText(disease.type.name)\r\n                    self.diseasesValue[i]:setText(disease:getStatus())\r\n\r\n                end\r\n\r\n            end\r\n\r\n            self.geneticsBox:applyProfile(self.isInfoMode and \"rl_geneticsBoxInfo\" or \"rl_geneticsBox\")\r\n            self.geneticsBox:setVisible(true)\r\n\r\n            \r\n            local genetics = animal:addGeneticsInfo()\r\n\r\n            for i, title in ipairs(self.geneticsTitle) do\r\n                local value = self.geneticsValue[i]\r\n\r\n                title:setVisible(genetics[i] ~= nil)\r\n                value:setVisible(genetics[i] ~= nil)\r\n\r\n                if genetics[i] == nil then continue end\r\n\r\n                title:setText(genetics[i].title)\r\n                value:setText(g_i18n:getText(genetics[i].text))\r\n\r\n                local quality = genetics[i].text\r\n\r\n                if quality == \"rl_ui_genetics_infertile\"  then\r\n                    title:setTextColor(1, 0, 0, 1)\r\n                    value:setTextColor(1, 0, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_extremelyLow\" or quality == \"rl_ui_genetics_extremelyBad\" then\r\n                    title:setTextColor(1, 0, 0, 1)\r\n                    value:setTextColor(1, 0, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_veryLow\" or quality == \"rl_ui_genetics_veryBad\" then\r\n                    title:setTextColor(1, 0.2, 0, 1)\r\n                    value:setTextColor(1, 0.2, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_low\" or quality == \"rl_ui_genetics_bad\" then\r\n                    title:setTextColor(1, 0.52, 0, 1)\r\n                    value:setTextColor(1, 0.52, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_average\" then\r\n                    title:setTextColor(1, 1, 0, 1)\r\n                    value:setTextColor(1, 1, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_high\" or quality == \"rl_ui_genetics_good\" then\r\n                    title:setTextColor(0.52, 1, 0, 1)\r\n                    value:setTextColor(0.52, 1, 0, 1)\r\n                elseif quality == \"rl_ui_genetics_veryHigh\" or quality == \"rl_ui_genetics_veryGood\" then\r\n                    title:setTextColor(0.2, 1, 0, 1)\r\n                    value:setTextColor(0.2, 1, 0, 1)\r\n                else\r\n                    title:setTextColor(0, 1, 0, 1)\r\n                    value:setTextColor(0, 1, 0, 1)\r\n                end\r\n\r\n\r\n            end\r\n\r\n\r\n            if self.isInfoMode then\r\n\r\n                local isMarked = animal:getMarked()\r\n                self.buttonMark:setVisible(true)\r\n                self.buttonMark:setText(isMarked and g_i18n:getText(\"rl_ui_unmark\") or g_i18n:getText(\"rl_ui_mark\"))\r\n\r\n                if animal.gender == \"male\" and animal.animalTypeIndex ~= AnimalType.CHICKEN then\r\n                    self.buttonCastrate:setVisible(true)\r\n                    self.buttonCastrate:setDisabled(animal.isCastrated)\r\n                end\r\n\r\n                self.buttonMonitor:setText(g_i18n:getText(\"rl_ui_\" .. (animal.monitor.active and \"remove\" or \"apply\") .. \"Monitor\"))\r\n                self.buttonMonitor:setDisabled(animal.monitor.removed)\r\n\r\n                self.motherInfoButton:setDisabled(animal.motherId == nil or animal.motherId == \"-1\")\r\n                self.motherInfoButton:setText(g_i18n:getText(\"rl_ui_mother\") .. \" (\" .. ((animal.motherId == nil or animal.motherId == \"-1\") and g_i18n:getText(\"rl_ui_unknown\") or animal.motherId) .. \")\")\r\n\r\n                self.fatherInfoButton:setDisabled(animal.fatherId == nil or animal.fatherId == \"-1\")\r\n                self.fatherInfoButton:setText(g_i18n:getText(\"rl_ui_father\") .. \" (\" .. ((animal.fatherId == nil or animal.fatherId == \"-1\") and g_i18n:getText(\"rl_ui_unknown\") or animal.fatherId) .. \")\")\r\n\r\n                self.childInfoButton:setDisabled(not animal.isParent)\r\n\r\n\r\n                for i = 1, #self.inputTitle do\r\n                    self.inputTitle[i]:setVisible(false)\r\n                    self.inputValue[i]:setVisible(false)\r\n                end\r\n\r\n\r\n                for i = 1, #self.outputTitle do\r\n                    self.outputTitle[i]:setVisible(false)\r\n                    self.outputValue[i]:setVisible(false)\r\n                end\r\n\r\n\r\n                local infoIndex = 1\r\n                local daysPerMonth = g_currentMission.environment.daysPerPeriod\r\n\r\n\r\n                for fillType, amount in pairs(animal.input) do\r\n\r\n                    if infoIndex > #self.inputTitle then break end\r\n\r\n                    local title, value = self.inputTitle[infoIndex], self.inputValue[infoIndex]\r\n\r\n                    title:setVisible(true)\r\n                    value:setVisible(true)\r\n\r\n                    title:setText(g_i18n:getText(\"rl_ui_input_\" .. fillType))\r\n                    value:setText(string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (amount * 24) / daysPerMonth))\r\n\r\n                    infoIndex = infoIndex + 1\r\n\r\n                end\r\n\r\n\r\n                infoIndex = 1\r\n\r\n\r\n                for fillType, amount in pairs(animal.output) do\r\n\r\n                    if infoIndex > #self.outputTitle then break end\r\n\r\n                    local title, value = self.outputTitle[infoIndex], self.outputValue[infoIndex]\r\n\r\n                    title:setVisible(true)\r\n                    value:setVisible(true)\r\n\r\n                    local outputText = fillType\r\n\r\n                    if fillType == \"pallets\" then\r\n\r\n                        if animal.animalTypeIndex == AnimalType.COW then outputText = \"pallets_milk\" end\r\n\r\n                        if animal.animalTypeIndex == AnimalType.SHEEP then outputText = animal.subType == \"GOAT\" and \"pallets_goatMilk\" or \"pallets_wool\" end\r\n\r\n                        if animal.animalTypeIndex == AnimalType.CHICKEN then outputText = \"pallets_eggs\" end\r\n\r\n                    end\r\n\r\n                    title:setText(g_i18n:getText(\"rl_ui_output_\" .. outputText))\r\n                    value:setText(string.format(g_i18n:getText(\"rl_ui_amountPerDay\"), (amount * 24) / daysPerMonth))\r\n\r\n                    infoIndex = infoIndex + 1\r\n\r\n                end\r\n\r\n            end\r\n\r\n\r\n            if not Platform.isMobile then self:updatePrice() end\r\n\r\n\r\n            self.infoBox:setVisible(not self.isInfoMode)\r\n            --self.numAnimalsBox:setVisible(not self.isInfoMode)\r\n            self.parentBox:setVisible(self.isInfoMode and not self.isBuyMode)\r\n            self.buttonRename:setVisible(self.isInfoMode)\r\n\r\n        else\r\n\r\n            self.detailsContainer:setVisible(false)\r\n            self.buttonRename:setVisible(false)\r\n\r\n        end\r\n\r\n    end\r\n\r\n    self.numAnimalsBox:setVisible(false)\r\n    self.buttonsPanel:invalidateLayout()\r\n\r\nend\r\n\r\nAnimalScreen.updateInfoBox = Utils.overwrittenFunction(AnimalScreen.updateInfoBox, RealisticLivestock_AnimalScreen.updateInfoBox)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:updateScreen(superFunc, state)\r\n\r\n\r\n    self.isAutoUpdatingList = true\r\n    self.sourceList:reloadData(true)\r\n    self.isAutoUpdatingList = false\r\n\r\n    local placeables, targetText\r\n\r\n    if self.isBuyMode then\r\n        placeables, targetText = self.controller:getSourceData(self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()])\r\n    else\r\n        placeables, targetText = self.controller:getTargetData(self.sourceSelector:getState())\r\n    end\r\n\r\n    self.targetText:setText(targetText)\r\n    self.targetItems = placeables\r\n    local husbandryTexts = {}\r\n\r\n    for _, placeable in pairs(placeables) do\r\n        local animalType = g_currentMission.animalSystem:getTypeByIndex(self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()])\r\n        local maxAnimalString = \" (\" .. placeable:getNumOfAnimals() .. \"/\" .. placeable:getMaxNumOfAnimals(animalType) .. \")\"\r\n        local husbandryString = placeable:getName() .. maxAnimalString\r\n        table.insert(husbandryTexts, husbandryString)\r\n    end\r\n\r\n\r\n    self.targetSelector:setTexts(husbandryTexts)\r\n\r\n    if #placeables > 0 and (not state or self.targetSelector:getState() == 0) then\r\n        self.targetSelector:setState(1)\r\n    end\r\n\r\n    self:onTargetSelectionChanged(true)\r\n    self:setSelectionState(AnimalScreen.SELECTION_SOURCE)\r\n\r\n    local hasAnimals = self.sourceList:getItemCount() > 0\r\n\r\n\r\n    self.detailsContainer:setVisible(hasAnimals)\r\n    self.infoBox:setVisible(not self.isInfoMode)\r\n    --self.numAnimalsBox:setVisible(not self.isInfoMode)\r\n    self.numAnimalsBox:setVisible(false)\r\n    self.parentBox:setVisible(self.isInfoMode)\r\n    self.geneticsBox:setVisible(self.isInfoMode)\r\n\r\n    if self.isInfoMode then\r\n        self.buttonBuy:setVisible(false)\r\n        self.buttonSell:setVisible(false)\r\n    else\r\n\r\n        local isItemSelected = self.numAnimalsElement:getIsFocused()\r\n\r\n        self.buttonBuy:setVisible(self.isBuyMode and isItemSelected)\r\n        self.buttonSell:setVisible(isItemSelected and not self.isBuyMode)\r\n        self.buttonSelect:setVisible(not isItemSelected)\r\n\r\n    end\r\n\r\n\r\n    self.buttonBuy:setDisabled(not self.isBuyMode)\r\n    self.buttonBuy:setVisible(not self.isInfoMode and self.isBuyMode)\r\n    self.buttonSell:setDisabled(self.isInfoMode or self.isBuyMode)\r\n    self.buttonSell:setVisible(not self.isInfoMode and not self.isBuyMode)\r\n    self.buttonRename:setVisible(self.isInfoMode)\r\n    self.buttonMonitor:setVisible(self.isInfoMode)\r\n    self.buttonArtificialInsemination:setVisible(self.isInfoMode)\r\n\r\n    if hasAnimals then\r\n        self:updatePrice()\r\n        self:updateInfoBox()\r\n    end\r\n\r\n    self.tabBuy:setSelected(self.isBuyMode and not self.isInfoMode)\r\n    self.tabSell:setSelected(not self.isBuyMode and not self.isInfoMode and not self.isLogMode and not self.isHerdsmanMode)\r\n    self.tabInfo:setSelected(not self.isBuyMode and self.isInfoMode)\r\n    self.tabLog:setSelected(self.isLogMode)\r\n    self.tabHerdsman:setSelected(self.isHerdsmanMode)\r\n    self.tabAI:setSelected(self.isAIMode)\r\n\r\n    self.buttonBuySelected:setVisible(not self.isTrailer and not self.isInfoMode)\r\n\r\n    self.buttonsPanel:invalidateLayout()\r\n\r\nend\r\n\r\nAnimalScreen.updateScreen = Utils.overwrittenFunction(AnimalScreen.updateScreen, RealisticLivestock_AnimalScreen.updateScreen)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:setMaxNumAnimals()\r\n\r\n    self.infoBox:setVisible(not self.isInfoMode)\r\n    --self.numAnimalsBox:setVisible(not self.isInfoMode)\r\n    self.numAnimalsBox:setVisible(false)\r\n    self.parentBox:setVisible(self.isInfoMode and not self.isBuyMode)\r\n    self.geneticsBox:setVisible(self.isInfoMode)\r\n\r\nend\r\n\r\nAnimalScreen.setMaxNumAnimals = Utils.appendedFunction(AnimalScreen.setMaxNumAnimals, RealisticLivestock_AnimalScreen.setMaxNumAnimals)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:getCellTypeForItemInSection(_, list, _, index)\r\n\r\n    if list == self.aiList then\r\n\r\n        local animals = self.aiAnimals[self.aiAnimalTypeIndex]\r\n\r\n        local a = animals[index]\r\n\t    local b = animals[index - 1]\r\n\r\n\t    return (a == nil or b == nil or a:getSubTypeIndex() ~= b:getSubTypeIndex()) and \"sectionCell\" or \"defaultCell\"\r\n\r\n    end\r\n\r\n    if list ~= self.sourceList then return nil end\r\n\r\n    local animalTypeIndex = self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()]\r\n\tlocal items\r\n\r\n    if self.filteredItems == nil then\r\n\r\n\t    if self.isInfoMode or not self.isBuyMode then\r\n            items = self.controller:getTargetItems()\r\n\t    else\r\n\t\t    items = self.controller:getSourceItems(animalTypeIndex, self.isBuyMode)\r\n\t    end\r\n\r\n    else\r\n\r\n        items = self.filteredItems\r\n\r\n    end\r\n\r\n\tlocal a = items[index]\r\n\tlocal b = items[index - 1]\r\n\r\n    if a ~= nil and a:getHasAnyDisease() and index == 1 then return \"sectionCell\" end\r\n\r\n    if a ~= nil and b ~= nil and b:getHasAnyDisease() then return a:getHasAnyDisease() and \"defaultCell\" or \"sectionCell\" end\r\n\r\n\treturn (a == nil or b == nil or a:getSubTypeIndex() ~= b:getSubTypeIndex()) and \"sectionCell\" or \"defaultCell\"\r\n\r\nend\r\n\r\nAnimalScreen.getCellTypeForItemInSection = Utils.overwrittenFunction(AnimalScreen.getCellTypeForItemInSection, RealisticLivestock_AnimalScreen.getCellTypeForItemInSection)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:getNumberOfItemsInSection(superFunc, list)\r\n\r\n    if list == self.aiList then return #self.aiAnimals[self.aiAnimalTypeIndex] end\r\n\r\n    if self.isLogMode then return #self.messages[self.currentMessagePage] end\r\n\r\n    if self.filteredItems == nil or not self.isOpen then return superFunc(self, list) end\r\n\r\n    return #self.filteredItems\r\n\r\nend\r\n\r\nAnimalScreen.getNumberOfItemsInSection = Utils.overwrittenFunction(AnimalScreen.getNumberOfItemsInSection, RealisticLivestock_AnimalScreen.getNumberOfItemsInSection)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:populateCellForItemInSection(_, list, _, index, cell)\r\n\r\n    if list == self.aiList then\r\n\r\n        local animal = self.aiAnimals[self.aiAnimalTypeIndex][index]\r\n\r\n        if animal == nil then return end\r\n\r\n        local subType = animal:getSubType()\r\n\r\n        if cell.name == \"sectionCell\" then cell:getAttribute(\"title\"):setText(g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex)) end\r\n\r\n        local name = animal:getName()\r\n\r\n        if name == nil or name == \"\" then name = string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[animal.birthday.country].code, animal.farmId, animal.uniqueId) end\r\n\r\n        local visual = g_currentMission.animalSystem:getVisualByAge(animal.subTypeIndex, animal.age)\r\n\r\n        cell:getAttribute(\"name\"):setText(name)\r\n        cell:getAttribute(\"icon\"):setImageFilename(visual.store.imageFilename)\r\n\r\n        local genetics = 0\r\n        local numGenetics = 0\r\n\r\n        for _, value in pairs(animal.genetics) do\r\n            genetics = genetics + value\r\n            numGenetics = numGenetics + 1\r\n        end\r\n\r\n        local avgGenetics = (numGenetics > 0 and genetics / numGenetics) or 0\r\n        local geneticsText = \"extremelyBad\"\r\n\r\n        if avgGenetics >= 1.65 then\r\n            geneticsText = \"extremelyGood\"\r\n        elseif avgGenetics >= 1.35 then\r\n            geneticsText = \"veryGood\"\r\n        elseif avgGenetics >= 1.15 then\r\n            geneticsText = \"good\"\r\n        elseif avgGenetics >= 0.85 then\r\n            geneticsText = \"average\"\r\n        elseif avgGenetics >= 0.65 then\r\n            geneticsText = \"bad\"\r\n        elseif avgGenetics >= 0.35 then\r\n            geneticsText = \"veryBad\"\r\n        end\r\n\r\n        cell:getAttribute(\"price\"):setText(g_i18n:getText(\"rl_ui_genetics_\" .. geneticsText))\r\n\r\n        local uniqueUserId = g_localPlayer:getUniqueId()\r\n        local isFavourite = animal.favouritedBy[uniqueUserId] ~= nil and animal.favouritedBy[uniqueUserId]\r\n\r\n        if cell.name == \"defaultCell\" then\r\n\r\n            if isFavourite then\r\n                cell:setImageColor(GuiOverlay.STATE_NORMAL, 1, 0.2, 0)\r\n            else\r\n                cell:setImageColor(GuiOverlay.STATE_NORMAL, 1, 1, 1)\r\n            end\r\n\r\n        else\r\n\r\n            local background = cell:getAttribute(\"background\")\r\n\r\n            if isFavourite then\r\n                background:setImageColor(GuiOverlay.STATE_NORMAL, 1, 0.2, 0)\r\n            else\r\n                background:setImageColor(GuiOverlay.STATE_NORMAL, 1, 1, 1)\r\n            end\r\n\r\n        end\r\n\r\n        return\r\n\r\n    end\r\n\r\n    if list == self.husbandryList then\r\n\r\n        local messagePage = self.messages[self.currentMessagePage]\r\n\r\n        if messagePage == nil then return end\r\n\r\n        local message = messagePage[index]\r\n\r\n        if message == nil then return end\r\n\r\n        local baseMessage = RLMessage[message.id]\r\n\r\n        local text, argI = string.split(g_i18n:getText(\"rl_message_\" .. baseMessage.text), \" \"), 1\r\n\r\n        for i, split in pairs(text) do\r\n        \r\n            if split == \"%s\" then\r\n\r\n                if string.contains(message.args[argI], \"rl_\") then\r\n                    text[i] = g_i18n:getText(message.args[argI])\r\n                else\r\n                    text[i] = message.args[argI]\r\n                end\r\n\r\n                argI = argI + 1\r\n\r\n            elseif split == \"'%s'\" then\r\n\r\n                if string.contains(message.args[argI], \"rl_\") then\r\n                    text[i] = \"'\" .. g_i18n:getText(message.args[argI]) .. \"'\"\r\n                else\r\n                    text[i] = \"'\" .. message.args[argI] .. \"'\"\r\n                end\r\n\r\n                argI = argI + 1\r\n\r\n            end\r\n        \r\n        end\r\n\r\n        text = table.concat(text, \" \")\r\n\r\n\r\n        cell:getAttribute(\"message\"):setText(text)\r\n        cell:getAttribute(\"type\"):setText(g_i18n:getText(\"rl_messageTitle_\" .. baseMessage.title))\r\n        cell:getAttribute(\"date\"):setText(message.date)\r\n        cell:getAttribute(\"animal\"):setText(message.animal or \"N/A\")\r\n        cell:getAttribute(\"importance\"):setImageSlice(nil, \"realistic_livestock.importance_\" .. baseMessage.importance)\r\n\r\n        return\r\n\r\n    end\r\n\r\n    local animalType = self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()]\r\n    local filteredItems = self.filteredItems\r\n\r\n    if list == self.sourceList then\r\n\r\n        local item\r\n\r\n        if filteredItems == nil then\r\n\r\n            if self.isBuyMode then\r\n                item = self.controller:getSourceItems(animalType, self.isBuyMode)[index]\r\n            else\r\n                item = self.controller:getTargetItems()[index]\r\n            end\r\n\r\n        else\r\n\r\n            item = filteredItems[index]\r\n\r\n        end\r\n\r\n        if item == nil then return end\r\n\r\n        local animal = item.animal or item.cluster\r\n        local subType = g_currentMission.animalSystem:getSubTypeByIndex(item:getSubTypeIndex())\r\n        self.isHorse = subType.typeIndex == AnimalType.HORSE\r\n\r\n        local isDiseased = animal:getHasAnyDisease()\r\n\r\n        if cell.name == \"sectionCell\" then cell:getAttribute(\"title\"):setText(isDiseased and g_i18n:getText(\"rl_ui_diseasedAnimals\") or g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex)) end\r\n\r\n        self.isHorse = g_currentMission.animalSystem:getSubTypeByIndex(item:getSubTypeIndex()).typeIndex == AnimalType.HORSE\r\n\r\n        local name = item:getName()\r\n\r\n        local isMarked = animal:getMarked()\r\n        local recentlyBoughtByAI = animal:getRecentlyBoughtByAI()\r\n\r\n        if cell.name == \"defaultCell\" then\r\n\r\n            if isDiseased then\r\n                cell:setImageColor(GuiOverlay.STATE_NORMAL, 1, 0.08, 0)\r\n            elseif isMarked then\r\n                cell:setImageColor(GuiOverlay.STATE_NORMAL, 1, 0.2, 0)\r\n            else\r\n                cell:setImageColor(GuiOverlay.STATE_NORMAL, 1, 1, 1)\r\n            end\r\n\r\n        else\r\n\r\n            local background = cell:getAttribute(\"background\")\r\n\r\n            if isDiseased then\r\n                background:setImageColor(GuiOverlay.STATE_NORMAL, 1, 0.08, 0)\r\n            elseif isMarked then\r\n                background:setImageColor(GuiOverlay.STATE_NORMAL, 1, 0.2, 0)\r\n            else\r\n                background:setImageColor(GuiOverlay.STATE_NORMAL, 1, 1, 1)\r\n            end\r\n\r\n        end\r\n\r\n        \r\n        local name = animal:getName()\r\n        local identifier = animal:getIdentifiers()\r\n\r\n        if name == \"\" then\r\n            cell:getAttribute(\"idNoName\"):setText(identifier)\r\n        else\r\n            cell:getAttribute(\"name\"):setText(name)\r\n            cell:getAttribute(\"id\"):setText(identifier)\r\n        end\r\n\r\n        cell:getAttribute(\"id\"):setVisible(name ~= \"\")\r\n        cell:getAttribute(\"name\"):setVisible(name ~= \"\")\r\n        cell:getAttribute(\"idNoName\"):setVisible(name == \"\")\r\n\r\n        cell:getAttribute(\"icon\"):setImageFilename(item:getFilename())\r\n        cell:getAttribute(\"price\"):setValue(item:getPrice())\r\n        local descriptor = cell:getAttribute(\"herdsmanPurchase\")\r\n        descriptor:setVisible(recentlyBoughtByAI or isMarked)\r\n\r\n        if recentlyBoughtByAI then\r\n\r\n            descriptor:setText(g_i18n:getText(\"rl_ui_herdsmanRecentlyBought\"))\r\n        \r\n        elseif isMarked then\r\n\r\n            local markText = RealisticLivestock.MARKS[animal:getHighestPriorityMark()].text\r\n\r\n            descriptor:setText(g_i18n:getText(\"rl_mark_\" .. markText))\r\n\r\n        end\r\n\r\n        local checkbox = cell:getAttribute(\"checkbox\")\r\n\r\n        if (self.isInfoMode and not self.isBuyMode) or self.isTrailer then\r\n            checkbox:setVisible(false)\r\n        else\r\n\r\n            checkbox:setVisible(true)\r\n            local check = cell:getAttribute(\"check\")\r\n\r\n            if check ~= nil then\r\n\r\n                local originalIndex = self.filteredItems == nil and index or item.originalIndex\r\n\r\n                check:setVisible(self.selectedItems[originalIndex] ~= nil and self.selectedItems[originalIndex])\r\n\r\n                local selectAllText = g_i18n:getText(\"rl_ui_selectAll\")\r\n                local selectNoneText = g_i18n:getText(\"rl_ui_selectNone\")\r\n\r\n                checkbox.onClickCallback = function(animalScreen, button)\r\n\r\n                    if self.selectedItems[originalIndex] then\r\n                        self.selectedItems[originalIndex] = false\r\n                        check:setVisible(false)\r\n\r\n                        local hasSelection = false\r\n\r\n                        for _, selected in pairs(self.selectedItems) do\r\n                            if selected then\r\n                                hasSelection = true\r\n                                break\r\n                            end\r\n                        end\r\n\r\n                        self.buttonToggleSelectAll:setText(hasSelection and selectNoneText or selectAllText)\r\n\r\n                    else\r\n                        self.selectedItems[originalIndex] = true\r\n                        check:setVisible(true)\r\n                        self.buttonToggleSelectAll:setText(selectNoneText)\r\n                    end\r\n\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n\r\n    else\r\n\r\n        if list == self.targetList then\r\n\r\n            local item\r\n\r\n            if filteredItems == nil then\r\n\r\n                if self.isBuyMode then\r\n                    item = self.controller:getTargetItems()[index]\r\n                else\r\n                    item = self.controller:getSourceItems(animalType, self.isBuyMode)[index]\r\n                end\r\n\r\n            else\r\n\r\n                item = filteredItems[index]\r\n\r\n            end\r\n\r\n            if item == nil then return end\r\n\r\n\r\n            self.isHorse = g_currentMission.animalSystem:getSubTypeByIndex(item:getSubTypeIndex()).typeIndex == AnimalType.HORSE\r\n\r\n\r\n            local name = item:getName()\r\n\r\n            if not self.isHorse and not self.isBuyMode and item.cluster ~= nil and item.cluster.uniqueId ~= nil then name = item.cluster.uniqueId .. (name == \"\" and \"\" or (\" (\" .. name .. \")\")) end\r\n\r\n            cell:getAttribute(\"name\"):setText(name)\r\n\r\n\r\n            cell:getAttribute(\"icon\"):setImageFilename(item:getFilename())\r\n            cell:getAttribute(\"separator\"):setVisible(index > 1)\r\n\r\n            cell:getAttribute(\"amount\"):setValue(\"\")\r\n            cell:getAttribute(\"amount\"):setText(\"\")\r\n\r\n        end\r\n\r\n        return\r\n\r\n    end\r\n\r\nend\r\n\r\nAnimalScreen.populateCellForItemInSection = Utils.overwrittenFunction(AnimalScreen.populateCellForItemInSection, RealisticLivestock_AnimalScreen.populateCellForItemInSection)\r\n\r\n\r\nfunction AnimalScreen:onClickBuySelected()\r\n\r\n    local itemsToProcess = {}\r\n    local money = 0\r\n    local animalTypeIndex = self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()]\r\n\r\n    for animalIndex, isSelected in pairs(self.selectedItems) do\r\n        if isSelected then\r\n\r\n            if isSelected then\r\n\r\n                if self.isTrailerFarm then\r\n                    table.insert(itemsToProcess, animalIndex)\r\n                elseif self.isBuyMode then\r\n                    local animalFound, _, _, totalPrice = self.controller:getSourcePrice(animalTypeIndex, animalIndex, 1)\r\n                    if animalFound then\r\n                        table.insert(itemsToProcess, animalIndex)\r\n                        money = money + totalPrice\r\n                    end\r\n                else\r\n                    local animalFound, _, _, totalPrice = self.controller:getTargetPrice(animalTypeIndex, animalIndex, 1)\r\n                    if animalFound then\r\n                        table.insert(itemsToProcess, animalIndex)\r\n                        money = money + totalPrice\r\n                    end\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n    end\r\n\r\n    self.pendingBulkTransaction = { [\"items\"] = itemsToProcess, [\"animalTypeIndex\"] = animalTypeIndex }\r\n\r\n    local callback, confirmationText, text\r\n\r\n    if self.isBuyMode then\r\n\r\n        confirmationText = self.isTrailerFarm and g_i18n:getText(\"rl_ui_moveConfirmation\") or g_i18n:getText(\"rl_ui_buyConfirmation\")\r\n        callback = self.buySelected\r\n\t    text = self.controller:getSourceActionText()\r\n\r\n    else\r\n\r\n        confirmationText = self.isTrailerFarm and g_i18n:getText(\"rl_ui_moveConfirmation\") or g_i18n:getText(\"rl_ui_sellConfirmation\")\r\n        callback = self.sellSelected\r\n\t    text = self.controller:getTargetActionText()\r\n\r\n    end\r\n\r\n    YesNoDialog.show(callback, self, string.format(confirmationText, #itemsToProcess, g_i18n:formatMoney(money, 2, true, true)), g_i18n:getText(\"ui_attention\"), text, g_i18n:getText(\"button_back\"))\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:buySelected(clickYes)\r\n\r\n    if not clickYes or self.pendingBulkTransaction == nil then return end\r\n\r\n    self.controller:applySourceBulk(self.pendingBulkTransaction.animalTypeIndex, self.pendingBulkTransaction.items)\r\n\r\n    self.selectedItems = {}\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:sellSelected(clickYes)\r\n\r\n    if not clickYes or self.pendingBulkTransaction == nil then return end\r\n\r\n    self.controller:applyTargetBulk(self.pendingBulkTransaction.animalTypeIndex, self.pendingBulkTransaction.items)\r\n\r\n    self.selectedItems = {}\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickFilter()\r\n\r\n    local animalTypeIndex = self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()]\r\n\r\n    AnimalFilterDialog.show(self.isBuyMode and self.controller:getSourceItems(animalTypeIndex, self.isBuyMode) or self.controller:getTargetItems(), animalTypeIndex, self.onApplyFilters, self, self.isBuyMode)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onApplyFilters(filters, filteredItems)\r\n\r\n    self.filters = filters\r\n    self.filteredItems = filteredItems\r\n    self.selectedItems = {}\r\n    self.buttonToggleSelectAll:setText(g_i18n:getText(\"rl_ui_selectAll\"))\r\n    self.sourceList:reloadData(true)\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:getPrice()\r\n\r\n    local animalIndex\r\n    local animalTypeIndex = self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()]\r\n\r\n    if self.filteredItems == nil then\r\n        animalIndex = self.sourceList.selectedIndex\r\n    elseif #self.filteredItems > 0 and self.filteredItems[self.sourceList.selectedIndex] ~= nil then\r\n        animalIndex = self.filteredItems[self.sourceList.selectedIndex].originalIndex\r\n    else\r\n        return false, 0, 0, 0\r\n    end\r\n\r\n    local isFound, price, transportationFee, totalPrice = false, 0, 0, 0\r\n\r\n\tif self.isBuyMode then\r\n\t\tisFound, price, transportationFee, totalPrice = self.controller:getSourcePrice(animalTypeIndex, animalIndex, 1)\r\n\telse\r\n\t    isFound, price, transportationFee, totalPrice = self.controller:getTargetPrice(animalTypeIndex, animalIndex, 1)\r\n\tend\r\n\r\n    return isFound, price, transportationFee, totalPrice\r\n\r\nend\r\n\r\nAnimalScreen.getPrice = Utils.overwrittenFunction(AnimalScreen.getPrice, RealisticLivestock_AnimalScreen.getPrice)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onClickBuy()\r\n\r\n\tself.numAnimals = 1\r\n\r\n\tlocal animalIndex\r\n\r\n    if self.filteredItems == nil then\r\n        animalIndex = self.sourceList.selectedIndex\r\n    else\r\n        animalIndex = self.filteredItems[self.sourceList.selectedIndex].originalIndex\r\n    end\r\n\r\n\tlocal confirmationText = self.controller:getApplySourceConfirmationText(self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()], animalIndex, 1)\r\n\tlocal actionText = self.controller:getSourceActionText()\r\n\r\n\tYesNoDialog.show(self.onYesNoSource, self, confirmationText, g_i18n:getText(\"ui_attention\"), actionText, g_i18n:getText(\"button_back\"))\r\n\r\n\treturn true\r\n\r\nend\r\n\r\nAnimalScreen.onClickBuy = Utils.overwrittenFunction(AnimalScreen.onClickBuy, RealisticLivestock_AnimalScreen.onClickBuy)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onClickSell()\r\n\r\n\tself.numAnimals = 1\r\n\r\n\tlocal animalIndex\r\n\r\n    if self.filteredItems == nil then\r\n        animalIndex = self.sourceList.selectedIndex\r\n    else\r\n        animalIndex = self.filteredItems[self.sourceList.selectedIndex].originalIndex\r\n    end\r\n\r\n\tlocal confirmationText = self.controller:getApplyTargetConfirmationText(self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()], animalIndex, 1)\r\n\tlocal actionText = self.controller:getTargetActionText()\r\n\r\n\tYesNoDialog.show(self.onYesNoTarget, self, confirmationText, g_i18n:getText(\"ui_attention\"), actionText, g_i18n:getText(\"button_back\"))\r\n\r\n\treturn true\r\n\r\nend\r\n\r\nAnimalScreen.onClickSell = Utils.overwrittenFunction(AnimalScreen.onClickSell, RealisticLivestock_AnimalScreen.onClickSell)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onYesNoSource(_, clickYes)\r\n\r\n\tif clickYes then\r\n\t\tlocal animalIndex\r\n\r\n        if self.filteredItems == nil then\r\n            animalIndex = self.sourceList.selectedIndex\r\n        else\r\n            animalIndex = self.filteredItems[self.sourceList.selectedIndex].originalIndex\r\n        end\r\n\r\n\t\tself.controller:applySource(self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()], animalIndex, 1)\r\n\tend\r\n\r\nend\r\n\r\nAnimalScreen.onYesNoSource = Utils.overwrittenFunction(AnimalScreen.onYesNoSource, RealisticLivestock_AnimalScreen.onYesNoSource)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onYesNoTarget(_, clickYes)\r\n\r\n\tif clickYes then\r\n\t\tlocal animalIndex\r\n\r\n        if self.filteredItems == nil then\r\n            animalIndex = self.sourceList.selectedIndex\r\n        else\r\n            animalIndex = self.filteredItems[self.sourceList.selectedIndex].originalIndex\r\n        end\r\n\r\n\t\tself.controller:applyTarget(self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()], animalIndex, 1)\r\n\tend\r\n\r\nend\r\n\r\nAnimalScreen.onYesNoTarget = Utils.overwrittenFunction(AnimalScreen.onYesNoTarget, RealisticLivestock_AnimalScreen.onYesNoTarget)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onSourceActionFinished(_, error, text)\r\n\r\n\tlocal dialogType = error and DialogElement.TYPE_WARNING or DialogElement.TYPE_INFO\r\n\r\n    if self.filteredItems ~= nil then\r\n\r\n        local item = self.filteredItems[self.sourceList.selectedIndex]\r\n\r\n        if item ~= nil then table.remove(self.filteredItems, self.sourceList.selectedIndex) end\r\n\r\n    end\r\n\r\n\tInfoDialog.show(text, self.updateScreen, self, dialogType, nil, nil, true)\r\n\r\nend\r\n\r\nAnimalScreen.onSourceActionFinished = Utils.overwrittenFunction(AnimalScreen.onSourceActionFinished, RealisticLivestock_AnimalScreen.onSourceActionFinished)\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:onTargetActionFinished(_, error, text)\r\n\r\n\tlocal dialogType = error and DialogElement.TYPE_WARNING or DialogElement.TYPE_INFO\r\n\r\n    if self.filteredItems ~= nil then\r\n\r\n        local item = self.filteredItems[self.sourceList.selectedIndex]\r\n\r\n        if item ~= nil then table.remove(self.filteredItems, self.sourceList.selectedIndex) end\r\n\r\n    end\r\n\r\n\tInfoDialog.show(text, self.updateScreen, self, dialogType, nil, nil, true)\r\n\r\nend\r\n\r\nAnimalScreen.onTargetActionFinished = Utils.overwrittenFunction(AnimalScreen.onTargetActionFinished, RealisticLivestock_AnimalScreen.onTargetActionFinished)\r\n\r\n\r\nfunction AnimalScreen:onSourceBulkActionFinished(error, text, indexes)\r\n\r\n    local dialogType = error and DialogElement.TYPE_WARNING or DialogElement.TYPE_INFO\r\n\r\n    if self.filteredItems ~= nil then\r\n\r\n        for _, index in pairs(indexes) do\r\n\r\n            for i, item in pairs(self.filteredItems) do\r\n\r\n                if item.originalIndex == index then\r\n                    table.remove(self.filteredItems, i)\r\n                    break\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n\tInfoDialog.show(text, self.updateScreen, self, dialogType, nil, nil, true)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onTargetBulkActionFinished(error, text, indexes)\r\n\r\n    local dialogType = error and DialogElement.TYPE_WARNING or DialogElement.TYPE_INFO\r\n\r\n    if self.filteredItems ~= nil then\r\n\r\n        for _, index in pairs(indexes) do\r\n\r\n            for i, item in pairs(self.filteredItems) do\r\n\r\n                if item.originalIndex == index then\r\n                    table.remove(self.filteredItems, i)\r\n                    break\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\n\tInfoDialog.show(text, self.updateScreen, self, dialogType, nil, nil, true)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onClickToggleSelectAll()\r\n\r\n    local selectAll = true\r\n\r\n    for _, selected in pairs(self.selectedItems) do\r\n        if selected then\r\n            selectAll = false\r\n            break\r\n        end\r\n    end\r\n\r\n\r\n    local animalType = self.sourceSelectorStateToAnimalType[self.sourceSelector:getState()]\r\n    local items\r\n\r\n    if self.filteredItems == nil then\r\n\r\n        if self.isBuyMode then\r\n            items = self.controller:getSourceItems(animalType, self.isBuyMode)\r\n        else\r\n            items = self.controller:getTargetItems()\r\n        end\r\n\r\n    else\r\n        items = self.filteredItems\r\n    end\r\n\r\n\r\n    for i, item in pairs(items) do\r\n\r\n        self.selectedItems[self.filteredItems == nil and i or item.originalIndex] = selectAll\r\n\r\n    end\r\n\r\n\r\n    self.buttonToggleSelectAll:setText(selectAll and g_i18n:getText(\"rl_ui_selectNone\") or g_i18n:getText(\"rl_ui_selectAll\"))\r\n    self.sourceList:reloadData()\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_AnimalScreen:setSelectionState(superFunc, state) -- ?\r\n\r\n    local returnValue = superFunc(self, state)\r\n\r\n    local hasItems = self.sourceList:getItemCount() > 0\r\n\r\n    self.buttonBuy:setVisible(self.isBuyMode and hasItems)\r\n    self.buttonSell:setVisible(not self.isBuyMode and not self.isInfoMode and hasItems)\r\n\r\n\tself.buttonsPanel:invalidateLayout()\r\n\r\n    return returnValue\r\n\r\nend\r\n\r\nAnimalScreen.setSelectionState = Utils.overwrittenFunction(AnimalScreen.setSelectionState, RealisticLivestock_AnimalScreen.setSelectionState)\r\n\r\n\r\nfunction AnimalScreen:onClickInfoPrompt() end\r\n\r\n\r\nfunction AnimalScreen:onHighlightInfoPrompt(button)\r\n\r\n    self.infoPrompt:setVisible(true)\r\n\r\n    local x = button.absPosition[1] - self.infoPrompt.size[1]\r\n    local y = button.absPosition[2] - self.infoPrompt.size[2] * 0.5\r\n\r\n    self.infoPrompt:setAbsolutePosition(x, y)\r\n\r\nend\r\n\r\n\r\nfunction AnimalScreen:onHighlightRemoveInfoPrompt()\r\n\r\n    self.infoPrompt:setVisible(false)\r\n\r\nend"
  },
  {
    "path": "src/gui/RealisticLivestock_InGameMenuAnimalsFrame.lua",
    "content": "RealisticLivestock_InGameMenuAnimalsFrame = {}\r\n\r\n\r\nfunction RealisticLivestock_InGameMenuAnimalsFrame:displayCluster(superFunc, animal, husbandry)\r\n\r\n    if g_currentMission.isRunning or Platform.isMobile then\r\n\r\n        local animalSystem = g_currentMission.animalSystem\r\n        local subTypeIndex = animal:getSubTypeIndex()\r\n        local age = animal:getAge()\r\n        local visual = animalSystem:getVisualByAge(subTypeIndex, age)\r\n\r\n        if visual ~= nil then\r\n\r\n            local subType = animal:getSubType()\r\n            --local fillTypeTitle = g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex)\r\n\r\n            local name = animal:getName()\r\n            name = name ~= \"\" and (\" (\" .. name .. \")\") or \"\"\r\n\r\n            self.animalDetailTypeNameText:setText(animal.uniqueId .. name)\r\n            self.animalDetailTypeImage:setImageFilename(visual.store.imageFilename)\r\n\r\n            local ageMonth = g_i18n:formatNumMonth(age)\r\n            self.animalAgeText:setText(ageMonth)\r\n\r\n            local animalInfo = husbandry:getAnimalInfos(animal)\r\n\r\n            for a, b in ipairs(self.infoRow) do\r\n\r\n                local row = animalInfo[a]\r\n                b:setVisible(row ~= nil)\r\n\r\n                if row ~= nil then\r\n                    local valueText = row.valueText or g_i18n:formatVolume(row.value, 0, row.customUnitText)\r\n                    self.infoLabel[a]:setText(row.title)\r\n                    self.infoValue[a]:setText(valueText)\r\n                    self:setStatusBarValue(self.infoStatusBar[a], row.ratio, row.invertedBar, row.disabled)\r\n                end\r\n\r\n            end\r\n\r\n            local description = husbandry:getAnimalDescription(animal)\r\n            self.detailDescriptionText:setText(description)\r\n\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\nInGameMenuAnimalsFrame.displayCluster = Utils.overwrittenFunction(InGameMenuAnimalsFrame.displayCluster, RealisticLivestock_InGameMenuAnimalsFrame.displayCluster)\r\n\r\n\r\n\r\nfunction RealisticLivestock_InGameMenuAnimalsFrame:populateCellForItemInSection(_, subTypeIndex, animalIndex, cell)\r\n\r\n    local subType = self.husbandrySubTypes[subTypeIndex]\r\n    local animal = self.subTypeIndexToClusters[subType][animalIndex]\r\n\r\n    if g_currentMission.animalSystem:getVisualByAge(subType, animal:getAge()) ~= nil then\r\n        cell:getAttribute(\"name\"):setText(animal.uniqueId .. (animal:getName() == \"\" and \"\" or (\" (\" .. animal:getName() .. \")\")))\r\n        cell:getAttribute(\"count\"):setVisible(false)\r\n    end\r\n\r\nend\r\n\r\nInGameMenuAnimalsFrame.populateCellForItemInSection = Utils.appendedFunction(InGameMenuAnimalsFrame.populateCellForItemInSection, RealisticLivestock_InGameMenuAnimalsFrame.populateCellForItemInSection)"
  },
  {
    "path": "src/gui/VisualAnimalsDialog.lua",
    "content": "VisualAnimalsDialog = {}\r\n\r\nlocal visualAnimalsDialog_mt = Class(VisualAnimalsDialog, YesNoDialog)\r\nlocal modDirectory = g_currentModDirectory\r\n\r\nfunction VisualAnimalsDialog.register()\r\n    local dialog = VisualAnimalsDialog.new()\r\n    g_gui:loadGui(modDirectory .. \"gui/VisualAnimalsDialog.xml\", \"VisualAnimalsDialog\", dialog)\r\n    VisualAnimalsDialog.INSTANCE = dialog\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog.show()\r\n\r\n    if VisualAnimalsDialog.INSTANCE == nil then VisualAnimalsDialog.register() end\r\n\r\n    if VisualAnimalsDialog.INSTANCE ~= nil then\r\n        local instance = VisualAnimalsDialog.INSTANCE\r\n        local profile = Utils.getPerformanceClassId()\r\n\r\n        local recommendedAnimals = (profile == GS_PROFILE_VERY_LOW and 8) or (profile == GS_PROFILE_LOW and 10) or (profile == GS_PROFILE_MEDIUM and 16) or (profile == GS_PROFILE_HIGH and 20) or (profile == GS_PROFILE_VERY_HIGH and 25) or (profile == GS_PROFILE_ULTRA and 25) or 8\r\n        local maxHusbandries = RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES\r\n\r\n        --local currentMaxAnimals = recommendedAnimals * maxHusbandries\r\n        local currentMaxAnimals = 1 * maxHusbandries\r\n        local maxAnimals = recommendedAnimals * 8\r\n\r\n        instance.recommendedAnimals = recommendedAnimals\r\n\r\n        instance:setQuantity(maxAnimals)\r\n        instance.quantityElement:setState(maxHusbandries)\r\n\r\n        g_gui:showDialog(\"VisualAnimalsDialog\")\r\n    end\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog.new(target, customMt)\r\n    local dialog = YesNoDialog.new(target, customMt or visualAnimalsDialog_mt)\r\n    dialog.areButtonsDisabled = false\r\n    dialog.recommendedAnimals = 8\r\n    return dialog\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog.createFromExistingGui(gui, _)\r\n\r\n    VisualAnimalsDialog.register()\r\n    VisualAnimalsDialog.show()\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog:onOpen()\r\n\r\n    VisualAnimalsDialog:superClass().onOpen(self)\r\n    FocusManager:setFocus(self.itemsElement)\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog:onClose()\r\n    VisualAnimalsDialog:superClass().onClose(self)\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog:onRecommended()\r\n\r\n    if self.areButtonsDisabled then return true end\r\n\r\n    self.quantityElement:setState(self.recommendedAnimals * 2)\r\n\r\n    return false\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog:onYes()\r\n\r\n    if self.areButtonsDisabled then return true end\r\n\r\n    local maxHusbandries = RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES\r\n    local newMaxHusbandries = self.quantityElement:getState()\r\n\r\n\r\n    local husbandrySystem = g_currentMission.husbandrySystem\r\n\r\n    if maxHusbandries ~= newMaxHusbandries then\r\n\r\n        RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES = newMaxHusbandries\r\n        for _, clusterHusbandry in ipairs(husbandrySystem.clusterHusbandries) do\r\n            clusterHusbandry.nextUpdateClusters = clusterHusbandry.placeable.spec_husbandryAnimals.clusterSystem:getAnimals()\r\n            clusterHusbandry:updateVisuals(maxHusbandries > newMaxHusbandries)\r\n        end\r\n\r\n    end\r\n\r\n    self:close()\r\n\r\n    return false\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog:onNo(_, _)\r\n\r\n    self:close()\r\n    return false\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog:setQuantity(quantity)\r\n\r\n    if quantity < 1 then quantity = 1 end\r\n    self.maxQuantity = quantity\r\n\r\n    local texts = {}\r\n\r\n    for i=1, quantity do\r\n        local text = tostring(i)\r\n        table.insert(texts, text)\r\n    end\r\n\r\n    self.quantityElement:setTexts(texts)\r\n\r\nend\r\n\r\n\r\nfunction VisualAnimalsDialog:setButtonDisabled(disabled)\r\n    self.areButtonsDisabled = disabled\r\n    self.yesButton:setDisabled(disabled)\r\nend"
  },
  {
    "path": "src/gui/elements/DoubleOptionSliderElement.lua",
    "content": "DoubleOptionSliderElement = {}\r\n\r\nlocal doubleOptionSliderElement_mt = Class(DoubleOptionSliderElement, MultiTextOptionElement)\r\n\r\nGui.registerGuiElement(\"DoubleOptionSlider\", DoubleOptionSliderElement)\r\nGui.registerGuiElementProcFunction(\"DoubleOptionSlider\", Gui.assignPlaySampleCallback)\r\n\r\n\r\nfunction DoubleOptionSliderElement.new(target, customMt)\r\n\r\n\tlocal self = MultiTextOptionElement.new(target, customMt or doubleOptionSliderElement_mt)\r\n\t\r\n\tself.leftSliderElement = nil\r\n\tself.rightSliderElement = nil\r\n\tself.sliderOffset = nil\r\n\tself.defaultProfileSlider = nil\r\n\tself.defaultProfileSliderRound = nil\r\n\tself.useFillingBar = false\r\n\tself.fillingBarElement = nil\r\n\tself.defaultProfileFillingBar = nil\r\n\tself.defaultProfileFillingBarThreePart = nil\r\n\tself.updateTextPosition = true\r\n\tself.leftState = 1\r\n\tself.rightState = 2\r\n    self.fillingBarOffset = GuiUtils.getNormalizedScreenValues(\"2px 0px\")\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:loadFromXML(handle, key)\r\n\r\n\tDoubleOptionSliderElement:superClass().loadFromXML(self, handle, key)\r\n\r\n\tself.sliderOffset = GuiUtils.getNormalizedXValue(getXMLInt(handle, key .. \"#sliderOffset\"), self.sliderOffset)\r\n\tself.useFillingBar = getXMLBool(handle, key .. \"#useFillingBar\") or self.useFillingBar\r\n\tself.updateTextPosition = getXMLBool(handle, key .. \"#updateTextPosition\") or self.updateTextPosition\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:loadProfile(profile, applyProfile)\r\n\r\n\tDoubleOptionSliderElement:superClass().loadProfile(self, profile, applyProfile)\r\n\r\n\tself.sliderOffset = GuiUtils.getNormalizedXValue(profile:getValue(\"sliderOffset\"), self.sliderOffset)\r\n\tself.useFillingBar = profile:getBool(\"useFillingBar\", self.useFillingBar)\r\n\tself.updateTextPosition = profile:getBool(\"updateTextPosition\", self.updateTextPosition)\r\n\tself.defaultProfileSlider = profile:getValue(\"defaultProfileSlider\", self.defaultProfileSlider)\r\n\tself.defaultProfileSliderRound = profile:getValue(\"defaultProfileSliderRound\", self.defaultProfileSliderRound)\r\n\tself.defaultProfileFillingBar = profile:getValue(\"defaultProfileFillingBar\", self.defaultProfileFillingBar)\r\n\tself.defaultProfileFillingBarThreePart = profile:getValue(\"defaultProfileFillingBarThreePart\", self.defaultProfileFillingBarThreePart)\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:copyAttributes(target)\r\n\r\n\tself.sliderOffset = target.sliderOffset\r\n\tself.useFillingBar = target.useFillingBar\r\n\tself.updateTextPosition = target.updateTextPosition\r\n\tself.defaultProfileSlider = target.defaultProfileSlider\r\n\tself.defaultProfileSliderRound = target.defaultProfileSliderRound\r\n\tself.defaultProfileFillingBar = target.defaultProfileFillingBar\r\n\tself.defaultProfileFillingBarThreePart = target.defaultProfileFillingBarThreePart\r\n\r\n\tself.leftSliderElement = target.leftSliderElement\r\n\tself.rightSliderElement = target.rightSliderElement\r\n\tself.leftState = target.leftState\r\n\tself.rightState = target.rightState\r\n\tself.leftSliderMousePosX = target.leftSliderMousePosX\r\n\tself.rightSliderMousePosX = target.rightSliderMousePosX\r\n\tself.texts = target.texts\r\n\tself.isLeftSliderPressed = target.isLeftSliderPressed\r\n\tself.isRightSliderPressed = target.isRightSliderPressed\r\n\r\n\tDoubleOptionSliderElement:superClass().copyAttributes(self, target)\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:setElementsByName()\r\n\r\n\tDoubleOptionSliderElement:superClass().setElementsByName(self)\r\n\r\n\tfor _, element in pairs(self.elements) do\r\n\r\n\t\tif element.name == \"leftSlider\" then\r\n\t\t\tself.leftSliderElement = element\r\n\t\t\telement.target = self\r\n\t\tend\r\n\r\n\t\tif element.name == \"rightSlider\" then\r\n\t\t\tself.rightSliderElement = element\r\n\t\t\telement.target = self\r\n\t\tend\r\n\r\n\t\tif element.name == \"fillingBar\" then\r\n\t\t\tself.fillingBarElement = element\r\n\t\t\telement.target = self\r\n\t\tend\r\n\r\n\tend\r\n\r\n\tif self.fillingBarElement == nil then\r\n\t\tself.useFillingBar = false\r\n\tend\r\n\r\n\tif self.leftSliderElement == nil then\r\n\t\tLogging.warning(\"DoubleOptionSliderElement: could not find a left slider element for element with profile \" .. self.profile)\r\n\telseif self.rightSliderElement == nil then\r\n\t\tLogging.warning(\"DoubleOptionSliderElement: could not find a right slider element for element with profile \" .. self.profile)\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:addDefaultElements()\r\n\r\n\tDoubleOptionSliderElement:superClass().addDefaultElements(self)\r\n\r\n\tif self.autoAddDefaultElements then\r\n\r\n\t\tif self:getDescendantByName(\"fillingBar\") == nil then\r\n\r\n\t\t\tif self.defaultProfileFillingBar == nil then\r\n\r\n\t\t\t\tif self.defaultProfileFillingBarThreePart ~= nil then\r\n\t\t\t\t\tlocal element = ThreePartBitmapElement.new(self)\r\n\t\t\t\t\telement.name = \"fillingBar\"\r\n\t\t\t\t\tself:addElement(element)\r\n\t\t\t\t\telement:applyProfile(self.defaultProfileFillingBarThreePart)\r\n\t\t\t\tend\r\n\r\n\t\t\telse\r\n\r\n\t\t\t\tlocal element = BitmapElement.new(self)\r\n\t\t\t\telement.name = \"fillingBar\"\r\n\t\t\t\tself:addElement(element)\r\n\t\t\t\telement:applyProfile(self.defaultProfileFillingBar)\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif self:getDescendantByName(\"leftSlider\") == nil then\r\n\r\n\t\t\tif self.defaultProfileSliderRound ~= nil then\r\n\r\n\t\t\t\tlocal element = RoundCornerElement.new(self)\r\n\t\t\t\telement.name = \"leftSlider\"\r\n\t\t\t\tself:addElement(element)\r\n\t\t\t\telement:applyProfile(self.defaultProfileSliderRound)\r\n\r\n\t\t\t\treturn\r\n\r\n\t\t\tend\r\n\r\n\t\t\tif self.defaultProfileSlider ~= nil then\r\n\r\n\t\t\t\tlocal element = BitmapElement.new(self)\r\n\t\t\t\telement.name = \"leftSlider\"\r\n\t\t\t\tself:addElement(element)\r\n\t\t\t\telement:applyProfile(self.defaultProfileSlider)\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\t\tif self:getDescendantByName(\"rightSlider\") == nil then\r\n\r\n\t\t\tif self.defaultProfileSliderRound ~= nil then\r\n\r\n\t\t\t\tlocal element = RoundCornerElement.new(self)\r\n\t\t\t\telement.name = \"rightSlider\"\r\n\t\t\t\tself:addElement(element)\r\n\t\t\t\telement:applyProfile(self.defaultProfileSliderRound)\r\n\r\n\t\t\t\treturn\r\n\r\n\t\t\tend\r\n\r\n\t\t\tif self.defaultProfileSlider ~= nil then\r\n\r\n\t\t\t\tlocal element = BitmapElement.new(self)\r\n\t\t\t\telement.name = \"rightSlider\"\r\n\t\t\t\tself:addElement(element)\r\n\t\t\t\telement:applyProfile(self.defaultProfileSlider)\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:onOpen()\r\n\r\n\tDoubleOptionSliderElement:superClass().onOpen(self)\r\n\tself:updateSlider()\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:mouseEvent(posX, posY, isDown, isUp, button, eventUsed)\r\n\r\n\tif self:getIsActive() then\r\n\r\n\t\teventUsed = self.wasContinuousTrigger and isUp and true or (MultiTextOptionElement:superClass().mouseEvent(self, posX, posY, isDown, isUp, button, eventUsed) and true or eventUsed)\r\n\r\n\t\tif isDown then\r\n\r\n\t\t\tlocal leftButton = self.leftButtonElement\r\n            self.isLeftButtonPressed = not self.hideLeftRightButtons and GuiUtils.checkOverlayOverlap(posX, posY, leftButton.absPosition[1], leftButton.absPosition[2], leftButton.absSize[1], leftButton.absSize[2], leftButton.hotspot)\r\n\r\n            local rightButton = self.rightButtonElement\r\n            self.isRightButtonPressed = not self.hideLeftRightButtons and GuiUtils.checkOverlayOverlap(posX, posY, rightButton.absPosition[1], rightButton.absPosition[2], rightButton.absSize[1], rightButton.absSize[2], rightButton.hotspot)\r\n\r\n            local leftSlider = self.leftSliderElement\r\n            self.isLeftSliderPressed = leftSlider ~= nil and GuiUtils.checkOverlayOverlap(posX, posY, leftSlider.absPosition[1], leftSlider.absPosition[2], leftSlider.absSize[1], leftSlider.absSize[2], leftSlider.hotspot)\r\n\r\n            local rightSlider = self.rightSliderElement\r\n            self.isRightSliderPressed = rightSlider ~= nil and GuiUtils.checkOverlayOverlap(posX, posY, rightSlider.absPosition[1], rightSlider.absPosition[2], rightSlider.absSize[1], rightSlider.absSize[2], rightSlider.hotspot)\r\n\r\n            if self.leftSliderMousePosX == nil and self.isLeftSliderPressed then self.leftSliderMousePosX = posX end\r\n            if self.rightSliderMousePosX == nil and self.isRightSliderPressed then self.rightSliderMousePosX = posX end\r\n\r\n            self.delayTime = g_time\r\n\r\n\t\telseif isUp then\r\n\r\n\t\t\tself.delayTime = math.huge\r\n\t\t\tself.scrollDelayDuration = MultiTextOptionElement.FIRST_INPUT_DELAY\r\n\t\t\tself.wasContinuousTrigger = false\r\n\t\t\tself.continuousTriggerTime = 0\r\n\t\t\tself.isLeftButtonPressed = false\r\n\t\t\tself.leftDelayTime = 0\r\n\t\t\tself.isRightButtonPressed = false\r\n\t\t\tself.rightDelayTime = 0\r\n\t\t\tself.isLeftSliderPressed = false\r\n\t\t\tself.isRightSliderPressed = false\r\n\t\t\tself.leftSliderMousePosX = nil\r\n\t\t\tself.rightSliderMousePosX = nil\r\n\t\t\tself.hasWrapped = false\r\n\r\n\t\tend\r\n\r\n\t\tif eventUsed or not GuiUtils.checkOverlayOverlap(posX, posY, self.absPosition[1], self.absPosition[2], self.absSize[1], self.absSize[2], nil) then\r\n\r\n\t\t\tif self.inputEntered and not self.focusActive then\r\n\r\n\t\t\t\tFocusManager:unsetHighlight(self)\r\n\t\t\t\tself.inputEntered = false\r\n\r\n\t\t\tend\r\n\r\n\t\telse\r\n\r\n\t\t\tif not (self.inputEntered or self:getIsFocused()) then\r\n\r\n\t\t\t\tFocusManager:setHighlight(self)\r\n\t\t\t\tself.inputEntered = true\r\n\r\n\t\t\tend\r\n\r\n\t\t\tif #self.texts > 1 then\r\n\r\n\t\t\t\tif not self:getIsFocused() and (self.isLeftSliderPressed or self.isRightSliderPressed) then FocusManager:setFocus(self) end\r\n\r\n\t\t\t\tif self.isLeftSliderPressed then\r\n\r\n\t\t\t\t\tlocal slider = self.leftSliderElement\r\n\t\t\t\t\tlocal sliderWidth = slider.absSize[1]\r\n\t\t\t\t\tlocal stepSize = (self.absSize[1] - 2 * self.sliderOffset - sliderWidth) / (#self.texts - 1)\r\n\r\n\t\t\t\t\tlocal mouseMoveDistance = posX - self.leftSliderMousePosX\r\n\t\t\t\t\tlocal sliderLocalPosX = slider.absPosition[1] - self.absPosition[1] - self.sliderOffset\r\n\r\n\t\t\t\t\tlocal sliderPosX = MathUtil.snapValue(sliderLocalPosX + mouseMoveDistance, stepSize)\r\n\t\t\t\t\tsliderPosX = math.clamp(sliderPosX, 0, self.absSize[1] - sliderWidth - 2 * self.sliderOffset)\r\n\t\t\t\t\tlocal state = MathUtil.round(sliderPosX / stepSize) + 1\r\n\r\n\t\t\t\t\t--if state ~= self.leftState and (self.leftState ~= self.rightState or (self.leftState == self.rightState and state < self.leftState)) then\r\n\t\t\t\t\tif state ~= self.leftState then\r\n\t\t\t\t\t\t--print(string.format(\"left: %s, %s, %s\", tostring(state ~= self.leftState), tostring(self.leftState == self.rightState), tostring(state < self.leftState)))\r\n\r\n\t\t\t\t\t\tself.leftSliderMousePosX = self.leftSliderMousePosX + stepSize * (state - self.leftState)\r\n\t\t\t\t\t\tself.leftState = state\r\n\t\t\t\t\t\tself:setState(state, true)\r\n\r\n\t\t\t\t\t\tslider:setAbsolutePosition(self.absPosition[1] + sliderPosX + self.sliderOffset, slider.absPosition[2])\r\n\r\n\t\t\t\t\t\tif self.updateTextPosition then self.textElement:setAbsolutePosition(slider.absPosition[1] - (self.textElement.absSize[1] - slider.absSize[1]) * 0.5, self.textElement.absPosition[2]) end\r\n\r\n\t\t\t\t\t\tif self.useFillingBar then \r\n\t\t\r\n\t\t\t\t\t\t\tlocal lowestSlider = self:getLowestSlider()\r\n\r\n\t\t\t\t\t\t\tself.fillingBarElement.offset[1] = lowestSlider.absPosition[1] - self.fillingBarElement.absPosition[1] + self.fillingBarOffset[1]\r\n\t\t\t\t\t\t\tself.fillingBarElement:setSize(math.abs((self.leftState - 1) - (self.rightState - 1)) / (#self.texts - 1) * (self.absSize[1] - self.sliderOffset * 2) + self.sliderOffset, nil)\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tend\r\n\r\n\t\t\t\t\tend\r\n\r\n\t\t\t\telseif self.isRightSliderPressed then\r\n\r\n\t\t\t\t\tlocal slider = self.rightSliderElement\r\n\t\t\t\t\tlocal sliderWidth = slider.absSize[1]\r\n\t\t\t\t\tlocal stepSize = (self.absSize[1] - 2 * self.sliderOffset - sliderWidth) / (#self.texts - 1)\r\n\r\n\t\t\t\t\tlocal mouseMoveDistance = posX - self.rightSliderMousePosX\r\n\t\t\t\t\tlocal sliderLocalPosX = slider.absPosition[1] - self.absPosition[1] - self.sliderOffset\r\n\r\n\t\t\t\t\tlocal sliderPosX = MathUtil.snapValue(sliderLocalPosX + mouseMoveDistance, stepSize)\r\n\t\t\t\t\tsliderPosX = math.clamp(sliderPosX, 0, self.absSize[1] - sliderWidth - 2 * self.sliderOffset)\r\n\t\t\t\t\tlocal state = MathUtil.round(sliderPosX / stepSize) + 1\r\n\r\n\t\t\t\t\t--if state ~= self.rightState and (self.leftState ~= self.rightState or (self.leftState == self.rightState and state > self.rightState)) then\r\n\t\t\t\t\tif state ~= self.rightState then\r\n\t\t\t\t\t\t--print(string.format(\"right: %s, %s, %s\", tostring(state ~= self.rightState), tostring(self.leftState == self.rightState), tostring(state > self.rightState)))\r\n\r\n\t\t\t\t\t\tself.rightSliderMousePosX = self.rightSliderMousePosX + stepSize * (state - self.rightState)\r\n\t\t\t\t\t\tself.rightState = state\r\n\t\t\t\t\t\tself:setState(state, true)\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tslider:setAbsolutePosition(self.absPosition[1] + sliderPosX + self.sliderOffset, slider.absPosition[2])\r\n\r\n\t\t\t\t\t\tif self.updateTextPosition then self.textElement:setAbsolutePosition(slider.absPosition[1] - (self.textElement.absSize[1] - slider.absSize[1]) * 0.5, self.textElement.absPosition[2]) end\r\n\r\n\t\t\t\t\t\tif self.useFillingBar then\r\n\t\t\r\n\t\t\t\t\t\t\tlocal lowestSlider = self:getLowestSlider()\r\n\r\n\t\t\t\t\t\t\tself.fillingBarElement.offset[1] = lowestSlider.absPosition[1] - self.fillingBarElement.absPosition[1] + self.fillingBarOffset[1]\r\n\t\t\t\t\t\t\tself.fillingBarElement:setSize(math.abs((self.leftState - 1) - (self.rightState - 1)) / (#self.texts - 1) * (self.absSize[1] - self.sliderOffset * 2) + self.sliderOffset, nil)\r\n\r\n\t\t\t\t\t\tend\r\n\r\n\t\t\t\t\tend\r\n\r\n\t\t\t\tend\r\n\r\n\t\t\tend\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\treturn eventUsed\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:updateSlider()\r\n\r\n    if self.leftSliderElement ~= nil then\r\n\r\n        if self.sliderOffset == nil then\r\n            self.sliderOffset = self.leftButtonElement.absSize[1]\r\n        end\r\n\r\n        local text = self.textElement\r\n        local slider = self.leftSliderElement\r\n\r\n        local minVal = self.absPosition[1] + self.sliderOffset\r\n        local maxVal = self.absPosition[1] + self.absSize[1] - slider.absSize[1] - self.sliderOffset\r\n        local pos = maxVal\r\n        if #self.texts > 1 then\r\n            pos = minVal + (self.leftState - 1) / (#self.texts - 1) * (maxVal - minVal)\r\n        end\r\n\r\n        slider:setAbsolutePosition(pos, slider.absPosition[2])\r\n\r\n        if self.updateTextPosition then\r\n            text:setAbsolutePosition(pos - (text.absSize[1] - slider.absSize[1]) * 0.5, text.absPosition[2])\r\n        end\r\n\r\n    end\r\n\r\n    if self.rightSliderElement ~= nil then\r\n\r\n        if self.sliderOffset == nil then\r\n            self.sliderOffset = self.leftButtonElement.absSize[1]\r\n        end\r\n\r\n        local text = self.textElement\r\n        local slider = self.rightSliderElement\r\n\r\n        local minVal = self.absPosition[1] + self.sliderOffset\r\n        local maxVal = self.absPosition[1] + self.absSize[1] - slider.absSize[1] - self.sliderOffset\r\n        local pos = maxVal\r\n        if #self.texts > 1 then\r\n            pos = minVal + (self.rightState - 1) / (#self.texts - 1) * (maxVal - minVal)\r\n        end\r\n\r\n        slider:setAbsolutePosition(pos, slider.absPosition[2])\r\n\r\n    end\r\n\r\n\tif self.useFillingBar and self.leftSliderElement ~= nil and self.rightSliderElement ~= nil then\r\n\r\n\t\tlocal fillingBarSize = self.absSize[1] - self.sliderOffset\r\n\r\n        if #self.texts > 1 then\r\n            fillingBarSize = math.abs((self.leftState - 1) - (self.rightState - 1)) / (#self.texts - 1) * (self.absSize[1] - self.sliderOffset * 2) + self.sliderOffset\r\n        end\r\n\t\t\r\n\r\n\t\tlocal lowestSlider = self:getLowestSlider()\r\n\r\n\t\tself.fillingBarElement.offset[1] = lowestSlider.absPosition[1] - self.fillingBarElement.absPosition[1] + self.fillingBarOffset[1]\r\n        self.fillingBarElement:setSize(fillingBarSize, nil)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:updateFillingBar()\r\n\r\n\tif self.useFillingBar and self.leftSliderElement ~= nil and self.rightSliderElement ~= nil then\r\n\r\n\t\tlocal fillingBarSize = self.absSize[1] - self.sliderOffset\r\n\r\n        if #self.texts > 1 then\r\n            fillingBarSize = math.abs((self.leftState - 1) - (self.rightState - 1)) / (#self.texts - 1) * (self.absSize[1] - self.sliderOffset * 2) + self.sliderOffset\r\n        end\r\n\t\t\r\n\r\n\t\tlocal lowestSlider = self:getLowestSlider()\r\n\r\n\t\tself.fillingBarElement.offset[1] = lowestSlider.absPosition[1] - self.fillingBarElement.absPosition[1] + self.fillingBarOffset[1]\r\n        self.fillingBarElement:setSize(fillingBarSize, nil)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:updateAbsolutePosition()\r\n\r\n    DoubleOptionSliderElement:superClass().updateAbsolutePosition(self)\r\n\tself:updateSlider()\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:updateContentElement()\r\n\r\n    DoubleOptionSliderElement:superClass().updateContentElement(self)\r\n\r\n\tif self.texts ~= nil and #self.texts > 0 then\r\n\r\n\t\tlocal lowestState = self:getLowestState()\r\n\t\tlocal highestState = self:getHighestState()\r\n\r\n\t\tif lowestState == highestState then\r\n\t\t\tself.textElement:setText(self.texts[lowestState])\r\n\t\telse\r\n\t\t\tself.textElement:setText(self.texts[lowestState] .. \" - \" .. self.texts[highestState])\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:setTexts(texts)\r\n\r\n\tself.leftState = 1\r\n\tself.rightState = #texts\r\n\r\n\tDoubleOptionSliderElement:superClass().setTexts(self, texts)\r\n\r\n\tself:updateSlider()\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:getHighestSlider()\r\n\r\n\treturn self.leftState > self.rightState and self.leftSliderElement or self.rightSliderElement\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:getLowestSlider()\r\n\r\n\treturn self.leftState <= self.rightState and self.leftSliderElement or self.rightSliderElement\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:getHighestState()\r\n\r\n\treturn self.leftState > self.rightState and self.leftState or self.rightState\r\n\r\nend\r\n\r\n\r\nfunction DoubleOptionSliderElement:getLowestState()\r\n\r\n\treturn self.leftState <= self.rightState and self.leftState or self.rightState\r\n\r\nend"
  },
  {
    "path": "src/gui/elements/RenderElement.lua",
    "content": "RL_RenderElement = {}\r\n\r\nlocal modDirectory = g_currentModDirectory\r\n\r\n\r\nfunction RL_RenderElement:setScene(superFunc, filename)\r\n\r\n\tif filename == \"animals/domesticated/earTagScene.i3d\" then\r\n        self.isRealisticLivestockAsset = true\r\n        filename = modDirectory .. filename\r\n    end\r\n\r\n\tsuperFunc(self, filename)\r\n\r\nend\r\n\r\nRenderElement.setScene = Utils.overwrittenFunction(RenderElement.setScene, RL_RenderElement.setScene)\r\n\r\n\r\nfunction RL_RenderElement:onSceneLoaded(node, failedReason, _)\r\n\r\n    if failedReason == LoadI3DFailedReason.NONE and self.isRealisticLivestockAsset then setVisibility(node, true) end\r\n\r\nend\r\n\r\nRenderElement.onSceneLoaded = Utils.appendedFunction(RenderElement.onSceneLoaded, RL_RenderElement.onSceneLoaded)"
  },
  {
    "path": "src/gui/elements/TripleOptionElement.lua",
    "content": "TripleOptionElement = {}\r\n\r\nTripleOptionElement.STATE_LEFT = 1\r\nTripleOptionElement.STATE_MIDDLE = 2\r\nTripleOptionElement.STATE_RIGHT = 3\r\nTripleOptionElement.STRING_ON = \"ui_on\"\r\nTripleOptionElement.STRING_ANY = \"Any\"\r\nTripleOptionElement.STRING_OFF = \"ui_off\"\r\nTripleOptionElement.STRING_YES = \"ui_yes\"\r\nTripleOptionElement.STRING_NO = \"ui_no\"\r\nTripleOptionElement.NUM_SLIDER_STATES = 12\r\n\r\nlocal tripleOptionElement_mt = Class(TripleOptionElement, MultiTextOptionElement)\r\n\r\nGui.registerGuiElement(\"TripleOption\", TripleOptionElement)\r\nGui.registerGuiElementProcFunction(\"TripleOption\", Gui.assignPlaySampleCallback)\r\n\r\n\r\nfunction TripleOptionElement.new(target, custom_mt)\r\n\r\n    local self = MultiTextOptionElement.new(target, custom_mt or tripleOptionElement_mt)\r\n\r\n    self.sliderElement = nil\r\n    self.isSliderMoving = false\r\n    self.sliderState = 0\r\n    self.sliderMovingDirection = 0\r\n    self.middleButtonElement = nil\r\n    self.defaultProfileButtonMiddle = nil\r\n\r\n    self.useYesNoTexts = false\r\n\r\n    return self\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:loadFromXML(xmlFile, key)\r\n\r\n    TripleOptionElement:superClass().loadFromXML(self, xmlFile, key)\r\n\r\n    self.useYesNoTexts = Utils.getNoNil(getXMLBool(xmlFile, key..\"#useYesNoTexts\"), self.useYesNoTexts)\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:loadProfile(profile, applyProfile)\r\n\r\n    TripleOptionElement:superClass().loadProfile(self, profile, applyProfile)\r\n\r\n    self.useYesNoTexts = profile:getBool(\"useYesNoTexts\", self.useYesNoTexts)\r\n\r\n    self.sliderOffset = GuiUtils.getNormalizedScreenValues(profile:getValue(\"sliderOffset\"), self.sliderOffset)\r\n    self.defaultProfileSlider = profile:getValue(\"defaultProfileSlider\", self.defaultProfileSlider)\r\n    self.defaultProfileSliderRound = profile:getValue(\"defaultProfileSliderRound\", self.defaultProfileSliderRound)\r\n    self.defaultProfileSliderThreePart = profile:getValue(\"defaultProfileSliderThreePart\", self.defaultProfileSliderThreePart)\r\n    self.defaultProfileButtonMiddle = profile:getValue(\"defaultProfileButtonMiddle\", self.defaultProfileButtonMiddle)\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:copyAttributes(src)\r\n\r\n    TripleOptionElement:superClass().copyAttributes(self, src)\r\n\r\n    self.useYesNoTexts = src.useYesNoTexts\r\n    self.defaultProfileSlider = src.defaultProfileSlider\r\n    self.defaultProfileSliderRound = src.defaultProfileSliderRound\r\n    self.defaultProfileSliderThreePart = src.defaultProfileSliderThreePart\r\n    self.defaultProfileButtonMiddle = src.defaultProfileButtonMiddle\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:setElementsByName()\r\n\r\n    TripleOptionElement:superClass().setElementsByName(self)\r\n\r\n    for _, element in pairs(self.elements) do\r\n\r\n        if element.name == \"slider\" then\r\n            self.sliderElement = element\r\n            element.target = self\r\n            element:updateAbsolutePosition()\r\n        end\r\n\r\n        if element.name == \"middle\" then\r\n\r\n\t\t\tif self.middleButtonElement ~= nil and self.middleButtonElement ~= element then self.middleButtonElement:delete() end\r\n\r\n\t\t\tself.middleButtonElement = element\r\n\t\t\telement.target = self\r\n\t\t\telement:setHandleFocus(false)\r\n\t\t\telement:setCallback(\"onClickCallback\", \"onMiddleButtonClicked\")\r\n\t\t\telement:setDisabled(self.disabled)\r\n\t\t\telement:setVisible(not self.hideLeftRightButtons)\r\n        \r\n        end\r\n\r\n    end\r\n\r\n    if self.sliderElement == nil then\r\n        Logging.warning(\"TripleOptionElement: could not find a slider element for element with profile \" .. self.profile)\r\n    end\r\n\r\n    self.leftButtonElement:setSelected(true)\r\n    self.leftButtonElement.getIsSelected = function() return self.state == TripleOptionElement.STATE_LEFT end\r\n    self.leftButtonElement.getIsScrollingAllowed = function() return self:getIsFocused() or self:getIsHighlighted() end\r\n\r\n    self.middleButtonElement.getIsSelected = function() return self.state == TripleOptionElement.STATE_MIDDLE end\r\n    self.middleButtonElement.getIsScrollingAllowed = function() return self:getIsFocused() or self:getIsHighlighted() end\r\n\r\n    self.rightButtonElement.getIsSelected = function() return self.state == TripleOptionElement.STATE_RIGHT end\r\n    self.rightButtonElement.getIsScrollingAllowed = function() return self:getIsFocused() or self:getIsHighlighted() end\r\n\r\n    self.sliderDelta = (self.absSize[1] - self.sliderElement.absSize[1]) / TripleOptionElement.NUM_SLIDER_STATES\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:addDefaultElements()\r\n\r\n    TripleOptionElement:superClass().addDefaultElements(self)\r\n\r\n    if self.autoAddDefaultElements then\r\n\r\n        if self:getDescendantByName(\"slider\") == nil then\r\n            if self.defaultProfileSliderRound ~= nil then\r\n                local baseElement = RoundCornerElement.new(self)\r\n                baseElement.name = \"slider\"\r\n                self:addElement(baseElement)\r\n                baseElement:applyProfile(self.defaultProfileSliderRound)\r\n            elseif self.defaultProfileSliderThreePart ~= nil then\r\n                local baseElement = ThreePartBitmapElement.new(self)\r\n                baseElement.name = \"slider\"\r\n                self:addElement(baseElement)\r\n                baseElement:applyProfile(self.defaultProfileSliderThreePart)\r\n            elseif self.defaultProfileSlider ~= nil then\r\n                local baseElement = BitmapElement.new(self)\r\n                baseElement.name = \"slider\"\r\n                self:addElement(baseElement)\r\n                baseElement:applyProfile(self.defaultProfileSlider)\r\n            end\r\n        end\r\n\r\n        \r\n\t\tif self:getDescendantByName(\"middle\") == nil then\r\n\t\t\tlocal element = ButtonElement.new(self)\r\n\t\t\telement.name = \"middle\"\r\n\t\t\tself:addElement(element)\r\n\t\t\telement:applyProfile(self.defaultProfileButtonMiddle)\r\n\t\tend\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:onGuiSetupFinished()\r\n\r\n    TripleOptionElement:superClass().onGuiSetupFinished(self)\r\n\r\n    if self.useYesNoTexts then\r\n        self:setTexts({g_i18n:getText(TripleOptionElement.STRING_NO), g_i18n:getText(TripleOptionElement.STRING_ANY), g_i18n:getText(TripleOptionElement.STRING_YES)})\r\n    else\r\n        self:setTexts({g_i18n:getText(TripleOptionElement.STRING_OFF), g_i18n:getText(TripleOptionElement.STRING_ANY), g_i18n:getText(TripleOptionElement.STRING_ON)})\r\n    end\r\n\r\n    self.textElement:setVisible(false)\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:getIsChecked()\r\n\r\n    return self.state == TripleOptionElement.STATE_RIGHT\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:setIsChecked(isChecked, skipAnimation, forceEvent)\r\n    if isChecked then\r\n        self:setState(TripleOptionElement.STATE_RIGHT, forceEvent)\r\n    else\r\n        self:setState(TripleOptionElement.STATE_LEFT, forceEvent)\r\n    end\r\n\r\n    self.skipAnimation = skipAnimation\r\nend\r\n\r\n\r\nfunction TripleOptionElement:getIsActiveNonRec()\r\n\r\n    return self:getIsVisibleNonRec()\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:setTexts(texts)\r\n\r\n    if #texts ~= 3 then\r\n        Logging.warning(\"TripleOptionElement: called setTexts() with invalid number of texts, triple option requires exactly 3 texts\")\r\n        printCallstack()\r\n    end\r\n\r\n    TripleOptionElement:superClass().setTexts(self, texts)\r\n\r\n    self.leftButtonElement:setText(texts[1])\r\n    self.middleButtonElement:setText(texts[2])\r\n    self.rightButtonElement:setText(texts[3])\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:update(dt)\r\n\r\n    TripleOptionElement:superClass().update(self, dt)\r\n\r\n    if self.sliderMovingDirection ~= 0 then\r\n\r\n        if self.skipAnimation then\r\n            self.sliderState = self.sliderMovingDirection > 0 and TripleOptionElement.NUM_SLIDER_STATES or 0\r\n        else\r\n            self.sliderState = self.sliderState + self.sliderMovingDirection\r\n        end\r\n\r\n        if self.sliderState <= 0 or self.sliderState >= TripleOptionElement.NUM_SLIDER_STATES or self.sliderState == (self.state - 1) * (TripleOptionElement.NUM_SLIDER_STATES / 2) then\r\n            self.sliderMovingDirection = 0\r\n        end\r\n\r\n        self.sliderElement:setPosition(self.sliderDelta * self.sliderState)\r\n\r\n    end\r\n\r\n    self.skipAnimation = false\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:inputLeft()\r\n\r\n    if self.sliderMovingDirection == 0 and (self:getIsFocused() or self.leftButtonElement:getIsPressed()) then\r\n        self:onLeftButtonClicked()\r\n\r\n        return true\r\n    else\r\n        return false\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:inputRight()\r\n\r\n    local middleButtonPressed = self.middleButtonElement:getIsPressed()\r\n    local rightButtonPressed = self.rightButtonElement:getIsPressed()\r\n\r\n    if self.sliderMovingDirection == 0 and (self:getIsFocused() or middleButtonPressed or rightButtonPressed) then\r\n\r\n        if rightButtonPressed then\r\n            self:onRightButtonClicked()\r\n        elseif middleButtonPressed then\r\n            self:onMiddleButtonClicked()\r\n        end\r\n\r\n        return true\r\n    else\r\n        return false\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:setState(state, forceEvent, skipAnimation)\r\n\r\n    if state ~= TripleOptionElement.STATE_LEFT and state ~= TripleOptionElement.STATE_MIDDLE and state ~= TripleOptionElement.STATE_RIGHT then\r\n        Logging.warning(\"TripleOptionElement: invalid state input \" .. state .. \", only 1, 2 and 3 allowed\")\r\n        return\r\n    end\r\n\r\n    if state == self.state then\r\n        return\r\n    end\r\n\r\n    self.oldState = self.state\r\n\r\n    state = math.clamp(state, TripleOptionElement.STATE_LEFT, TripleOptionElement.STATE_RIGHT)\r\n    TripleOptionElement:superClass().setState(self, state, forceEvent)\r\n\r\n    self:updateSelection()\r\n\r\n    self.skipAnimation = skipAnimation\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:onRightButtonClicked()\r\n\r\n    self:setSoundSuppressed(true)\r\n    FocusManager:setFocus(self)\r\n    self:setSoundSuppressed(false)\r\n\r\n    if self:getCanChangeState() and self.state ~= TripleOptionElement.STATE_RIGHT then\r\n\r\n        self:playSample(GuiSoundPlayer.SOUND_SAMPLES.CLICK)\r\n\r\n        self:setState(TripleOptionElement.STATE_RIGHT)\r\n\r\n        self:updateContentElement()\r\n        self:raiseClickCallback(false)\r\n        self:notifyIndexChange(self.state, #self.texts)\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:onMiddleButtonClicked()\r\n\r\n    self:setSoundSuppressed(true)\r\n    FocusManager:setFocus(self)\r\n    self:setSoundSuppressed(false)\r\n\r\n    if self:getCanChangeState() and self.state ~= TripleOptionElement.STATE_MIDDLE then\r\n\r\n        self:playSample(GuiSoundPlayer.SOUND_SAMPLES.CLICK)\r\n\r\n        self:setState(TripleOptionElement.STATE_MIDDLE)\r\n\r\n        self:updateContentElement()\r\n        self:raiseClickCallback(false)\r\n        self:notifyIndexChange(self.state, #self.texts)\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:onLeftButtonClicked()\r\n\r\n    self:setSoundSuppressed(true)\r\n    FocusManager:setFocus(self)\r\n    self:setSoundSuppressed(false)\r\n\r\n    if self:getCanChangeState() and self.state ~= TripleOptionElement.STATE_LEFT then\r\n\r\n        self:playSample(GuiSoundPlayer.SOUND_SAMPLES.CLICK)\r\n\r\n        self:setState(TripleOptionElement.STATE_LEFT)\r\n\r\n        self:updateContentElement()\r\n        self:raiseClickCallback(true)\r\n        self:notifyIndexChange(self.state, #self.texts)\r\n\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction TripleOptionElement:updateSelection()\r\n\r\n    self.leftButtonElement:setSelected(self.state == TripleOptionElement.STATE_LEFT)\r\n    self.middleButtonElement:setSelected(self.state == TripleOptionElement.STATE_MIDDLE)\r\n    self.rightButtonElement:setSelected(self.state == TripleOptionElement.STATE_RIGHT)\r\n\r\n    self.sliderMovingDirection = self.oldState > self.state and -1 or 1\r\n\r\nend"
  },
  {
    "path": "src/handTools/HandTool.lua",
    "content": "RL_HandTool = {}\r\n\r\nlocal modDirectory = g_currentModDirectory\r\nlocal modName = g_currentModName\r\n\r\n\r\nfunction RL_HandTool:load(superFunc, data)\r\n\r\n\tlocal storeItem = g_storeManager:getItemByXMLFilename(self.configFileName)\r\n\r\n\tif not string.contains(self.type.name, modName) or storeItem ~= nil then return superFunc(self, data) end\r\n\r\n\tself:loadNonStoreItem(data, self.configFileName)\r\n\r\nend\r\n\r\nHandTool.load = Utils.overwrittenFunction(HandTool.load, RL_HandTool.load)\r\n\r\n\r\nfunction HandTool:loadNonStoreItem(data, xmlFile)\r\n\r\n\tself.isRL = true\r\n\r\n\tlocal handToolSystem = g_currentMission.handToolSystem\r\n\r\n\tself.handToolLoadingData = data\r\n\tself.savegame = data.savegameData\r\n\tself.xmlFile = XMLFile.loadIfExists(\"handTool\", xmlFile, HandTool.xmlSchema)\r\n\tself.configFileName = xmlFile\r\n\r\n\tSpecializationUtil.copyTypeFunctionsInto(self.type, self)\r\n\tSpecializationUtil.createSpecializationEnvironments(self, function(specialization, variable)\r\n\t\tself:setLoadingState(HandToolLoadingState.ERROR)\r\n\tend)\r\n\r\n\tSpecializationUtil.raiseEvent(self, \"onPreLoad\", self.savegame)\r\n\r\n\tif self.loadingState ~= HandToolLoadingState.OK then\r\n\r\n\t\tprintWarning(\"Handtool pre-loading failed!\")\r\n\t\treturn false\r\n\r\n\tend\r\n\r\n\tself.i3dFilename = modDirectory .. self.xmlFile:getValue(\"handTool.base.filename\")\r\n\t\t\r\n\tif self.i3dFilename == nil then\r\n\t\tself:loadFinishedNonStoreItem()\r\n\telse\r\n\r\n\t\tself:setLoadingStep(SpecializationLoadStep.AWAIT_I3D)\r\n\t\tself.sharedLoadRequestId = g_i3DManager:loadSharedI3DFileAsync(self.i3dFilename, true, false, self.i3dFileLoadedNonStoreItem, self)\r\n\r\n\tend\r\n\r\n\treturn nil\r\n\r\nend\r\n\r\n\r\nfunction HandTool:loadFinishedNonStoreItem()\r\n\r\n\tself:setLoadingState(HandToolLoadingState.OK)\r\n\tself:setLoadingStep(SpecializationLoadStep.LOAD)\r\n\tself.age = 0\r\n\tself:setOwnerFarmId(self.handToolLoadingData.ownerFarmId, true)\r\n\tself.mass = self.xmlFile:getValue(\"handTool.base#mass\", 0)\r\n\r\n\tlocal savegame = self.savegame\r\n\r\n\tif savegame ~= nil then\r\n\r\n\t\tlocal uniqueId = savegame.xmlFile:getValue(savegame.key .. \"#uniqueId\", nil)\r\n\r\n\t\tif uniqueId ~= nil then self:setUniqueId(uniqueId) end\r\n\r\n\t\tlocal farmId = savegame.xmlFile:getValue(savegame.key .. \"#farmId\", AccessHandler.EVERYONE)\r\n\r\n\t\tif g_farmManager.mergedFarms ~= nil and g_farmManager.mergedFarms[farmId] ~= nil then farmId = g_farmManager.mergedFarms[farmId] end\r\n\r\n\t\tself:setOwnerFarmId(farmId, true)\r\n\r\n\tend\r\n\r\n\tself.typeDesc = self.xmlFile:getValue(\"handTool.base.typeDesc\", \"TypeDescription\", self.customEnvironment, true)\r\n\tself.activateText = self.xmlFile:getValue(\"handTool.base.actions#activate\", \"Activate\", self.customEnvironment, true)\r\n\t\r\n\tif self.i3dNode ~= nil then\r\n\r\n\t\tself.rootNode = getChildAt(self.i3dNode, 0)\r\n\t\tself.components = {}\r\n\t\tI3DUtil.loadI3DComponents(self.i3dNode, self.components)\r\n\r\n\t\tself.i3dMappings = {}\r\n\t\tI3DUtil.loadI3DMapping(self.xmlFile, \"handTool\", self.rootLevelNodes, self.i3dMappings)\r\n\r\n\t\tfor _, component in ipairs(self.components) do\r\n\t\t\tlink(getRootNode(), component.node)\r\n\t\tend\r\n\r\n\t\tdelete(self.i3dNode)\r\n\t\tself.i3dNode = nil\r\n\t\tself.graphicalNode = self.xmlFile:getValue(\"handTool.base.graphics#node\", nil, self.components, self.i3dMappings)\r\n\r\n\t\tif self.graphicalNode == nil then\r\n\r\n\t\t\tLogging.xmlError(self.xmlFile, \"Handtool is missing graphical node! Graphics will not work as intended!\")\r\n\t\t\tself:setLoadingState(HandToolLoadingState.ERROR)\r\n\t\t\tself:loadCallback()\r\n\t\t\treturn\r\n\r\n\t\tend\r\n\r\n\t\tself.graphicalNodeParent = getParent(self.graphicalNode)\r\n\t\tself.handNode = self.xmlFile:getValue(\"handTool.base.handNode#node\", nil, self.components, self.i3dMappings)\r\n\t\tself.useLeftHand = self.xmlFile:getValue(\"handTool.base.handNode#useLeftHand\", self.useLeftHand)\r\n\t\tself.firstPersonNode = self.xmlFile:getValue(\"handTool.base.firstPersonNode#node\", nil, self.components, self.i3dMappings)\r\n\r\n\tend\r\n\r\n\tself.shouldLockFirstPerson = self.xmlFile:getValue(\"handTool.base.graphics#lockFirstPerson\", nil)\r\n\tself.runMultiplier = self.xmlFile:getValue(\"handTool.base#runMultiplier\", 1)\r\n\tself.walkMultiplier = self.xmlFile:getValue(\"handTool.base#walkMultiplier\", 1)\r\n\tself.canCrouch = self.xmlFile:getValue(\"handTool.base#canCrouch\", true)\r\n\tself.mustBeHeld = self.xmlFile:getValue(\"handTool.base#mustBeHeld\", false)\r\n\tself.canBeSaved = self.xmlFile:getValue(\"handTool.base#canBeSaved\", true)\r\n\tself.canBeDropped = self.xmlFile:getValue(\"handTool.base#canBeDropped\", true)\r\n\r\n\tSpecializationUtil.raiseEvent(self, \"onLoad\", self.xmlFile, self.baseDirectory)\r\n\r\n\tif self.loadingState == HandToolLoadingState.OK then\r\n\r\n\t\tself:setLoadingStep(SpecializationLoadStep.POST_LOAD)\r\n\t\tSpecializationUtil.raiseEvent(self, \"onPostLoad\", self.savegame)\r\n\r\n\t\tif self.loadingState == HandToolLoadingState.OK then\r\n\r\n\t\t\tif savegame ~= nil then\r\n\t\t\t\tself.age = savegame.xmlFile:getValue(savegame.key .. \"#age\", 0)\r\n\t\t\t\tself.price = savegame.xmlFile:getValue(savegame.key .. \"#price\", self.price)\r\n\t\t\tend\r\n\t\t\tlocal v43 = g_currentMission\r\n\r\n\t\t\tif v43 ~= nil and v43.environment ~= nil then\r\n\t\t\t\tg_messageCenter:subscribe(MessageType.PERIOD_CHANGED, self.periodChanged, self)\r\n\t\t\tend\r\n\r\n\t\t\tif #self.loadingTasks == 0 then\r\n\t\t\t\tself:onFinishedLoadingNonStoreItem()\r\n\t\t\telse\r\n\t\t\t\tself.readyForFinishLoading = true\r\n\t\t\t\tself:setLoadingStep(SpecializationLoadStep.AWAIT_SUB_I3D)\r\n\t\t\tend\r\n\r\n\t\telse\r\n\r\n\t\t\tLogging.xmlError(self.xmlFile, \"HandTool post-loading failed!\")\r\n\t\t\tself:loadCallback()\r\n\t\t\treturn\r\n\r\n\t\tend\r\n\r\n\telse\r\n\r\n\t\tLogging.xmlError(self.xmlFile, \"HandTool loading failed!\")\r\n\t\tself:loadCallback()\r\n\t\treturn\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HandTool:i3dFileLoadedNonStoreItem(node)\r\n\r\n\tif node == 0 then\r\n\r\n\t\tself:setLoadingState(HandToolLoadingState.ERROR)\r\n\t\tprintError(\"Handtool i3d loading failed!\")\r\n\t\tself:loadCallback()\r\n\r\n\telse\r\n\r\n\t\tself.i3dNode = node\r\n\t\tsetVisibility(node, false)\r\n\t\tself:loadFinishedNonStoreItem()\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HandTool:onFinishedLoadingNonStoreItem()\r\n\r\n\tself:setLoadingStep(SpecializationLoadStep.FINISHED)\r\n\tSpecializationUtil.raiseEvent(self, \"onLoadFinished\", self.savegame)\r\n\r\n\tif self.isServer then\r\n\t\tself:setLoadingStep(SpecializationLoadStep.SYNCHRONIZED)\r\n\tend\r\n\r\n\tself.finishedLoading = true\r\n\r\n\tif g_currentMission.handToolSystem:addHandTool(self) then\r\n\r\n\t\tif self.handToolLoadingData.isRegistered then\r\n\t\t\tself:register()\r\n\t\tend\r\n\r\n\t\tlocal holder = self.handToolLoadingData.holder\r\n\r\n\t\tif holder == nil then\r\n\t\t\tif self.savegame ~= nil then\r\n\t\t\t\tself.pendingHolderUniqueId = self.savegame.xmlFile:getValue(self.savegame.key .. \".holder#uniqueId\", nil)\r\n\t\t\tend\r\n\t\telseif holder:getCanPickupHandTool(self) then\r\n\t\t\tself.pendingHolder = holder\r\n\t\t\tself:setHolder(holder)\r\n\t\tend\r\n\r\n\t\tg_currentMission:addOwnedItem(self)\r\n\t\tself.savegame = nil\r\n\t\tself.handToolLoadingData = nil\r\n\t\tself.xmlFile:delete()\r\n\t\tself.xmlFile = nil\r\n\r\n\t\tif self.externalSoundsFile ~= nil then\r\n\t\t\tself.externalSoundsFile:delete()\r\n\t\t\tself.externalSoundsFile = nil\r\n\t\tend\r\n\r\n\t\tself:loadCallback()\r\n\r\n\telse\r\n\r\n\t\tLogging.xmlError(self.xmlFile, \"Failed to register handTool!\")\r\n\t\tself:setLoadingState(HandToolLoadingState.ERROR)\r\n\t\tself:loadCallback()\r\n\r\n\tend\r\n\r\nend"
  },
  {
    "path": "src/handTools/HandToolSystem.lua",
    "content": "RL_HandToolSystem = {}\r\n\r\nlocal modName = g_currentModName\r\n\r\n\r\nfunction RL_HandToolSystem:loadHandToolFromXML(superFunc, xmlFile, key)\r\n\r\n\tlocal returnValue = superFunc(self, xmlFile, key)\r\n\r\n\tif returnValue then return true end\r\n\r\n\tlocal filename = NetworkUtil.convertFromNetworkFilename(xmlFile:getValue(key .. \"#filename\"))\r\n\r\n\tif not string.contains(filename, modName) then return false end\r\n\r\n\tlocal tempXml = XMLFile.loadIfExists(\"tempHandTool\", filename, HandTool.xmlSchema)\r\n\tif tempXml == nil then return false end\r\n\r\n\tlocal typeName = tempXml:getValue(\"handTool#type\")\r\n\r\n\ttempXml:delete()\r\n\r\n\tself.handToolsToLoad = self.handToolsToLoad + 1\r\n\r\n    local type = g_handToolTypeManager:getTypeByName(modName .. \".\" .. typeName)\r\n    local handTool = _G[type.className].new(g_currentMission:getIsServer(), g_currentMission:getIsClient())\r\n\r\n    handTool:setType(type)\r\n    handTool:setLoadCallback(self.loadHandToolFinished, self)\r\n    handTool:loadNonStoreItem({ [\"savegameData\"] = { [\"xmlFile\"] = xmlFile, [\"key\"] = key } }, filename)\r\n\r\n\treturn true\r\n\r\nend\r\n\r\nHandToolSystem.loadHandToolFromXML = Utils.overwrittenFunction(HandToolSystem.loadHandToolFromXML, RL_HandToolSystem.loadHandToolFromXML)"
  },
  {
    "path": "src/handTools/RLHandTools.lua",
    "content": "RLHandTools = {}\r\n\r\n\r\nlocal modDirectory = g_currentModDirectory\r\nlocal modName = g_currentModName\r\nlocal path = modDirectory .. \"xml/handTools.xml\"\r\nlocal xmlFile = XMLFile.loadIfExists(\"rlHandTools\", path)\r\n\r\nRLHandTools.xmlPaths = {}\r\n\r\nif xmlFile ~= nil then\r\n\r\n\txmlFile:iterate(\"handTools.specializations.specialization\", function(_, key)\r\n\r\n\t\tlocal name = xmlFile:getString(key .. \"#name\")\r\n\t\tlocal className = xmlFile:getString(key .. \"#className\")\r\n\t\tlocal filename = xmlFile:getString(key .. \"#filename\")\r\n\r\n\t\tg_handToolSpecializationManager:addSpecialization(name, className, modDirectory .. filename)\r\n\r\n\tend)\r\n\r\n\txmlFile:iterate(\"handTools.types.type\", function(_, key)\r\n\r\n\t\tg_handToolTypeManager:loadTypeFromXML(xmlFile.handle, key, false, nil, modName)\r\n\r\n\t\tRLHandTools.xmlPaths[xmlFile:getString(key .. \"#name\")] = modDirectory .. xmlFile:getString(key .. \"#xmlFile\")\r\n\r\n\tend)\r\n\r\nend"
  },
  {
    "path": "src/handTools/specializations/HandToolAIStraw.lua",
    "content": "HandToolAIStraw = {}\r\n\r\nHandToolAIStraw.numHeldStraws = 0\r\nlocal specName = \"spec_FS25_RealisticLivestock.aiStraw\"\r\n\r\n\r\nfunction HandToolAIStraw.registerFunctions(handTool)\r\n\r\n\tSpecializationUtil.registerFunction(handTool, \"setAnimal\", HandToolAIStraw.setAnimal)\r\n\tSpecializationUtil.registerFunction(handTool, \"setDewarUniqueId\", HandToolAIStraw.setDewarUniqueId)\r\n\tSpecializationUtil.registerFunction(handTool, \"showInfo\", HandToolAIStraw.showInfo)\r\n\tSpecializationUtil.registerFunction(handTool, \"updateStraw\", HandToolAIStraw.updateStraw)\r\n\tSpecializationUtil.registerFunction(handTool, \"renderErrorText\", HandToolAIStraw.renderErrorText)\r\n\tSpecializationUtil.registerFunction(handTool, \"getBelongsToDewar\", HandToolAIStraw.getBelongsToDewar)\r\n\tSpecializationUtil.registerFunction(handTool, \"onInseminate\", HandToolAIStraw.onInseminate)\r\n\tSpecializationUtil.registerFunction(handTool, \"onReturnToDewar\", HandToolAIStraw.onReturnToDewar)\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw.registerOverwrittenFunctions(handTool)\r\n\tSpecializationUtil.registerOverwrittenFunction(handTool, \"getShowInHandToolsOverview\", HandToolAIStraw.getShowInHandToolsOverview)\r\nend\r\n\r\n\r\nfunction HandToolAIStraw.registerEventListeners(handTool)\r\n\tSpecializationUtil.registerEventListener(handTool, \"onPostLoad\", HandToolAIStraw)\r\n\tSpecializationUtil.registerEventListener(handTool, \"onDelete\", HandToolAIStraw)\r\n\tSpecializationUtil.registerEventListener(handTool, \"onDraw\", HandToolAIStraw)\r\n\tSpecializationUtil.registerEventListener(handTool, \"onHeldStart\", HandToolAIStraw)\r\n\tSpecializationUtil.registerEventListener(handTool, \"onHeldEnd\", HandToolAIStraw)\r\n\tSpecializationUtil.registerEventListener(handTool, \"onRegisterActionEvents\", HandToolAIStraw)\r\n\tSpecializationUtil.registerEventListener(handTool, \"onReadStream\", HandToolAIStraw)\r\n\tSpecializationUtil.registerEventListener(handTool, \"onWriteStream\", HandToolAIStraw)\r\nend\r\n\r\n\r\nfunction HandToolAIStraw.prerequisitesPresent()\r\n\r\n\tprint(\"Loaded handTool: HandToolAIStraw\")\r\n\r\n\treturn true\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onPostLoad(savegame)\r\n\r\n\tHandToolAIStraw.numHeldStraws = HandToolAIStraw.numHeldStraws + 1\r\n\r\n\tlocal spec = self[specName]\r\n\r\n\tif self.isClient then spec.defaultCrosshair = self:createCrosshairOverlay(\"gui.crosshairDefault\") end\r\n\r\n\tspec.inseminateText = g_i18n:getText(\"rl_ui_inseminateAnimal\")\r\n\tspec.returnText = \"Return straw\"\r\n\tspec.isEmpty = false\r\n\tspec.textAlpha = 1\r\n\tspec.textAlphaReverse = false\r\n\r\n\tif savegame == nil or savegame.xmlFile == nil then return end\r\n\r\n\tlocal xmlFile, key = savegame.xmlFile, savegame.key\r\n\tlocal animalKey = key .. \".FS25_RealisticLivestock.aiStraw.animal\"\r\n\r\n\tspec.isEmpty = xmlFile:getBool(key .. \".FS25_RealisticLivestock.aiStraw#isEmpty\", false)\r\n\tspec.dewarUniqueId = xmlFile:getString(key .. \".FS25_RealisticLivestock.aiStraw#dewarUniqueId\")\r\n\r\n\tif xmlFile:hasProperty(animalKey) then\r\n\r\n\t\tlocal animal = {}\r\n\t\t\r\n\t\tanimal.country = xmlFile:getInt(animalKey .. \"#country\")\r\n\t\tanimal.farmId = xmlFile:getString(animalKey .. \"#farmId\")\r\n\t\tanimal.uniqueId = xmlFile:getString(animalKey .. \"#uniqueId\")\r\n\t\tanimal.name = xmlFile:getString(animalKey .. \"#name\")\r\n\t\tanimal.typeIndex = xmlFile:getInt(animalKey .. \"#typeIndex\")\r\n\t\tanimal.subTypeIndex = xmlFile:getInt(animalKey .. \"#subTypeIndex\")\r\n\t\tanimal.success = xmlFile:getFloat(animalKey .. \"#success\")\r\n\t\t\r\n\t\tanimal.genetics = {\r\n\t\t\t[\"metabolism\"] = xmlFile:getFloat(animalKey .. \".genetics#metabolism\"),\r\n\t\t\t[\"fertility\"] = xmlFile:getFloat(animalKey .. \".genetics#fertility\"),\r\n\t\t\t[\"health\"] = xmlFile:getFloat(animalKey .. \".genetics#health\"),\r\n\t\t\t[\"quality\"] = xmlFile:getFloat(animalKey .. \".genetics#quality\"),\r\n\t\t\t[\"productivity\"] = xmlFile:getFloat(animalKey .. \".genetics#productivity\")\r\n\t\t}\r\n\t\t\r\n\t\tself.animal = animal\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onDelete()\r\n\r\n\tHandToolAIStraw.numHeldStraws = HandToolAIStraw.numHeldStraws - 1\r\n\t\r\n\tlocal spec = self[specName]\r\n\r\n\tif spec.defaultCrosshair ~= nil then\r\n\t\tspec.defaultCrosshair:delete()\r\n\t\tspec.defaultCrosshair = nil\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:saveToXMLFile(xmlFile, key)\r\n\r\n\tlocal animal = self[specName].animal\r\n\r\n\txmlFile:setBool(key .. \"#isEmpty\", self[specName].isEmpty or false)\r\n\txmlFile:setString(key .. \"#dewarUniqueId\", self[specName].dewarUniqueId or \"\")\r\n\r\n\tif animal ~= nil then\r\n\r\n\t\txmlFile:setInt(key .. \".animal#country\", animal.country)\r\n\t\txmlFile:setString(key .. \".animal#farmId\", animal.farmId)\r\n\t\txmlFile:setString(key .. \".animal#uniqueId\", animal.uniqueId)\r\n\t\txmlFile:setString(key .. \".animal#name\", animal.name)\r\n\t\txmlFile:setInt(key .. \".animal#typeIndex\", animal.typeIndex)\r\n\t\txmlFile:setInt(key .. \".animal#subTypeIndex\", animal.subTypeIndex)\r\n\t\txmlFile:setFloat(key .. \".animal#success\", animal.success)\r\n\t\t\r\n\t\tfor type, value in pairs(animal.genetics) do\r\n\t\t\txmlFile:setFloat(key .. \".animal.genetics#\" .. type, value)\r\n\t\tend\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onReadStream(streamId, connection)\r\n\r\n\tlocal spec = self[specName]\r\n\r\n\tspec.isEmpty = streamReadBool(streamId)\r\n\tspec.dewarUniqueId = streamReadString(streamId)\r\n\r\n\tlocal hasAnimal = streamReadBool(streamId)\r\n\tlocal animal\r\n\r\n\tif hasAnimal then\r\n\r\n\t\tlocal animal = { [\"genetics\"] = {} }\r\n\r\n\t\tanimal.country = streamReadUInt8(streamId)\r\n\t\tanimal.farmId = streamReadString(streamId)\r\n\t\tanimal.uniqueId = streamReadString(streamId)\r\n\t\tanimal.name = streamReadString(streamId)\r\n\t\tanimal.typeIndex = streamReadUInt8(streamId)\r\n\t\tanimal.subTypeIndex = streamReadUInt8(streamId)\r\n\t\tanimal.success = streamReadFloat32(streamId)\r\n\r\n\t\tanimal.genetics.metabolism = streamReadFloat32(streamId)\r\n\t\tanimal.genetics.fertility = streamReadFloat32(streamId)\r\n\t\tanimal.genetics.health = streamReadFloat32(streamId)\r\n\t\tanimal.genetics.quality = streamReadFloat32(streamId)\r\n\t\tanimal.genetics.productivity = streamReadFloat32(streamId)\r\n\r\n\t\tif animal.genetics.productivity < 0 then animal.genetics.productivity = nil end\r\n\r\n\tend\r\n\r\n\tspec.animal = animal\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onWriteStream(streamId, connection)\r\n\r\n\tlocal spec = self[specName]\r\n\r\n\tstreamWriteBool(streamId, spec.isEmpty or false)\r\n\tstreamWriteString(streamId, spec.dewarUniqueId or \"\")\r\n\r\n\tstreamWriteBool(streamId, spec.animal ~= nil)\r\n\r\n\tif spec.animal ~= nil then\r\n\r\n\t\tlocal animal = spec.animal\r\n\r\n\t\tstreamWriteUInt8(streamId, animal.country)\r\n\t\tstreamWriteString(streamId, animal.farmId)\r\n\t\tstreamWriteString(streamId, animal.uniqueId)\r\n\t\tstreamWriteString(streamId, animal.name or \"\")\r\n\t\tstreamWriteUInt8(streamId, animal.typeIndex)\r\n\t\tstreamWriteUInt8(streamId, animal.subTypeIndex)\r\n\t\tstreamWriteFloat32(streamId, animal.success)\r\n\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.metabolism)\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.fertility)\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.health)\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.quality)\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.productivity or -1)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:updateStraw(dT)\r\n\r\n\tlocal player = self:getCarryingPlayer()\r\n\r\n\tif player == nil then\r\n\t\tspec.textAlpha = 1\r\n\t\tg_inputBinding:setActionEventActive(spec.activateActionEventId, false)\r\n\t\treturn\r\n\tend\r\n\r\n\tlocal spec = self[specName]\r\n\r\n\tspec.targetedPlaceable, spec.targetedAnimal, spec.targetedDewar = nil, nil, nil\r\n\r\n\tif not player.isOwner then\r\n\t\tspec.textAlpha = 1\r\n\t\tspec.textAlphaReverse = false\r\n\t\tg_inputBinding:setActionEventActive(spec.activateActionEventId, false)\r\n\t\treturn \r\n\tend\r\n\r\n\tlocal node = player.targeter:getClosestTargetedNodeFromType(HandToolAIStraw)\r\n\r\n\tif node == nil or node == 0 then\r\n\t\tspec.textAlpha = 1\r\n\t\tspec.textAlphaReverse = false\r\n\t\tg_inputBinding:setActionEventActive(spec.activateActionEventId, false)\r\n\t\treturn\r\n\tend\r\n\r\n\tlocal placeable, animal = HandToolAIStraw.getHusbandryAndClusterFromNode(player, node)\r\n\r\n\tif placeable == nil or animal == nil then\r\n\r\n\t\tlocal object = g_currentMission:getNodeObject(node)\r\n\r\n        if object ~= nil and object:isa(Dewar) then\r\n\r\n\t\t\tif self:getBelongsToDewar(object) then\r\n\t\t\t\t\r\n\t\t\t\tspec.targetedDewar = object\r\n\t\t\t\tspec.actionContext = \"return\"\r\n\t\t\t\tg_inputBinding:setActionEventActive(spec.activateActionEventId, true)\r\n\t\t\t\tg_inputBinding:setActionEventText(spec.activateActionEventId, spec.returnText)\r\n\r\n\t\t\telse\r\n\r\n\t\t\t\tg_inputBinding:setActionEventActive(spec.activateActionEventId, false)\r\n\r\n\t\t\t\tself:renderErrorText(\"This straw can not be returned to this dewar\")\r\n\r\n\t\t\tend\r\n\r\n\t\telse\r\n\r\n\t\t\tg_inputBinding:setActionEventActive(spec.activateActionEventId, false)\r\n\t\t\tspec.textAlpha = 1\r\n\t\t\tspec.textAlphaReverse = false\r\n\r\n\t\tend\r\n\r\n\t\treturn\r\n\r\n\tend\r\n\r\n\tlocal canBeInseminated, error = animal:getCanBeInseminatedByAnimal(spec.animal)\r\n\r\n\tif spec.isEmpty or not canBeInseminated then\r\n\r\n\t\tif spec.isEmpty then error = g_i18n:getText(\"rl_ui_strawEmpty\") end\r\n\r\n\t\tg_inputBinding:setActionEventActive(spec.activateActionEventId, false)\r\n\r\n\t\tself:renderErrorText(error)\r\n\r\n\t\treturn\r\n\r\n\tend\r\n\r\n\tspec.targetedPlaceable, spec.targetedAnimal = placeable, animal\r\n\t\r\n\t\t\t\t\r\n\tspec.actionContext = \"inseminate\"\r\n\tg_inputBinding:setActionEventActive(spec.activateActionEventId, true)\r\n\tg_inputBinding:setActionEventText(spec.activateActionEventId, string.format(spec.inseminateText, animal:getIdentifiers()))\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onHeldStart()\r\n\r\n\tif g_localPlayer == nil or self:getCarryingPlayer() ~= g_localPlayer or not g_localPlayer.isOwner then return end\r\n\t\r\n\tg_localPlayer.targeter:addTargetType(HandToolAIStraw, CollisionFlag.ANIMAL + CollisionFlag.DYNAMIC_OBJECT, 0.5, 3)\r\n\tg_localPlayer.hudUpdater:setCarriedItem(self)\r\n\tg_aiStrawUpdater:setStraw(self)\r\n\tg_currentMission:addUpdateable(g_aiStrawUpdater)\r\n\r\n\tlocal spec = self[specName]\r\n\tspec.textAlpha = 1\r\n\tspec.textAlphaReverse = false\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onHeldEnd()\r\n\r\n\tif g_localPlayer == nil or g_localPlayer.hudUpdater:getCarriedItem() ~= self then return end\r\n\r\n\tif g_localPlayer.isOwner then g_localPlayer.targeter:removeTargetType(HandToolAIStraw) end\r\n\r\n\tg_localPlayer.hudUpdater:setCarriedItem()\r\n\tg_aiStrawUpdater:setStraw()\r\n\tg_currentMission:removeUpdateable(g_aiStrawUpdater)\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onRegisterActionEvents()\r\n\r\n\tif self:getIsActiveForInput(true) then\r\n\r\n\t\tlocal _, eventId = self:addActionEvent(InputAction.ACTIVATE_HANDTOOL, self, HandToolAIStraw.onActionFired, false, true, false, true, nil)\r\n\t\tself[specName].activateActionEventId = eventId\r\n\t\tg_inputBinding:setActionEventTextPriority(eventId, GS_PRIO_VERY_HIGH)\r\n\t\tg_inputBinding:setActionEventText(eventId, \"\")\r\n\t\tg_inputBinding:setActionEventActive(eventId, false)\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:setAnimal(animal)\r\n\r\n\tself[specName].animal = animal\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:setDewarUniqueId(dewarUniqueId)\r\n\r\n\tself[specName].dewarUniqueId = dewarUniqueId\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:showInfo(box)\r\n\r\n\tlocal animal = self[specName].animal\r\n\r\n\tif animal == nil then return end\r\n\r\n\tlocal animalSystem = g_currentMission.animalSystem\r\n\tlocal subType = animalSystem:getSubTypeByIndex(animal.subTypeIndex)\r\n\t\r\n    box:addLine(g_i18n:getText(\"rl_ui_averageSuccess\"), string.format(\"%s%%\", tostring(math.round(animal.success * 100))))\r\n    box:addLine(g_i18n:getText(\"rl_ui_species\"), animalSystem:getTypeByIndex(animal.typeIndex).groupTitle)\r\n    box:addLine(g_i18n:getText(\"infohud_type\"), g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex))\r\n\tbox:addLine(g_i18n:getText(\"infohud_name\"), animal.name)\r\n\tbox:addLine(g_i18n:getText(\"rl_ui_earTag\"), string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[animal.country].code, animal.farmId, animal.uniqueId))\r\n\r\n\tfor type, value in pairs(animal.genetics) do\r\n\r\n\t\tlocal valueText\r\n\r\n\t\tif value >= 1.65 then\r\n            valueText = \"extremelyHigh\"\r\n        elseif value >= 1.4 then\r\n            valueText = \"veryHigh\"\r\n        elseif value >= 1.1 then\r\n            valueText = \"high\"\r\n        elseif value >= 0.9 then\r\n            valueText = \"average\"\r\n        elseif value >= 0.7 then\r\n            valueText = \"low\"\r\n        elseif value >= 0.35 then\r\n            valueText = \"veryLow\"\r\n        else\r\n            valueText = \"extremelyLow\"\r\n        end\r\n\r\n\t\tbox:addLine(g_i18n:getText(\"rl_ui_\" .. type), g_i18n:getText(\"rl_ui_genetics_\" .. valueText))\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw.getHusbandryAndClusterFromNode(player, node)\r\n\r\n    if node == nil or not entityExists(node) then return nil, nil end\r\n\r\n\tlocal husbandryId, animalId = getAnimalFromCollisionNode(node)\r\n\r\n\tif husbandryId ~= nil and husbandryId ~= 0 then\r\n\r\n\t\tlocal clusterHusbandry = g_currentMission.husbandrySystem:getClusterHusbandryById(husbandryId)\r\n\r\n\t\tif clusterHusbandry ~= nil then\r\n\r\n\t\t\tlocal placeable = clusterHusbandry:getPlaceable()\r\n\t\t\tlocal animal = clusterHusbandry:getClusterByAnimalId(animalId, husbandryId)\r\n\r\n\t\t\tif animal ~= nil and (g_currentMission.accessHandler:canFarmAccess(player.farmId, placeable) and (animal.changeDirt ~= nil and animal.getName ~= nil)) then return placeable, animal end\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\treturn nil, nil\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onActionFired()\r\n\r\n\tlocal spec = self[specName]\r\n\r\n\tif spec.actionContext == \"inseminate\" then\r\n\t\tself:onInseminate()\r\n\telseif spec.actionContext == \"return\" then\r\n\t\tself:onReturnToDewar()\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onInseminate()\r\n\r\n\tlocal spec = self[specName]\r\n\r\n\tlocal husbandry, animal = spec.targetedPlaceable, spec.targetedAnimal\r\n\r\n\tanimal:setInsemination(spec.animal)\r\n\r\n\tif g_server ~= nil then\r\n\t\tg_server:broadcastEvent(AnimalInseminationEvent.new(husbandry, animal, spec.animal))\r\n\telseif g_client ~= nil then\r\n\t\tg_client:getServerConnection():sendEvent(AnimalInseminationEvent.new(husbandry, animal, spec.animal))\r\n\tend\r\n\r\n\tspec.isEmpty = true\r\n\tg_inputBinding:setActionEventActive(spec.activateActionEventId, false)\r\n\r\n\tif self.isServer then g_currentMission.handToolSystem:markHandToolForDeletion(self) end\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onReturnToDewar()\r\n\r\n\tlocal spec = self[specName]\r\n\r\n\tlocal dewar = spec.targetedDewar\r\n\r\n\tif g_server ~= nil then\r\n\t\tg_server:broadcastEvent(ReturnStrawEvent.new(dewar))\r\n\telseif g_client ~= nil then\r\n\t\tg_client:getServerConnection():sendEvent(ReturnStrawEvent.new(dewar))\r\n\tend\r\n\r\n\tdewar:changeStraws(1)\r\n\tspec.isEmpty = true\r\n\tg_inputBinding:setActionEventActive(spec.activateActionEventId, false)\r\n\r\n\tif self.isServer then g_currentMission.handToolSystem:markHandToolForDeletion(self) end\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:getShowInHandToolsOverview()\r\n\r\n\treturn false\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:renderErrorText(text)\r\n\r\n\tlocal spec = self[specName]\r\n\r\n\tsetTextAlignment(RenderText.ALIGN_CENTER)\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_MIDDLE)\r\n\tsetTextColor(1, 0, 0, spec.textAlpha)\r\n\trenderText(0.5, 0.6, 0.023, text)\r\n\r\n\tspec.textAlpha = spec.textAlpha + (spec.textAlphaReverse and 0.015 or -0.015)\r\n\r\n\tif spec.textAlpha <= 0 or spec.textAlpha >= 1 then spec.textAlphaReverse = not spec.textAlphaReverse end\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:getBelongsToDewar(dewar)\r\n\r\n\tlocal spec = self[specName]\r\n\r\n\treturn dewar:getUniqueId() == spec.dewarUniqueId\r\n\r\nend\r\n\r\n\r\nfunction HandToolAIStraw:onDraw()\r\n\r\n\tself[specName].defaultCrosshair:render()\r\n\r\nend"
  },
  {
    "path": "src/handTools/specializations/HandToolHorseBrush.lua",
    "content": "RL_HandToolHorseBrush = {}\r\n\r\n\r\nfunction RL_HandToolHorseBrush:getHusbandryAndClusterFromNode(superFunc, node)\r\n\r\n    if node == nil or not entityExists(node) then return nil, nil end\r\n\r\n\tlocal husbandryId, animalId = getAnimalFromCollisionNode(node)\r\n\r\n\tif husbandryId ~= nil and husbandryId ~= 0 then\r\n\r\n\t\tlocal clusterHusbandry = g_currentMission.husbandrySystem:getClusterHusbandryById(husbandryId)\r\n\r\n\t\tif clusterHusbandry ~= nil then\r\n\r\n\t\t\tlocal placeable = clusterHusbandry:getPlaceable()\r\n\t\t\tlocal animal = clusterHusbandry:getClusterByAnimalId(animalId, husbandryId)\r\n\r\n\t\t\tif animal ~= nil and (g_currentMission.accessHandler:canFarmAccess(self.farmId, placeable) and (animal.changeDirt ~= nil and animal.getName ~= nil)) then return placeable, animal end\r\n\r\n\t\tend\r\n\r\n\tend\r\n\r\n\treturn nil, nil\r\n\r\nend\r\n\r\nHandToolHorseBrush.getHusbandryAndClusterFromNode = Utils.overwrittenFunction(HandToolHorseBrush.getHusbandryAndClusterFromNode, RL_HandToolHorseBrush.getHusbandryAndClusterFromNode)"
  },
  {
    "path": "src/objects/Dewar.lua",
    "content": "Dewar = {}\r\n\r\n\r\nDewar.CAPACITY = 1000\r\nDewar.PRICE_PER_STRAW = 0.85\r\n\r\n\r\nlocal dewar_mt = Class(Dewar, PhysicsObject)\r\nlocal modDirectory = g_currentModDirectory\r\n\r\n\r\nfunction Dewar.new(isServer, isClient)\r\n\r\n\tlocal self = PhysicsObject.new(isServer, isClient, dewar_mt)\r\n\r\n\tregisterObjectClassName(self, \"Dewar\")\r\n\r\n\tself.uniqueId = nil\r\n\tself.position = nil\r\n\tself.rotation = nil\r\n\tself.sharedRequestId = nil\r\n\tself.mass = 0.1\r\n\tself.isAddedToItemSystem = false\r\n\tself.straws = 0\r\n\r\n\tself.texts = {}\r\n\r\n\treturn self\r\n\r\nend\r\n\r\n\r\nfunction Dewar:delete()\r\n\r\n\tg_dewarManager:removeDewar(self:getOwnerFarmId(), self)\r\n\r\n\tif self.sharedRequestId ~= nil then\r\n\t\tg_i3DManager:releaseSharedI3DFile(self.sharedRequestId)\r\n\t\tself.sharedRequestId = nil\r\n\tend\r\n\t\r\n\tunregisterObjectClassName(self)\r\n\tif self.isAddedToItemSystem then g_currentMission.itemSystem:removeItem(self) end\r\n\tDewar:superClass().delete(self)\r\n\r\nend\r\n\r\n\r\nfunction Dewar:register(position, rotation, animal, quantity)\r\n\r\n\t--if self.isServer then Dewar:superClass().register(self, true) end\r\n\r\n\tself.position = self.position or position\r\n\tself.rotation = self.rotation or rotation\r\n\tself.mass = 0.1\r\n\r\n\tif self.nodeId == nil or self.nodeId == 0 then self:createNode(modDirectory .. \"objects/dewar/dewar.i3d\") end\r\n\r\n\tlocal x, y, z = unpack(self.position)\r\n\tlocal rx, ry, rz = unpack(self.rotation)\r\n\r\n\tlocal node = self.nodeId\r\n    link(getRootNode(), node)\r\n\tsetWorldTranslation(node, unpack(self.position))\r\n\tsetWorldRotation(node, unpack(self.rotation))\r\n\r\n\tlocal sx, sy, sz = getWorldTranslation(self.shapeNode)\r\n\tlocal srx, sry, srz = getWorldRotation(self.shapeNode)\r\n\r\n\tself.ox, self.oy, self.oz = x - sx, y - sy, z - sz\r\n\tself.orx, self.ory, self.orz = rx - srx, ry - sry, rz - srz\r\n\r\n\tif not self.isAddedToItemSystem then\r\n\t\tg_currentMission.itemSystem:addItem(self)\r\n\t\tself.isAddedToItemSystem = true\r\n\tend\r\n\r\n\tif animal ~= nil then self:setAnimal(animal) end\r\n\tif quantity ~= nil then self:setStraws(quantity) end\r\n\r\n\tg_dewarManager:addDewar(self:getOwnerFarmId(), self)\r\n\r\n\tself:updateStrawVisuals()\r\n\tself:updateAnimalVisuals()\r\n\r\n\t--if g_server ~= nil then\r\n\t\t--g_server:addObject(self, string.format(\"dewar_%s\", self.uniqueId))\r\n\t--elseif g_client ~= nil then\r\n\t\t--g_client:addObject(self, string.format(\"dewar_%s\", self.uniqueId))\r\n\t--end\r\n\r\nend\r\n\r\n\r\nfunction Dewar:saveToXMLFile(xmlFile, key)\r\n\r\n\tlocal x, y, z = getWorldTranslation(self.shapeNode)\r\n\tlocal rx, ry, rz = getWorldRotation(self.shapeNode)\r\n\r\n\txmlFile:setString(key .. \"#uniqueId\", self.uniqueId)\r\n\txmlFile:setVector(key .. \"#position\", table.pack(x + self.ox, y + self.oy, z + self.oz))\r\n\txmlFile:setVector(key .. \"#rotation\", table.pack(rx + self.orx, ry + self.ory, rz + self.orz))\r\n\txmlFile:setInt(key .. \"#farmId\", self:getOwnerFarmId())\r\n\txmlFile:setInt(key .. \"#straws\", self.straws)\r\n\r\n\tlocal animalKey = key .. \".animal\"\r\n\tlocal animal = self.animal\r\n\r\n\tif animal ~= nil then\r\n\r\n\t\txmlFile:setInt(animalKey .. \"#country\", animal.country)\r\n\t\txmlFile:setString(animalKey .. \"#farmId\", animal.farmId)\r\n\t\txmlFile:setString(animalKey .. \"#uniqueId\", animal.uniqueId)\r\n\t\txmlFile:setString(animalKey .. \"#name\", animal.name)\r\n\t\txmlFile:setInt(animalKey .. \"#typeIndex\", animal.typeIndex)\r\n\t\txmlFile:setInt(animalKey .. \"#subTypeIndex\", animal.subTypeIndex)\r\n\t\txmlFile:setFloat(animalKey .. \"#success\", animal.success)\r\n\t\t\r\n\t\tfor type, value in pairs(animal.genetics) do\r\n\t\t\txmlFile:setFloat(animalKey .. \".genetics#\" .. type, value)\r\n\t\tend\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction Dewar:loadFromXMLFile(xmlFile, key)\r\n\r\n\tself.uniqueId = xmlFile:getString(key .. \"#uniqueId\")\r\n\tself.position = xmlFile:getVector(key .. \"#position\")\r\n\tself.rotation = xmlFile:getVector(key .. \"#rotation\")\r\n\tself:setOwnerFarmId(xmlFile:getInt(key .. \"#farmId\"))\r\n\tself.straws = xmlFile:getInt(key .. \"#straws\")\r\n\r\n\tlocal animalKey = key .. \".animal\"\r\n\r\n\tif xmlFile:hasProperty(animalKey) then\r\n\r\n\t\tlocal animal = {}\r\n\t\t\r\n\t\tanimal.country = xmlFile:getInt(animalKey .. \"#country\")\r\n\t\tanimal.farmId = xmlFile:getString(animalKey .. \"#farmId\")\r\n\t\tanimal.uniqueId = xmlFile:getString(animalKey .. \"#uniqueId\")\r\n\t\tanimal.name = xmlFile:getString(animalKey .. \"#name\")\r\n\t\tanimal.typeIndex = xmlFile:getInt(animalKey .. \"#typeIndex\")\r\n\t\tanimal.subTypeIndex = xmlFile:getInt(animalKey .. \"#subTypeIndex\")\r\n\t\tanimal.success = xmlFile:getFloat(animalKey .. \"#success\")\r\n\t\t\r\n\t\tanimal.genetics = {\r\n\t\t\t[\"metabolism\"] = xmlFile:getFloat(animalKey .. \".genetics#metabolism\"),\r\n\t\t\t[\"fertility\"] = xmlFile:getFloat(animalKey .. \".genetics#fertility\"),\r\n\t\t\t[\"health\"] = xmlFile:getFloat(animalKey .. \".genetics#health\"),\r\n\t\t\t[\"quality\"] = xmlFile:getFloat(animalKey .. \".genetics#quality\"),\r\n\t\t\t[\"productivity\"] = xmlFile:getFloat(animalKey .. \".genetics#productivity\")\r\n\t\t}\r\n\t\t\r\n\t\tself.animal = animal\r\n\r\n\tend\r\n\r\n\tself.isAddedToItemSystem = true\r\n\r\n\treturn true\r\n\r\nend\r\n\r\n\r\nfunction Dewar:readStream(streamId, connection)\r\n\r\n\tself.uniqueId = streamReadString(streamId)\r\n\r\n\tself.position = {\r\n\t\tstreamReadFloat32(streamId),\r\n\t\tstreamReadFloat32(streamId),\r\n\t\tstreamReadFloat32(streamId)\r\n\t}\r\n\r\n\tself.rotation = {\r\n\t\tstreamReadFloat32(streamId),\r\n\t\tstreamReadFloat32(streamId),\r\n\t\tstreamReadFloat32(streamId)\r\n\t}\r\n\r\n\tself:setOwnerFarmId(streamReadUInt8(streamId))\r\n\tself.straws = streamReadUInt16(streamId)\r\n\r\n\tlocal hasAnimal = streamReadBool(streamId)\r\n\tlocal animal\r\n\t\r\n\tif hasAnimal then\r\n\r\n\t\tanimal = { [\"genetics\"] = {} }\r\n\r\n\t\tanimal.country = streamReadUInt8(streamId)\r\n\t\tanimal.farmId = streamReadString(streamId)\r\n\t\tanimal.uniqueId = streamReadString(streamId)\r\n\t\tanimal.name = streamReadString(streamId)\r\n\t\tanimal.typeIndex = streamReadUInt8(streamId)\r\n\t\tanimal.subTypeIndex = streamReadUInt8(streamId)\r\n\t\tanimal.success = streamReadFloat32(streamId)\r\n\r\n\t\tanimal.genetics.metabolism = streamReadFloat32(streamId)\r\n\t\tanimal.genetics.fertility = streamReadFloat32(streamId)\r\n\t\tanimal.genetics.health = streamReadFloat32(streamId)\r\n\t\tanimal.genetics.quality = streamReadFloat32(streamId)\r\n\t\tanimal.genetics.productivity = streamReadFloat32(streamId)\r\n\r\n\t\tif animal.genetics.productivity < 0 then animal.genetics.productivity = nil end\r\n\r\n\tend\r\n\r\n\tself.animal = animal\r\n\r\n\tDewar:superClass().readStream(self, streamId, connection)\r\n\r\nend\r\n\r\n\r\nfunction Dewar:writeStream(streamId, connection)\r\n\r\n\tstreamWriteString(streamId, self.uniqueId)\r\n\t\r\n\tstreamWriteFloat32(streamId, self.position[1])\r\n\tstreamWriteFloat32(streamId, self.position[2])\r\n\tstreamWriteFloat32(streamId, self.position[3])\r\n\t\r\n\tstreamWriteFloat32(streamId, self.rotation[1])\r\n\tstreamWriteFloat32(streamId, self.rotation[2])\r\n\tstreamWriteFloat32(streamId, self.rotation[3])\r\n\r\n\tstreamWriteUInt8(streamId, self:getOwnerFarmId())\r\n\tstreamWriteUInt16(streamId, self.straws)\r\n\r\n\tstreamWriteBool(streamId, self.animal ~= nil)\r\n\r\n\tif self.animal ~= nil then\r\n\r\n\t\tlocal animal = self.animal\r\n\r\n\t\tstreamWriteUInt8(streamId, animal.country)\r\n\t\tstreamWriteString(streamId, animal.farmId)\r\n\t\tstreamWriteString(streamId, animal.uniqueId)\r\n\t\tstreamWriteString(streamId, animal.name or \"\")\r\n\t\tstreamWriteUInt8(streamId, animal.typeIndex)\r\n\t\tstreamWriteUInt8(streamId, animal.subTypeIndex)\r\n\t\tstreamWriteFloat32(streamId, animal.success)\r\n\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.metabolism)\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.fertility)\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.health)\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.quality)\r\n\t\tstreamWriteFloat32(streamId, animal.genetics.productivity or -1)\r\n\r\n\tend\r\n\r\n\tDewar:superClass().writeStream(self, streamId, connection)\r\n\r\nend\r\n\r\n\r\nfunction Dewar:createNode(filename)\r\n\r\n\tlocal node, sharedRequestId = g_i3DManager:loadSharedI3DFile(filename, true, true, true)\r\n    setVisibility(node, true)\r\n\r\n\tself.sharedRequestId = sharedRequestId\r\n\tself:setNodeId(node)\r\n\r\n\tlocal shapeNode = getChildAt(node, 0)\r\n\tsetMass(shapeNode, self.mass)\r\n\tself.shapeNode = shapeNode\r\n\r\nend\r\n\r\n\r\nfunction Dewar:getUniqueId()\r\n\r\n\treturn self.uniqueId\r\n\r\nend\r\n\r\n\r\nfunction Dewar:setUniqueId(uniqueId)\r\n\r\n\tself.uniqueId = uniqueId\r\n\r\nend\r\n\r\n\r\nfunction Dewar:setVisibility(visibility)\r\n\r\n\tsetVisibility(self.nodeId, visibility)\r\n\r\nend\r\n\r\n\r\nfunction Dewar:setAnimal(animal)\r\n\r\n\tself.animal = \r\n\t{\r\n\t\t[\"country\"] = animal.birthday.country,\r\n\t\t[\"farmId\"] = animal.farmId,\r\n\t\t[\"uniqueId\"] = animal.uniqueId,\r\n\t\t[\"name\"] = animal:getName(),\r\n\t\t[\"typeIndex\"] = animal.animalTypeIndex,\r\n\t\t[\"subTypeIndex\"] = animal.subTypeIndex,\r\n\t\t[\"genetics\"] = table.clone(animal.genetics, 3),\r\n\t\t[\"success\"] = animal.success\r\n\t}\r\n\r\n\tself:updateAnimalVisuals()\r\n\r\nend\r\n\r\n\r\nfunction Dewar:getAnimal()\r\n\r\n\treturn self.animal\r\n\r\nend\r\n\r\n\r\nfunction Dewar:showInfo(box)\r\n\r\n\tif self.animal == nil then return end\r\n\r\n\tlocal animal = self.animal\r\n\tlocal animalSystem = g_currentMission.animalSystem\r\n\tlocal subType = animalSystem:getSubTypeByIndex(animal.subTypeIndex)\r\n\r\n    box:addLine(g_i18n:getText(\"rl_ui_strawMultiple\"), tostring(self.straws))\r\n    box:addLine(g_i18n:getText(\"rl_ui_averageSuccess\"), string.format(\"%s%%\", tostring(math.round(animal.success * 100))))\r\n    box:addLine(g_i18n:getText(\"rl_ui_species\"), animalSystem:getTypeByIndex(animal.typeIndex).groupTitle)\r\n    box:addLine(g_i18n:getText(\"infohud_type\"), g_fillTypeManager:getFillTypeTitleByIndex(subType.fillTypeIndex))\r\n\tbox:addLine(g_i18n:getText(\"infohud_name\"), animal.name)\r\n\tbox:addLine(g_i18n:getText(\"rl_ui_earTag\"), string.format(\"%s %s %s\", RealisticLivestock.AREA_CODES[animal.country].code, animal.farmId, animal.uniqueId))\r\n\r\n\tfor type, value in pairs(animal.genetics) do\r\n\r\n\t\tlocal valueText\r\n\r\n\t\tif value >= 1.65 then\r\n            valueText = \"extremelyHigh\"\r\n        elseif value >= 1.4 then\r\n            valueText = \"veryHigh\"\r\n        elseif value >= 1.1 then\r\n            valueText = \"high\"\r\n        elseif value >= 0.9 then\r\n            valueText = \"average\"\r\n        elseif value >= 0.7 then\r\n            valueText = \"low\"\r\n        elseif value >= 0.35 then\r\n            valueText = \"veryLow\"\r\n        else\r\n            valueText = \"extremelyLow\"\r\n        end\r\n\r\n\t\tbox:addLine(g_i18n:getText(\"rl_ui_\" .. type), g_i18n:getText(\"rl_ui_genetics_\" .. valueText))\r\n\r\n\tend\r\n\r\nend\r\n\r\n\r\nfunction Dewar:getTotalMass()\r\n\r\n\treturn self.mass\r\n\r\nend\r\n\r\n\r\nfunction Dewar:getCanBePickedUp(player)\r\n\r\n\treturn true\r\n\r\nend\r\n\r\n\r\nfunction Dewar:setStraws(value)\r\n\r\n\tself.straws = value or 0\r\n\r\n\tself:updateStrawVisuals()\r\n\r\nend\r\n\r\n\r\nfunction Dewar:changeStraws(delta)\r\n\r\n\tself.straws = math.clamp(self.straws + delta, 0, Dewar.CAPACITY)\r\n\r\n\tif self.straws <= 0 then\r\n\t\tself:delete()\r\n\t\treturn\r\n\tend\r\n\r\n\tself:updateStrawVisuals()\r\n\r\nend\r\n\r\n\r\nfunction Dewar:updateStrawVisuals()\r\n\r\n\tlocal parent = I3DUtil.indexToObject(self.shapeNode, \"0|1\")\r\n\t\r\n\tset3DTextRemoveSpaces(true)\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_MIDDLE)\r\n\tsetTextAlignment(RenderText.ALIGN_CENTER)\r\n\tsetTextColor(1, 0.1, 0.1, 1)\r\n\tset3DTextWordsPerLine(1)\r\n\tsetTextLineHeightScale(0.75)\r\n\tsetTextFont(RealisticLivestock.FONTS.toms_handwritten)\r\n\r\n\tif self.texts.straws ~= nil then delete3DLinkedText(self.texts.straws) end\r\n\tself.texts.straws = create3DLinkedText(parent, 0.003, 0.01, 0.003, 0, math.rad(-90), 0, 0.025, string.format(\"%s %s\", self.straws, self.straws == 1 and \"straw\" or \"straws\"))\r\n\t\r\n\tset3DTextRemoveSpaces(false)\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_BASELINE)\r\n\tsetTextAlignment(RenderText.ALIGN_LEFT)\r\n\tsetTextColor(1, 1, 1, 1)\r\n\tset3DTextWordsPerLine(0)\r\n\tsetTextLineHeightScale(1.1)\r\n\tsetTextFont()\r\n\r\nend\r\n\r\n\r\nfunction Dewar:updateAnimalVisuals()\r\n\r\n\tif self.animal == nil then return end\r\n\r\n\tlocal parent = I3DUtil.indexToObject(self.shapeNode, \"0|0\")\r\n\r\n\tlocal country = RealisticLivestock.AREA_CODES[self.animal.country].code\r\n\tlocal farmId = self.animal.farmId\r\n\tlocal uniqueId = self.animal.uniqueId\r\n\t\r\n\tset3DTextRemoveSpaces(true)\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_MIDDLE)\r\n\tsetTextAlignment(RenderText.ALIGN_CENTER)\r\n\tsetTextColor(1, 0.1, 0.1, 1)\r\n\tset3DTextWordsPerLine(1)\r\n\tsetTextLineHeightScale(1.25)\r\n\tsetTextFont(RealisticLivestock.FONTS.toms_handwritten)\r\n\r\n\tif self.texts.animal ~= nil then delete3DLinkedText(self.texts.animal) end\r\n\tself.texts.animal = create3DLinkedText(parent, -0.01, -0.002, 0.008, 0, math.rad(-170), 0, 0.02, string.format(\"%s %s %s\", country, uniqueId, farmId))\r\n\r\n\tset3DTextAutoScale(false)\r\n\tset3DTextRemoveSpaces(false)\r\n\tsetTextVerticalAlignment(RenderText.VERTICAL_ALIGN_BASELINE)\r\n\tsetTextAlignment(RenderText.ALIGN_LEFT)\r\n\tsetTextColor(1, 1, 1, 1)\r\n\tset3DTextWordsPerLine(0)\r\n\tsetTextLineHeightScale(1.1)\r\n\tsetTextFont()\r\n\r\nend\r\n\r\n\r\nfunction Dewar:getTensionBeltNodeId()\r\n\r\n\treturn self.shapeNode\r\n\r\nend\r\n\r\n\r\nfunction Dewar:getSupportsTensionBelts()\r\n\r\n\treturn true\r\n\r\nend\r\n\r\n\r\nfunction Dewar:getMeshNodes()\r\n\r\n\treturn { self.shapeNode }\r\n\r\nend"
  },
  {
    "path": "src/placeables/RealisticLivestock_PlaceableSystem.lua",
    "content": "RealisticLivestock_PlaceableSystem = {}\r\n\r\nlocal modSettingsDirectory = g_currentModSettingsDirectory\r\n\r\nfunction RealisticLivestock_PlaceableSystem:saveToXML(_, _)\r\n\r\n    createFolder(modSettingsDirectory)\r\n    local xmlFile = XMLFile.loadIfExists(\"RealisticLivestock\", modSettingsDirectory .. \"Settings.xml\")\r\n\r\n    if xmlFile == nil then xmlFile = XMLFile.create(\"RealisticLivestock\", modSettingsDirectory .. \"Settings.xml\", \"Settings\") end\r\n\r\n    if xmlFile ~= nil then\r\n\r\n        xmlFile:setInt(\"Settings.setting(0)#maxHusbandries\", RealisticLivestock_AnimalClusterHusbandry.MAX_HUSBANDRIES)\r\n        xmlFile:save(false, true)\r\n        xmlFile:delete()\r\n\r\n    end\r\n\r\nend\r\n\r\nPlaceableSystem.saveToXML = Utils.prependedFunction(PlaceableSystem.saveToXML, RealisticLivestock_PlaceableSystem.saveToXML)"
  },
  {
    "path": "src/player/RealisticLivestock_PlayerHUDUpdater.lua",
    "content": "RealisticLivestock_PlayerHUDUpdater = {}\r\n\r\n\r\nfunction PlayerHUDUpdater:setCarriedItem(item)\r\n\r\n    self.currentlyCarriedItem = item\r\n\r\nend\r\n\r\n\r\nfunction PlayerHUDUpdater:getCarriedItem()\r\n\r\n    return self.currentlyCarriedItem\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_PlayerHUDUpdater:update()\r\n\r\n\tif Platform.playerInfo.showVehicleInfo and self.isDewar then self:showDewarInfo(self.object) end\r\n\tif Platform.playerInfo.showVehicleInfo and self.currentlyCarriedItem ~= nil then self:showHandToolInfo(self.currentlyCarriedItem) end\r\n\r\nend\r\n\r\nPlayerHUDUpdater.update = Utils.appendedFunction(PlayerHUDUpdater.update, RealisticLivestock_PlayerHUDUpdater.update)\r\n\r\n\r\nfunction RealisticLivestock_PlayerHUDUpdater:updateRaycastObject()\r\n\r\n    self.isDewar = false\r\n\r\n    if self.isAnimal == false and self.currentRaycastTarget ~= nil and entityExists(self.currentRaycastTarget) then\r\n\r\n        local object = g_currentMission:getNodeObject(self.currentRaycastTarget)\r\n\r\n        if object == nil then\r\n\r\n            if not getHasClassId(self.currentRaycastTarget, ClassIds.MESH_SPLIT_SHAPE) then\r\n\r\n                local husbandryId, animalId = getAnimalFromCollisionNode(self.currentRaycastTarget)\r\n                if husbandryId ~= nil and husbandryId ~= 0 then\r\n\r\n                    local clusterHusbandry = g_currentMission.husbandrySystem:getClusterHusbandryById(husbandryId)\r\n                    if clusterHusbandry ~= nil then\r\n                        local animal = clusterHusbandry:getClusterByAnimalId(animalId, husbandryId)\r\n                        if animal ~= nil then\r\n                            self.isAnimal = true\r\n                            self.object = animal\r\n                            return\r\n                        end\r\n                    end\r\n\r\n                end\r\n\r\n            end\r\n\r\n        elseif object:isa(Dewar) then\r\n\r\n            self.isDewar = true\r\n\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\nPlayerHUDUpdater.updateRaycastObject = Utils.appendedFunction(PlayerHUDUpdater.updateRaycastObject, RealisticLivestock_PlayerHUDUpdater.updateRaycastObject)\r\n\r\n\r\nfunction PlayerHUDUpdater:showDewarInfo(object)\r\n\r\n    if object == nil then return end\r\n\t\r\n\tlocal farmId = object:getOwnerFarmId()\r\n\tif farmId == FarmManager.SPECTATOR_FARM_ID then return end\r\n\r\n\tlocal box = self.objectBox\r\n\r\n\tbox:clear()\r\n\tbox:setTitle(g_i18n:getText(\"rl_ui_dewar\"))\r\n\r\n\tlocal farm = g_farmManager:getFarmById(farmId)\r\n\r\n\tbox:addLine(g_i18n:getText(\"fieldInfo_ownedBy\"), self:convertFarmToName(farm))\r\n\tobject:showInfo(box)\r\n\r\n\tbox:showNextFrame()\r\n\r\nend\r\n\r\n\r\nfunction PlayerHUDUpdater:showHandToolInfo(object)\r\n\r\n    if object == nil then return end\r\n\r\n    if self.handToolBox == nil then self.handToolBox = g_currentMission.hud.infoDisplay:createBox(InfoDisplayKeyValueBox) end\r\n\r\n\tlocal box = self.handToolBox\r\n\r\n\tbox:clear()\r\n\tbox:setTitle(g_i18n:getText(\"rl_ui_strawSingle\"))\r\n\r\n\tobject:showInfo(box)\r\n\r\n\tbox:showNextFrame()\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_PlayerHUDUpdater:showAnimalInfo(animal)\r\n\r\n    if self.monitorBox == nil then self.monitorBox = g_currentMission.hud.infoDisplay:createBox(InfoDisplayKeyValueBox) end\r\n\r\n    if animal.monitor.active or animal.monitor.removed then\r\n\r\n        local box = self.monitorBox\r\n        box:clear()\r\n        box:setTitle(g_i18n:getText(\"rl_ui_monitor\"))\r\n        animal:showMonitorInfo(box)\r\n        box:showNextFrame()\r\n\r\n    end\r\n\r\n    if self.geneticsBox == nil then self.geneticsBox = g_currentMission.hud.infoDisplay:createBox(RL_InfoDisplayKeyValueBox) end\r\n\r\n    local box = self.geneticsBox\r\n    box:clear()\r\n    box:setTitle(g_i18n:getText(\"rl_ui_genetics\"))\r\n    animal:showGeneticsInfo(box)\r\n    box:showNextFrame()\r\n\r\n    if self.diseaseBox == nil then self.diseaseBox = g_currentMission.hud.infoDisplay:createBox(InfoDisplayKeyValueBox) end\r\n\r\n    local box = self.diseaseBox\r\n    box:clear()\r\n\r\n    if animal.diseases ~= nil and #animal.diseases > 0 and g_diseaseManager.diseasesEnabled then\r\n        box:setTitle(g_i18n:getText(\"rl_diseases\"))\r\n        animal:showDiseasesInfo(box)\r\n        box:showNextFrame()\r\n    end\r\n\r\nend\r\n\r\nPlayerHUDUpdater.showAnimalInfo = Utils.appendedFunction(PlayerHUDUpdater.showAnimalInfo, RealisticLivestock_PlayerHUDUpdater.showAnimalInfo)\r\n\r\n\r\nfunction RealisticLivestock_PlayerHUDUpdater:delete()\r\n\r\n    if self.geneticsBox ~= nil then g_currentMission.hud.infoDisplay:destroyBox(self.geneticsBox) end\r\n    if self.diseaseBox ~= nil then g_currentMission.hud.infoDisplay:destroyBox(self.diseaseBox) end\r\n    if self.monitorBox ~= nil then g_currentMission.hud.infoDisplay:destroyBox(self.monitorBox) end\r\n    if self.handToolBox ~= nil then g_currentMission.hud.infoDisplay:destroyBox(self.handToolBox) end\r\n\r\nend\r\n\r\nPlayerHUDUpdater.delete = Utils.appendedFunction(PlayerHUDUpdater.delete, RealisticLivestock_PlayerHUDUpdater.delete)"
  },
  {
    "path": "src/player/RealisticLivestock_PlayerInputComponent.lua",
    "content": "RealisticLivestock_PlayerInputComponent = {}\r\n\r\nlocal modName = g_currentModName\r\n\r\n\r\nfunction RealisticLivestock_PlayerInputComponent:update(_)\r\n\r\n    self.dewar = nil\r\n\r\n    if self.player.isOwner then\r\n\r\n        if g_inputBinding:getContextName() == PlayerInputComponent.INPUT_CONTEXT_NAME then\r\n\r\n            local currentMission = g_currentMission\r\n            local accessHandler = currentMission.accessHandler\r\n            local vehicleInRange = currentMission.interactiveVehicleInRange\r\n            local canAccess\r\n\r\n            if vehicleInRange == nil then\r\n                canAccess = false\r\n            else\r\n                canAccess = accessHandler:canPlayerAccess(vehicleInRange, self.player)\r\n            end\r\n\r\n            local closestNode = self.player.targeter:getClosestTargetedNodeFromType(PlayerInputComponent)\r\n            self.player.hudUpdater:setCurrentRaycastTarget(closestNode)\r\n\r\n            if not canAccess and closestNode ~= nil then\r\n\r\n                local husbandryId, animalId = getAnimalFromCollisionNode(closestNode)\r\n\r\n                if husbandryId ~= nil and husbandryId ~= 0 then\r\n\r\n                    local clusterHusbandry = currentMission.husbandrySystem:getClusterHusbandryById(husbandryId)\r\n                    if clusterHusbandry ~= nil then\r\n                        local placeable = clusterHusbandry:getPlaceable()\r\n                        local animal = clusterHusbandry:getClusterByAnimalId(animalId, husbandryId)\r\n\r\n                        if animal ~= nil and (accessHandler:canFarmAccess(self.player.farmId, placeable) and animal:getRidableFilename() ~= nil) then\r\n                            self.rideablePlaceable = placeable\r\n                            self.rideableCluster = animal\r\n\r\n                            local name = animal.getName == nil and \"\" or animal:getName()\r\n                            local text = string.format(g_i18n:getText(\"action_rideAnimal\"), name)\r\n\r\n                            g_inputBinding:setActionEventText(self.enterActionId, text)\r\n                            g_inputBinding:setActionEventActive(self.enterActionId, true)\r\n                        end\r\n\r\n                    end\r\n\r\n                else\r\n\r\n                    local object = g_currentMission:getNodeObject(closestNode)\r\n\r\n                    if object ~= nil and object:isa(Dewar) and object.straws > 0 then\r\n\r\n                        self.dewar = object\r\n\r\n                        g_inputBinding:setActionEventText(self.enterActionId, g_i18n:getText(\"rl_ui_takeStraw\"))\r\n                        g_inputBinding:setActionEventActive(self.enterActionId, true)        \r\n\r\n                    end\r\n\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n\r\n    end\r\n\r\nend\r\n\r\nPlayerInputComponent.update = Utils.appendedFunction(PlayerInputComponent.update, RealisticLivestock_PlayerInputComponent.update)\r\n\r\n\r\nfunction RealisticLivestock_PlayerInputComponent:onInputEnter()\r\n\r\n    if g_time <= g_currentMission.lastInteractionTime + 200 or g_currentMission.interactiveVehicleInRange ~= nil or self.rideablePlaceable ~= nil or self.dewar == nil or HandToolAIStraw.numHeldStraws > 10 then return end\r\n\r\n    local strawType = g_handToolTypeManager:getTypeByName(modName .. \".aiStraw\")\r\n    local handTool = _G[strawType.className].new(g_currentMission:getIsServer(), g_currentMission:getIsClient())\r\n\r\n    handTool:setType(strawType)\r\n    handTool:setLoadCallback(self.onFinishedLoadStraw, self, { [\"animal\"] = self.dewar:getAnimal(), [\"dewarUniqueId\"] = self.dewar:getUniqueId() })\r\n    handTool:loadNonStoreItem({ [\"ownerFarmId\"] = g_localPlayer.farmId, [\"isRegistered\"] = false, [\"holder\"] = g_localPlayer }, RLHandTools.xmlPaths.aiStraw)\r\n\r\n    self.dewar:changeStraws(-1)\r\n\r\nend\r\n\r\nPlayerInputComponent.onInputEnter = Utils.appendedFunction(PlayerInputComponent.onInputEnter, RealisticLivestock_PlayerInputComponent.onInputEnter)\r\n\r\n\r\nfunction PlayerInputComponent:onFinishedLoadStraw(handTool, loadingState, args)\r\n\r\n    if loadingState == HandToolLoadingState.OK then\r\n        handTool:setAnimal(args.animal)\r\n        handTool:setDewarUniqueId(args.dewarUniqueId)\r\n    end\r\n\r\nend\r\n\r\n\r\nfunction RealisticLivestock_PlayerInputComponent:registerGlobalPlayerActionEvents()\r\n\r\n    VisualAnimalsDialog.register()\r\n\r\n    g_inputBinding:registerActionEvent(InputAction.VisualAnimalsDialog, VisualAnimalsDialog, VisualAnimalsDialog.show, false, true, false, true, nil, true)\r\n\r\nend\r\n\r\n\r\nPlayerInputComponent.registerGlobalPlayerActionEvents = Utils.appendedFunction(PlayerInputComponent.registerGlobalPlayerActionEvents, RealisticLivestock_PlayerInputComponent.registerGlobalPlayerActionEvents)\r\n\r\n\r\nfunction RealisticLivestock_PlayerInputComponent.onFinishedRideBlending(superFunc, _, args)\r\n    local placeable = args[1]\r\n    placeable:startRiding(args[2].farmId .. \" \" .. args[2].uniqueId, args[3])\r\nend\r\n\r\nPlayerInputComponent.onFinishedRideBlending = Utils.overwrittenFunction(PlayerInputComponent.onFinishedRideBlending, RealisticLivestock_PlayerInputComponent.onFinishedRideBlending)"
  },
  {
    "path": "src/vehicles/RealisticLivestock_VehicleSystem.lua",
    "content": "RealisticLivestock_VehicleSystem = {}\r\n\r\nfunction RealisticLivestock_VehicleSystem:save(_, _)\r\n    local indexesToRemove = {}\r\n\r\n    for i, vehicle in ipairs(self.vehicles) do\r\n        if vehicle.spec_rideable ~= nil then table.insert(indexesToRemove, i) end\r\n    end\r\n\r\n    table.sort(indexesToRemove, function(a, b)\r\n        return a > b\r\n    end)\r\n\r\n    for i in indexesToRemove do\r\n        table.remove(self.vehicles, i)\r\n    end\r\nend\r\n\r\nVehicleSystem.save = Utils.prependedFunction(VehicleSystem.save, RealisticLivestock_VehicleSystem.save)"
  },
  {
    "path": "src/vehicles/specializations/RealisticLivestock_LivestockTrailer.lua",
    "content": "RealisticLivestock_LivestockTrailer = {}\r\n\r\nfunction RealisticLivestock_LivestockTrailer:addAnimals(superFunc, animals)\r\n\r\n    for _, animal in pairs(animals) do\r\n\r\n        self:addCluster(animal)\r\n\r\n    end\r\n\r\nend\r\n\r\nLivestockTrailer.addAnimals = Utils.overwrittenFunction(LivestockTrailer.addAnimals, RealisticLivestock_LivestockTrailer.addAnimals)\r\n\r\n\r\nfunction RealisticLivestock_LivestockTrailer:addCluster(superFunc, cluster)\r\n\r\n    local clusterSystem = self.spec_livestockTrailer.clusterSystem\r\n\r\n    if cluster.numAnimals > 1 or cluster.isIndividual == nil then\r\n\r\n        for i=1, cluster.numAnimals do\r\n            local subType = g_currentMission.animalSystem:getSubTypeByIndex(cluster.subTypeIndex)\r\n            local animal = Animal.new(cluster.age, cluster.health, nil, subType.gender, cluster.subTypeIndex, cluster.reproduction, false, false, false, clusterSystem)\r\n            clusterSystem:addCluster(animal)\r\n        end\r\n        clusterSystem:updateNow()\r\n        return\r\n\r\n    end\r\n\r\n    clusterSystem:addCluster(cluster)\r\n    clusterSystem:updateNow()\r\nend\r\n\r\nLivestockTrailer.addCluster = Utils.overwrittenFunction(LivestockTrailer.addCluster, RealisticLivestock_LivestockTrailer.addCluster)\r\n\r\n\r\nfunction RealisticLivestock_LivestockTrailer:onLoadFinished(success)\r\n    if success == nil then return end\r\n\r\n    self.spec_livestockTrailer:updateAnimals()\r\nend\r\n\r\nLivestockTrailer.onLoadFinished = Utils.appendedFunction(LivestockTrailer.onLoadFinished, RealisticLivestock_LivestockTrailer.onLoadFinished)\r\n\r\n\r\n\r\nfunction RealisticLivestock_LivestockTrailer:dayChanged(superFunc)\r\n\r\n    superFunc(self)\r\n\r\n    if self.isServer then\r\n\r\n        local minTemp =  math.floor(g_currentMission.environment.weather.temperatureUpdater.currentMin)\r\n\r\n        local environment = g_currentMission.environment\r\n        local month = environment.currentPeriod + 2\r\n        local currentDayInPeriod = environment.currentDayInPeriod\r\n\r\n        if month > 12 then month = month - 12 end\r\n\r\n        local daysPerPeriod = environment.daysPerPeriod\r\n        local day = 1 + math.floor((currentDayInPeriod - 1) * (RealisticLivestock.DAYS_PER_MONTH[month] / daysPerPeriod))\r\n        local year = environment.currentYear\r\n\r\n        local spec = self.spec_livestockTrailer\r\n        local animals = spec.clusterSystem:getAnimals()\r\n\r\n        local totalChildren, deadParents, childrenToSell, childrenToSellMoney, lowHealthDeaths, oldAgeDeaths, randomDeaths, randomDeathsMoney = 0, 0, 0, 0, 0, 0, 0, 0\r\n\r\n        for _, animal in ipairs(animals) do\r\n\r\n            if animal.monthsSinceLastBirth == nil then\r\n                animal.monthsSinceLastBirth = 0\r\n            end\r\n\r\n            if animal.isParent == nil then\r\n                animal.isParent = false\r\n            end\r\n\r\n            local a, b, c, d, e, f, g, h = animal:onDayChanged(spec, self.isServer, day, month, year, currentDayInPeriod, daysPerPeriod)\r\n\r\n            totalChildren = totalChildren + a\r\n            deadParents = deadParents + b\r\n            childrenToSell = childrenToSell + c\r\n            childrenToSellMoney = childrenToSellMoney + d\r\n            lowHealthDeaths = lowHealthDeaths + e\r\n            oldAgeDeaths = oldAgeDeaths + f\r\n            randomDeaths = randomDeaths + g\r\n            randomDeathsMoney = randomDeathsMoney + h\r\n\r\n        end\r\n\r\n        local animalType = (spec.animalTypeIndex == AnimalType.COW and 1) or (spec.animalTypeIndex == AnimalType.PIG and 2) or (spec.animalTypeIndex == AnimalType.SHEEP and 3) or (spec.animalTypeIndex == AnimalType.CHICKEN and 4) or (spec.animalTypeIndex == AnimalType.HORSE and 5)\r\n\r\n        if totalChildren > 0 then\r\n            local msgText = \"\"\r\n\r\n            if animalType == 1 then msgText = totalChildren == 1 and g_i18n:getText(\"rl_ui_cow_singleBirth\") or string.format(g_i18n:getText(\"rl_ui_cow_multipleBirths\"), totalChildren) end\r\n            if animalType == 2 then msgText = totalChildren == 1 and g_i18n:getText(\"rl_ui_pig_singleBirth\") or string.format(g_i18n:getText(\"rl_ui_pig_multipleBirths\"), totalChildren) end\r\n            if animalType == 3 then msgText = totalChildren == 1 and g_i18n:getText(\"rl_ui_sheep_singleBirth\") or string.format(g_i18n:getText(\"rl_ui_sheep_multipleBirths\"), totalChildren) end\r\n            if animalType == 4 then msgText = totalChildren == 1 and g_i18n:getText(\"rl_ui_chicken_singleBirth\") or string.format(g_i18n:getText(\"rl_ui_chicken_multipleBirths\"), totalChildren) end\r\n            if animalType == 5 then msgText = totalChildren == 1 and g_i18n:getText(\"rl_ui_horse_singleBirth\") or string.format(g_i18n:getText(\"rl_ui_horse_multipleBirths\"), totalChildren) end\r\n\r\n            g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText)\r\n        end\r\n\r\n        if deadParents > 0 then\r\n\r\n            local msgText = \"\"\r\n\r\n            if animalType == 1 then msgText = deadParents == 1 and g_i18n:getText(\"rl_ui_cow_singleDeath_birth\") or string.format(g_i18n:getText(\"rl_ui_cow_multipleDeaths_birth\"), deadParents) end\r\n            if animalType == 2 then msgText = deadParents == 1 and g_i18n:getText(\"rl_ui_pig_singleDeath_birth\") or string.format(g_i18n:getText(\"rl_ui_pig_multipleDeaths_birth\"), deadParents) end\r\n            if animalType == 3 then msgText = deadParents == 1 and g_i18n:getText(\"rl_ui_sheep_singleDead_birth\") or string.format(g_i18n:getText(\"rl_ui_sheep_multipleDeaths_birth\"), deadParents) end\r\n            if animalType == 5 then msgText = deadParents == 1 and g_i18n:getText(\"rl_ui_horse_singleDeath_birth\") or string.format(g_i18n:getText(\"rl_ui_horse_multipleDeaths_birth\"), deadParents) end\r\n\r\n            g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText)\r\n        end\r\n\r\n        if childrenToSell > 0 and childrenToSellMoney > 0 then\r\n            local farmIndex = spec:getOwnerFarmId()\r\n            local farm = g_farmManager:getFarmById(farmIndex)\r\n\r\n            local msgText = \"\"\r\n\r\n            if animalType == 1 then msgText = childrenToSell == 1 and g_i18n:getText(\"rl_ui_cow_singleSold_birth\") or string.format(g_i18n:getText(\"rl_ui_cow_multipleSold_birth\"), childrenToSell) end\r\n            if animalType == 2 then msgText = childrenToSell == 1 and g_i18n:getText(\"rl_ui_pig_singleSold_birth\") or string.format(g_i18n:getText(\"rl_ui_pig_multipleSold_birth\"), childrenToSell) end\r\n            if animalType == 3 then msgText = childrenToSell == 1 and g_i18n:getText(\"rl_ui_sheep_singleSold_birth\") or string.format(g_i18n:getText(\"rl_ui_sheep_multipleSold_birth\"), childrenToSell) end\r\n            if animalType == 4 then msgText = childrenToSell == 1 and g_i18n:getText(\"rl_ui_chicken_singleSold_birth\") or string.format(g_i18n:getText(\"rl_ui_chicken_multipleSold_birth\"), childrenToSell) end\r\n            if animalType == 5 then msgText = childrenToSell == 1 and g_i18n:getText(\"rl_ui_horse_singleSold_birth\") or string.format(g_i18n:getText(\"rl_ui_horse_multipleSold_birth\"), childrenToSell) end\r\n\r\n            g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText)\r\n\r\n            if self.isServer then\r\n                g_currentMission:addMoneyChange(childrenToSellMoney, farmIndex, MoneyType.SOLD_ANIMALS, true)\r\n            else\r\n                g_client:getServerConnection():sendEvent(MoneyChangeEvent.new(childrenToSellMoney, MoneyType.SOLD_ANIMALS, farmIndex))\r\n            end\r\n\r\n            if farm ~= nil then\r\n                farm:changeBalance(childrenToSellMoney, MoneyType.SOLD_ANIMALS)\r\n            end\r\n        end\r\n\r\n        if lowHealthDeaths > 0 then\r\n\r\n            local msgText = \"\"\r\n\r\n            if animalType == 1 then msgText = lowHealthDeaths == 1 and g_i18n:getText(\"rl_ui_cow_singleDeath_health\") or string.format(g_i18n:getText(\"rl_ui_cow_multipleDeaths_health\"), lowHealthDeaths) end\r\n            if animalType == 2 then msgText = lowHealthDeaths == 1 and g_i18n:getText(\"rl_ui_pig_singleDeath_health\") or string.format(g_i18n:getText(\"rl_ui_pig_multipleDeaths_health\"), lowHealthDeaths) end\r\n            if animalType == 3 then msgText = lowHealthDeaths == 1 and g_i18n:getText(\"rl_ui_sheep_singleDeath_health\") or string.format(g_i18n:getText(\"rl_ui_sheep_multipleDeaths_health\"), lowHealthDeaths) end\r\n            if animalType == 4 then msgText = lowHealthDeaths == 1 and g_i18n:getText(\"rl_ui_chicken_singleDeath_health\") or string.format(g_i18n:getText(\"rl_ui_chicken_multipleDeaths_health\"), lowHealthDeaths) end\r\n            if animalType == 5 then msgText = lowHealthDeaths == 1 and g_i18n:getText(\"rl_ui_horse_singleDeath_health\") or string.format(g_i18n:getText(\"rl_ui_horse_multipleDeaths_health\"), lowHealthDeaths) end\r\n\r\n            g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText)\r\n\r\n        end\r\n\r\n        if oldAgeDeaths > 0 then\r\n\r\n            local msgText = \"\"\r\n\r\n            if animalType == 1 then msgText = oldAgeDeaths == 1 and g_i18n:getText(\"rl_ui_cow_singleDeath_age\") or string.format(g_i18n:getText(\"rl_ui_cow_multipleDeaths_age\"), oldAgeDeaths) end\r\n            if animalType == 2 then msgText = oldAgeDeaths == 1 and g_i18n:getText(\"rl_ui_pig_singleDeath_age\") or string.format(g_i18n:getText(\"rl_ui_pig_multipleDeaths_age\"), oldAgeDeaths) end\r\n            if animalType == 3 then msgText = oldAgeDeaths == 1 and g_i18n:getText(\"rl_ui_sheep_singleDeath_age\") or string.format(g_i18n:getText(\"rl_ui_sheep_multipleDeaths_age\"), oldAgeDeaths) end\r\n            if animalType == 4 then msgText = oldAgeDeaths == 1 and g_i18n:getText(\"rl_ui_chicken_singleDeath_age\") or string.format(g_i18n:getText(\"rl_ui_chicken_multipleDeaths_age\"), oldAgeDeaths) end\r\n            if animalType == 5 then msgText = oldAgeDeaths == 1 and g_i18n:getText(\"rl_ui_horse_singleDeath_age\") or string.format(g_i18n:getText(\"rl_ui_horse_multipleDeaths_age\"), oldAgeDeaths) end\r\n\r\n            g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText)\r\n\r\n        end\r\n\r\n        if randomDeaths > 0 then\r\n\r\n            local farmIndex = spec:getOwnerFarmId()\r\n            local farm = g_farmManager:getFarmById(farmIndex)\r\n\r\n            local msgText = \"\"\r\n\r\n            if animalType == 1 then msgText = randomDeaths == 1 and string.format(g_i18n:getText(\"rl_ui_cow_singleDeath_random\"), g_i18n:formatMoney(randomDeathsMoney, 2, true, true)) or string.format(g_i18n:getText(\"rl_ui_cow_multipleDeaths_random\"), randomDeaths, g_i18n:formatMoney(randomDeathsMoney, 2, true, true)) end\r\n            if animalType == 2 then msgText = randomDeaths == 1 and string.format(g_i18n:getText(\"rl_ui_pig_singleDeath_random\"), g_i18n:formatMoney(randomDeathsMoney, 2, true, true)) or string.format(g_i18n:getText(\"rl_ui_pig_multipleDeaths_random\"), randomDeaths, g_i18n:formatMoney(randomDeathsMoney, 2, true, true)) end\r\n            if animalType == 3 then msgText = randomDeaths == 1 and string.format(g_i18n:getText(\"rl_ui_sheep_singleDeath_random\"), g_i18n:formatMoney(randomDeathsMoney, 2, true, true)) or string.format(g_i18n:getText(\"rl_ui_sheep_multipleDeaths_random\"), randomDeaths, g_i18n:formatMoney(randomDeathsMoney, 2, true, true)) end\r\n            if animalType == 4 then msgText = randomDeaths == 1 and g_i18n:getText(\"rl_ui_chicken_singleDeath_random\") or string.format(g_i18n:getText(\"rl_ui_chicken_multipleDeaths_random\"), randomDeaths) end\r\n            if animalType == 5 then msgText = randomDeaths == 1 and string.format(g_i18n:getText(\"rl_ui_horse_singleDeath_random\"), g_i18n:formatMoney(randomDeathsMoney, 2, true, true)) or string.format(g_i18n:getText(\"rl_ui_horse_multipleDeaths_random\"), randomDeaths, g_i18n:formatMoney(randomDeathsMoney, 2, true, true)) end\r\n\r\n            g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, msgText)\r\n\r\n            if randomDeathsMoney > 0 then\r\n\r\n                if self.isServer then\r\n                    g_currentMission:addMoneyChange(randomDeathsMoney, farmIndex, MoneyType.SOLD_ANIMALS, true)\r\n                else\r\n                    g_client:getServerConnection():sendEvent(MoneyChangeEvent.new(randomDeathsMoney, MoneyType.SOLD_ANIMALS, farmIndex))\r\n                end\r\n\r\n                if farm ~= nil then\r\n                    farm:changeBalance(randomDeathsMoney, MoneyType.SOLD_ANIMALS)\r\n                end\r\n\r\n            end\r\n\r\n        end\r\n\r\n\r\n        spec.minTemp = minTemp\r\n\r\n        if randomDeaths > 0 or oldAgeDeaths > 0 or lowHealthDeaths > 0 or deadParents > 0 or totalChildren > 0 then spec:updateAnimals() end\r\n\r\n        self:raiseActive()\r\n    end\r\n\r\nend\r\n\r\n--LivestockTrailer.dayChanged = Utils.overwrittenFunction(LivestockTrailer.dayChanged, RealisticLivestock_LivestockTrailer.dayChanged)"
  },
  {
    "path": "src/vehicles/specializations/Rideable.lua",
    "content": "RL_Rideable = {}\r\n\r\n\r\nfunction RL_Rideable:onLoad(save)\r\n\r\n\tif save == nil then return end\r\n\r\n\tlocal animal = Animal.loadFromXMLFile(save.xmlFile, save.key .. \".rideable.animal\")\r\n\r\n\tself:setCluster(animal)\r\n\r\nend\r\n\r\nRideable.onLoad = Utils.appendedFunction(Rideable.onLoad, RL_Rideable.onLoad)"
  },
  {
    "path": "translations/translation_br.xml",
    "content": "<l10n>\n\t<texts>\n\t\t<!-- VACAS -->\n\t\t\n\t\t<text name=\"fillType_bull\" text=\"Touro\"/>\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Touro Pardo Suíço\"/>\n\t\t<text name=\"fillType_bull_holstein\" text=\"Touro Holstein\"/>\n\t\t<text name=\"fillType_bull_angus\" text=\"Touro Angus\"/>\n\t\t<text name=\"fillType_bull_limousin\" text=\"Touro Limousin\"/>\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bull\"/>\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Touros gostam de capim, feno e RMT.\"/>\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Este é um bezerro masculino.\"/>\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Touros que são saudáveis ​​e mais velhos que 12 meses podem reproduzir.\"/>\n\n\t\t<!-- BÚFALO-ASIÁTICO -->\n\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Touro Búfalo-Asiático\"/>\n\n\t\t<!-- PORCOS -->\n\t\t\n\t\t<text name=\"fillType_boar\" text=\"Porco\"/>\n\t\t<text name=\"fillType_boar_landrace\" text=\"Porco Landrace\"/>\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Porco Black-Pied\"/>\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Porco Berkshire\"/>\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Porcos que são saudáveis e mais velhos que 8 meses podem reproduzir.\"/>\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Porcos comem quase tudo. Você pode alimentá-los com milho, trigo, cevada, canola, girassóis, soja, batatas, sorgo e beterraba-sacarina.\"/>\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Este é um leitão.\"/>\n\n\t\t<!-- OVELHA -->\n\t\t\n\t\t<text name=\"fillType_ram\" text=\"Carneiro\"/>\n\t\t<text name=\"fillType_ram_landrace\" text=\"Carneiro Landrace\"/>\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Carneiro Steinschaf\"/>\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Carneiro Black Welsh Mountain\"/>\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Carneiro Swiss Black-Brown Mountain\"/>\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Carneiros comem capim e feno.\"/>\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Este é um cordeiro macho.\"/>\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Carneiros que são saudáveis e mais velhos que 5 meses podem reproduzir.\"/>\n\n\t\t<!-- CABRA -->\n\n\t\t<text name=\"fillType_ram_goat\" text=\"Cabra\"/>\n\t\t\n\t\t<!-- CAVALOS -->\n\t\t\n\t\t<text name=\"fillType_stallion\" text=\"Garanhão\"/>\n\t\t<text name=\"fillType_stallion_gray\" text=\"Garanhão Cinza\"/>\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Garanhão Pinto\"/>\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Garanhão Palomino\"/>\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Garanhão Chestnut\"/>\n\t\t<text name=\"fillType_stallion_bay\" text=\"Garanhão Bay\"/>\n\t\t<text name=\"fillType_stallion_black\" text=\"Garanhão Preto\"/>\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Garanhão Seal Brown\"/>\n\t\t<text name=\"fillType_stallion_dun\" text=\"Garanhão Dun\"/>\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Garanhões gostam de feno, aveia e sorgo.\"/>\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Garanhões podem ser vendido com lucro.\"/>\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Garanhões que são saudáveis e mais velhos que 36 meses podem reproduzir.\"/>\n\n\n    <!-- UI -->\n\n\t\t\n    <text name=\"input_VisualAnimalsDialog\" text=\"Alterar Quantidade Visual de Animais\"/>\n    <text name=\"rl_button_apply\" text=\"Aplicar\"/>\n    <text name=\"rl_button_confirm\" text=\"Confirmar\"/>\n    <text name=\"rl_button_recommended\" text=\"Recomendado\"/>\n    <text name=\"rl_button_cancel\" text=\"Cancelar\"/>\n    <text name=\"rl_button_random\" text=\"Aleatório\"/>\n    <text name=\"rl_dialog_title\" text=\"Definir Número Máximo para o Visual de Animais\"/>\n\n    <text name=\"rl_ui_unhealthy\" text=\"Saúde muito baixa\"/>\n    <text name=\"rl_ui_unhealthyBracketed\" text=\"Não (saúde muito baixa)\"/>\n    <text name=\"rl_ui_noMaleAnimal\" text=\"Nenhum animal macho adequado\"/>\n    <text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Não (nenhum animal macho adequado)\"/>\n    <text name=\"rl_ui_recoveringLastBirth\" text=\"Recuperando-se do último parto\"/>\n    <text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Não (recuperando-se do último parto)\"/>\n    <text name=\"rl_ui_tooYoung\" text=\"Muito jovem\"/>\n    <text name=\"rl_ui_tooYoungBracketed\" text=\"Não (muito jovem)\"/>\n    <text name=\"rl_ui_pregnant\" text=\"Grávida\"/>\n    <text name=\"rl_ui_lactating\" text=\"Lactando\"/>\n    <text name=\"rl_ui_canReproduce\" text=\"Pode reproduzir\"/>\n    <text name=\"rl_ui_impregnatedBy\" text=\"Impregnada por\"/>\n    <text name=\"rl_ui_unknown\" text=\"Desconhecido\"/>\n    <text name=\"rl_ui_yes\" text=\"Sim\"/>\n    <text name=\"rl_ui_no\" text=\"Não\"/>\n    <text name=\"rl_ui_mother\" text=\"Mãe\"/>\n    <text name=\"rl_ui_father\" text=\"Pai\"/>\n    <text name=\"rl_ui_uniqueId\" text=\"ID Única\"/>\n    <text name=\"rl_ui_farmId\" text=\"ID da Fazenda\"/>\n    <text name=\"rl_ui_gender\" text=\"Gênero\"/>\n    <text name=\"rl_ui_male\" text=\"Macho\"/>\n    <text name=\"rl_ui_female\" text=\"Fêmea\"/>\n    <text name=\"rl_ui_weight\" text=\"Peso\"/>\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Peso alvo\"/>\n    <text name=\"rl_ui_value\" text=\"Valor\"/>\n    <text name=\"rl_ui_valuePerKilo\" text=\"Valor por kg\"/>\n\t\t<text name=\"rl_ui_genetics\" text=\"Genéticas\"/>\n\t\t<text name=\"rl_ui_overall\" text=\"Geral\"/>\n\t\t<text name=\"rl_ui_rename\" text=\"Mudar Nome\"/>\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Não foi possível encontrar o animal\"/>\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Animais infecundáveis ​​no curral\"/>\n\t\t\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Qualidade do Reprodutor\"/>\n\t\t<text name=\"rl_ui_birthday\" text=\"Nascimento\"/>\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Esperado\"/>\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Esperando\"/>\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"bebê\"/>\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"bebês\"/>\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Origem\"/>\n\t\t<text name=\"rl_ui_months\" text=\"meses\"/>\n\t\t<text name=\"rl_ui_month\" text=\"mês\"/>\n\t\t<text name=\"rl_ui_years\" text=\"anos\"/>\n\t\t<text name=\"rl_ui_year\" text=\"ano\"/>\n\n\t\t<text name=\"rl_ui_milk\" text=\"Produção de Leite\"/>\n\t\t<text name=\"rl_ui_wool\" text=\"Produção de Lã\"/>\n\t\t<text name=\"rl_ui_eggs\" text=\"Produção de Ovo\"/>\n\t\t<text name=\"rl_ui_metabolism\" text=\"Metabolismo\"/>\n\t\t<text name=\"rl_ui_meat\" text=\"Qualidade\"/>\n\t\t<text name=\"rl_ui_health\" text=\"Saúde\"/>\n\t\t<text name=\"rl_ui_fertility\" text=\"Fertilidade\"/>\n\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Extremamente baixo\"/>\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Muito baixo\"/>\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Baixo\"/>\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Mediano\"/>\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Alto\"/>\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Muito alto\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Extremamente alto\"/>\n\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Extremamente ruim\"/>\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Muito ruim\"/>\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Ruim\"/>\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Bom\"/>\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Muito bom\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Extremamente bom\"/>\n\t\t\n\t\t<text name=\"rl_ui_buySelected\" text=\"Comprar selecionado\"/>\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Vender selecionado\"/>\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Mover selecionado\"/>\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Você tem certeza que quer comprar %s animais por %s?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Você tem certeza que quer vender %s animais por %s?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Você tem certeza que quer mover %s animais?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s animais comprados por %s\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s animais vendidos por %s\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s animais movidos\" tag=\"format\"/>\n\n\t\t<text name=\"rl_ui_monitor\" text=\"Monitor\"/>\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Monitor fee\"/>\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Apply Monitor\"/>\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Remove Monitor\"/>\n\t\t<text name=\"rl_ui_input_food\" text=\"Food\"/>\n\t\t<text name=\"rl_ui_input_water\" text=\"Water\"/>\n\t\t<text name=\"rl_ui_input_straw\" text=\"Straw\"/>\n\t\t<text name=\"rl_ui_output_milk\" text=\"Milk\"/>\n\t\t<text name=\"rl_ui_output_manure\" text=\"Manure\"/>\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Liquid manure\"/>\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Eggs\"/>\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Wool\"/>\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Goat milk\"/>\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / day\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / month\" tag=\"format\"/>\n\n\t\t<text name=\"rl_ui_animalType\" text=\"Type\"/>\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Monitored\"/>\n\t\t<text name=\"rl_ui_production\" text=\"Products\"/>\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Apply All Monitors\"/>\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Remove All Monitors\"/>\n\t\t<text name=\"rl_ui_fee\" text=\"Fee\"/>\n\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Left Ear Tag\"/>\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Right Ear Tag\"/>\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Background Colour\"/>\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Background Hue\"/>\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Background RGB\"/>\n\t\t<text name=\"rl_ui_textColour\" text=\"Text Colour\"/>\n\t\t<text name=\"rl_ui_textHue\" text=\"Text Hue\"/>\n\t\t<text name=\"rl_ui_textRgb\" text=\"Text RGB\"/>\n\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s months\"/>\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s month\"/>\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Not Pregnant\"/>\n\t\t<text name=\"rl_ui_any\" text=\"Any\"/>\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Pregnancy\"/>\n\t\t<text name=\"rl_ui_productivity\" text=\"Productivity\"/>\n\t\t<text name=\"rl_ui_selectAll\" text=\"Select All\"/>\n\t\t<text name=\"rl_ui_selectNone\" text=\"Select None\"/>\n\t\t<text name=\"rl_ui_filters\" text=\"Filters\"/>\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"No Name\"/>\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Has Name\"/>\n\n\n\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\n\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\n\n\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\n\n\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\n\n\n\t\t<!-- AI - BUYING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\n\n\n\t\t<!-- AI - SELLING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\n\n\n\t\t<!-- AI - CASTRATING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\n\n\n\t\t<!-- AI - NAMING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\n\n\n\t\t<!-- AI - AI -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\n    \n\n\t\t<!--  CONFIGURAÇÕES  -->\n\t\t\n\n\t\t<text name=\"rl_settings\" text=\"Pecuária Realista\"/>\n\n\t\t<text name=\"rl_settings_off\" text=\"Desligado\"/>\n\t\t<text name=\"rl_settings_on\" text=\"Ligado\"/>\n\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Remoção de Animais\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Os animais não serão removidos devido à gravidez, saúde, idade ou acidentes\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Os animais serão removidos devido à gravidez, saúde, idade ou acidentes\"/>\n\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Chance de Acidentes\"/>\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Alterar a probabilidade de animais serem removidos devido a acidentes aleatórios\"/>\n\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Escala de Alimentos\"/>\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Alterar a quantidade de alimentos consumidos pelos animais\"/>\n\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Max Dealer Animals\"/>\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Change the maximum number of animals the animal dealer will have in stock per animal type\"/>\n\n\t\t<text name=\"rl_settings_resetDealer_label\" text=\"Reset Animal Dealer\"/>\n\t\t<text name=\"rl_settings_resetDealer_tooltip\" text=\"Remove all the dealer's animals and replenish the stock with new animals\"/>\n\t\t<text name=\"rl_settings_resetDealer_text\" text=\"Reset Animal Dealer\"/>\n\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Change Tag Colour\"/>\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Change the colour of ear tags\"/>\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Change Tag Colour\"/>\n\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Export To CSV\"/>\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Export stats to CSV\"/>\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Export To CSV\"/>\n\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\n\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\n\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\n\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\n\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\n\n\n\n\t\t<!--  HELP  -->\n\n\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitors\"/>\n\t\t<text name=\"rl_help_monitors_1\" text=\"In order to see the majority of an animal's statistics, you need to apply a monitoring tag to it, which can be done through the animal menu (where you buy and sell animals). Monitoring tags are also visually shown on the animal, on their left ear next to their ID tag.\"/>\n\t\t<text name=\"rl_help_monitors_2\" text=\"Monitoring tags will result in important information being shown to you, including health, weight, lactation, production, and straw, food and water requirements.\"/>\n\t\t<text name=\"rl_help_monitors_3\" text=\"Applying a tag to an animal will cost you a small monthly subscription based on the animal's species. If you choose to remove the tag, the tag will be removed at the start of the next month.\"/>\n\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Pregnancy\"/>\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Female animals all require at least 1 male animal in order to potentially become pregnant. Both animals must be of the correct age and health, and must be from the same species. Breeding between different breeds (eg: holstein cow and angus bull) is allowed.\"/>\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Inbreeding is not allowed. If a male and a female are directly related, they will not breed together.\"/>\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"The chance for a female to become pregnant depends upon both her and the male's fertility. A female with higher fertility also has a significantly higher chance of producing more offspring at once.\"/>\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Once a female becomes pregnant, she will start to carry her offspring. You can view the expected date of pregnancy and the number of offspring by looking at the animal in the pen, or by clicking on her in the animal menu.\"/>\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"When she reaches her due date, she will give birth to her babies. However, the newborns have a certain chance of being removed, as does the mother if the pregnancy goes badly. Newborns that are born in an overcrowded pen will be sold automatically.\"/>\n\n\t\t<text name=\"rl_help_production_title\" text=\"Production\"/>\n\t\t<text name=\"rl_help_production_1\" text=\"Cows of any breed will only begin to produce milk after giving birth. Once she has given birth, the cow will produce milk exponentially for 3 months, then her production will slowly drop for the next 6 months. 10 months after pregnancy, the cow will stop producing milk until her next pregnancy.\"/>\n\t\t<text name=\"rl_help_production_2\" text=\"Sheep will produce wool in warm months. In cold months, under 12C, they will not produce wool.\"/>\n\t\t<text name=\"rl_help_production_3\" text=\"Milk, wool and egg production is further affected by the animal's genetics. An animal with good production genetics will produce more, whereas animal with bad genetics wont produce much at all.\"/>\n\n\t\t<text name=\"rl_help_weight_title\" text=\"Weight\"/>\n\t\t<text name=\"rl_help_weight_1\" text=\"Animals have a certain weight that which is affected by how much they eat and drink. Every species and breed has its own average weight which affects the weight of each animal.\"/>\n\t\t<text name=\"rl_help_weight_2\" text=\"Weight increases the value of the animal, and a low weight affects its chance of being removed each month.\"/>\n\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetics\"/>\n\t\t<text name=\"rl_help_genetics_1\" text=\"Each animal has 4 different genetic values; metabolism, fertility, health and quality. Genetics are mixed between the mother and father and then passed down to their children.\"/>\n\t\t<text name=\"rl_help_genetics_2\" text=\"Metabolism affects the animal's ability to convert food into weight, and affects the amount it eats.\"/>\n\t\t<text name=\"rl_help_genetics_3\" text=\"Fertility affects the animal's chance of getting pregnant, or getting a female pregnant, and the number of offspring it will produce.\"/>\n\t\t<text name=\"rl_help_genetics_4\" text=\"Health affects the animal's health and its chance of being removed each month. An animal with higher health genetics will also have a longer lifespan.\"/>\n\t\t<text name=\"rl_help_genetics_5\" text=\"Quality affects the value of the animal itself, an animal with higher quality will sell for much more.\"/>\n\t\t<text name=\"rl_help_genetics_6\" text=\"Cattle, sheep and chicken also have production genetics, which affects how much milk/eggs/wool they produce.\"/>\n\n\n\n\t\t<!--  DISEASES  -->\n\n\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\n\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\n\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\n\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\n\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\n\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\n\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\n\n\n\n\t\t<!--  MESSAGES  -->\n\n\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\n\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\n\n\n\n\t\t<!--  DEATHS  -->\n\n\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\n\t\t\n\t</texts>\n</l10n>\n"
  },
  {
    "path": "translations/translation_cz.xml",
    "content": "<l10n>\r\n\t<texts>\r\n\t\t<!-- COWS -->\r\n\r\n\t\t<text name=\"fillType_bull\" text=\"Býk\"/>\r\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Býk plemene Švýcarské hnědé\"/>\r\n\t\t<text name=\"fillType_bull_holstein\" text=\"Býk plemene Holštýn\"/>\r\n\t\t<text name=\"fillType_bull_angus\" text=\"Býk plemene Angus\"/>\r\n\t\t<text name=\"fillType_bull_limousin\" text=\"Býk plemene Limousin\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Herefordský býk\"/>\r\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Býci mají rádi trávu, seno a TMR (směsná krmná dávka).\"/>\r\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Toto je tele býčka.\"/>\r\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Býci, kteří jsou zdraví a starší 12 měsíců, se mohou rozmnožovat.\"/>\r\n\r\n\t\t<!-- WATER BUFFALOS -->\r\n\r\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Býk vodního buvola\"/>\r\n\r\n\t\t<!-- PIGS -->\r\n\r\n\t\t<text name=\"fillType_boar\" text=\"Vepř\"/>\r\n\t\t<text name=\"fillType_boar_landrace\" text=\"Vepř plemene Landrace\"/>\r\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Černostrakatý vepř\"/>\r\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Vepř plemene Berkshire\"/>\r\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Vepři, kteří jsou zdraví a starší 8 měsíců, se mohou rozmnožovat.\"/>\r\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Vepři žerou téměř všechno. Můžete je krmit kukuřicí, pšenicí, ječmenem, řepkou, slunečnicí, sójou, bramborami, čirokem a cukrovou řepou.\"/>\r\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Toto je sele vepře.\"/>\r\n\r\n\t\t<!-- SHEEP -->\r\n\r\n\t\t<text name=\"fillType_ram\" text=\"Beran\"/>\r\n\t\t<text name=\"fillType_ram_landrace\" text=\"Beran plemene Bentheim\"/>\r\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Beran plemene Steinschaf\"/>\r\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Beran plemene černé horské\"/>\r\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Beran plemene černohnědé horské\"/>\r\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Berani žerou trávu a seno.\"/>\r\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Toto je jehně berana.\"/>\r\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Berani, kteří jsou zdraví a starší 5 měsíců, se mohou rozmnožovat.\"/>\r\n\r\n\t\t<!-- GOATS -->\r\n\r\n\t\t<text name=\"fillType_ram_goat\" text=\"Kozel\"/>\r\n\r\n\t\t<!-- HORSES -->\r\n\r\n\t\t<text name=\"fillType_stallion\" text=\"Hřebec\"/>\r\n\t\t<text name=\"fillType_stallion_gray\" text=\"Hřebec šedák\"/>\r\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Strakatý hřebec\"/>\r\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Hřebec Palomino\"/>\r\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Hřebec ryzák\"/>\r\n\t\t<text name=\"fillType_stallion_bay\" text=\"Hřebec hnědák\"/>\r\n\t\t<text name=\"fillType_stallion_black\" text=\"Hřebec vraník\"/>\r\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Tmavohnědý hřebec\"/>\r\n\t\t<text name=\"fillType_stallion_dun\" text=\"Hřebec plavák\"/>\r\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Hřebci mají rádi seno, oves a čirok.\"/>\r\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Hřebci se dají prodat se ziskem.\"/>\r\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Hřebci, kteří jsou zdraví a starší 36 měsíců, se mohou rozmnožovat.\"/>\r\n\r\n\r\n\t\t<!-- UI -->\r\n\r\n\r\n\t\t<text name=\"input_VisualAnimalsDialog\" text=\"Změnit množství zobrazených zvířat\"/>\r\n\t\t<text name=\"rl_button_apply\" text=\"Použít\"/>\r\n\t\t<text name=\"rl_button_confirm\" text=\"Potvrdit\"/>\r\n\t\t<text name=\"rl_button_recommended\" text=\"Doporučené\"/>\r\n\t\t<text name=\"rl_button_cancel\" text=\"Zrušit\"/>\r\n\t\t<text name=\"rl_button_random\" text=\"Náhodné\"/>\r\n\t\t<text name=\"rl_dialog_title\" text=\"Nastavit maximální počet zobrazených zvířat\"/>\r\n\r\n\t\t<text name=\"rl_ui_unhealthy\" text=\"Příliš nezdravé\"/>\r\n\t\t<text name=\"rl_ui_unhealthyBracketed\" text=\"Ne (příliš nezdravé)\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimal\" text=\"Žádný vhodný samec\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Ne (žádný vhodný samec)\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirth\" text=\"Zotavuje se z posledního porodu\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Ne (zotavuje se z posledního porodu)\"/>\r\n\t\t<text name=\"rl_ui_tooYoung\" text=\"Příliš mladé\"/>\r\n\t\t<text name=\"rl_ui_tooYoungBracketed\" text=\"Ne (příliš mladé)\"/>\r\n\t\t<text name=\"rl_ui_pregnant\" text=\"Březí\"/>\r\n\t\t<text name=\"rl_ui_lactating\" text=\"Kojící\"/>\r\n\t\t<text name=\"rl_ui_canReproduce\" text=\"Možnost reprodukce\"/>\r\n\t\t<text name=\"rl_ui_impregnatedBy\" text=\"Oplodněn/a kým\"/>\r\n\t\t<text name=\"rl_ui_unknown\" text=\"Neznámé\"/>\r\n\t\t<text name=\"rl_ui_yes\" text=\"Ano\"/>\r\n\t\t<text name=\"rl_ui_no\" text=\"Ne\"/>\r\n\t\t<text name=\"rl_ui_mother\" text=\"Matka\"/>\r\n\t\t<text name=\"rl_ui_father\" text=\"Otec\"/>\r\n\t\t<text name=\"rl_ui_uniqueId\" text=\"Jedinečné ID\"/>\r\n\t\t<text name=\"rl_ui_farmId\" text=\"ID farmy\"/>\r\n\t\t<text name=\"rl_ui_gender\" text=\"Pohlaví\"/>\r\n\t\t<text name=\"rl_ui_male\" text=\"Samec\"/>\r\n\t\t<text name=\"rl_ui_female\" text=\"Samice\"/>\r\n\t\t<text name=\"rl_ui_weight\" text=\"Váha\"/>\r\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Cílová váha\"/>\r\n\t\t<text name=\"rl_ui_value\" text=\"Hodnota\"/>\r\n\t\t<text name=\"rl_ui_valuePerKilo\" text=\"Hodnota za kg\"/>\r\n\t\t<text name=\"rl_ui_genetics\" text=\"Genetika\"/>\r\n\t\t<text name=\"rl_ui_overall\" text=\"Celkově\"/>\r\n\t\t<text name=\"rl_ui_rename\" text=\"Změnit jméno\"/>\r\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Zvíře nenalezeno\"/>\r\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Zvířata ve výběhu schopná oplodnění\"/>\r\n\r\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Chovatelská kvalita\"/>\r\n\t\t<text name=\"rl_ui_birthday\" text=\"Narozeniny\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Porod\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Čeká\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"Mládě\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"Mláďata\"/>\r\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Původ\"/>\r\n\t\t<text name=\"rl_ui_months\" text=\"měsíců\"/>\r\n\t\t<text name=\"rl_ui_month\" text=\"měsíc\"/>\r\n\t\t<text name=\"rl_ui_years\" text=\"roky\"/>\r\n\t\t<text name=\"rl_ui_year\" text=\"rok\"/>\r\n\r\n\t\t<text name=\"rl_ui_milk\" text=\"Produkce mléka\"/>\r\n\t\t<text name=\"rl_ui_wool\" text=\"Produkce vlny\"/>\r\n\t\t<text name=\"rl_ui_eggs\" text=\"Produkce vajec\"/>\r\n\t\t<text name=\"rl_ui_metabolism\" text=\"Životospráva\"/>\r\n\t\t<text name=\"rl_ui_meat\" text=\"Kvalita\"/>\r\n\t\t<text name=\"rl_ui_health\" text=\"Kondice\"/>\r\n\t\t<text name=\"rl_ui_fertility\" text=\"Plodnost\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Neplodná\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Extrémně nízká\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Velmi nízká\"/>\r\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Nízká\"/>\r\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Průměrná\"/>\r\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Vysoká\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Velmi vysoká\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Extrémně vysoká\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Extrémně špatná\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Velmi špatná\"/>\r\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Špatná\"/>\r\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Dobrá\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Velmi dobrá\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Extrémně dobrá\"/>\r\n\r\n\t\t<text name=\"rl_ui_buySelected\" text=\"Koupit vybrané\"/>\r\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Prodat vybrané\"/>\r\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Přesunout vybrané\"/>\r\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Jste si jistý/á, že chcete koupit %s zvířat za %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Jste si jistý/á, že chcete prodat %s zvířat za %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Jste si jistý/á, že chcete přesunout %s zvířat?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s zvířat koupeno za %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s zvířat prodáno za %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s zvířat přesunuto\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Monitoring\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Monitorovaná předplatná\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Monitorovaná předplatná\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Poplatek za monitorování\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Použít monitor\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Odebrat monitor\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Krmivo\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"Voda\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Sláma\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Mléko\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Hnůj\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Močůvka\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Vejce\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Vlna\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Kozí mléko\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / den\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / měsíc\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Typ\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Monitorováno\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Produkty\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Použít všechny monitory\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Odebrat všechny monitory\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Poplatek\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Levá ušní značka\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Pravá ušní značka\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Barva pozadí\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Odstín pozadí\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"RGB pozadí\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Barva textu\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Odstín textu\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"RGB textu\"/>\r\n\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s měsíců\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s měsíc\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Není březí\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"Jakýkoli\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Březost\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Produktivita\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Vybrat vše\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Zrušit výběr\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Filtry\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"Bez jména\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Má jméno\"/>\r\n\r\n\r\n\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\r\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\r\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\r\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\r\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\r\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\r\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\r\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\r\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\r\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\r\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\r\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\r\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\r\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\r\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\r\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\r\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\r\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\r\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\r\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\r\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\r\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\r\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\r\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\r\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\r\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\r\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\r\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\r\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\r\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\r\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\r\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\r\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\r\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\r\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\r\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\r\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\r\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\r\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\r\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\r\n\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\r\n\r\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\r\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\r\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\r\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\r\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\r\n\r\n\r\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\r\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\r\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\r\n\r\n\r\n\t\t<!-- AI - BUYING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - SELLING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - CASTRATING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - NAMING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\r\n\r\n\r\n\t\t<!-- AI - AI -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\r\n\r\n\t\t<!--  SETTINGS  -->\r\n\r\n\r\n\t\t<text name=\"rl_settings\" text=\"Realistický chov dobytka\"/>\r\n\r\n\t\t<text name=\"rl_settings_off\" text=\"Vypnuto\"/>\r\n\t\t<text name=\"rl_settings_on\" text=\"Zapnuto\"/>\r\n\r\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Úhyn zvířat\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Zvířata nebudou odstraňována kvůli březosti, zdraví, věku nebo nehodám\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Zvířata budou odstraňována kvůli březosti, zdraví, věku nebo nehodám\"/>\r\n\r\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Pravděpodobnost nehody\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Změnit pravděpodobnost úhynu zvířat kvůli náhodným nehodám\"/>\r\n\t\t\r\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Množství potravy\"/>\r\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Změna množství potravy, kterou zvířata konzumují\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Maximum zvířat u obchodníka\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Změna maximálního počtu zvířat, která bude mít prodejce zvířat na skladě pro každý typ zvířete.\"/>\r\n\r\n\t\t<text name=\"rl_settings_resetDealer_label\" text=\"Resetovat obchodníka se zvířaty\"/>\r\n\t\t<text name=\"rl_settings_resetDealer_tooltip\" text=\"Odstranit všechna zvířata u prodejce a doplnit zásoby o nová zvířata\"/>\r\n\t\t<text name=\"rl_settings_resetDealer_text\" text=\"Resetovat obchodníka se zvířaty\"/>\r\n\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Změnit barvu značky\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Změnit barvu ušních značek\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Změnit barvu značky\"/>\r\n\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Exportovat do CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Exportovat statistiky do CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Exportovat do CSV\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\r\n\r\n\r\n\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitoring\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"Abyste viděli většinu statistik zvířete, musíte na něj použít monitorovací značku, což lze provést v nabídce zvířat (kde nakupujete a prodáváte zvířata). Monitorovací štítky se na zvířeti zobrazují také vizuálně, a to na jeho levém uchu vedle identifikačního štítku.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"Sledování značek vám poskytne důležité informace, včetně informací o zdravotním stavu, hmotnosti, laktaci, produkci a požadavcích na slámu, krmivo a vodu.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"Aplikace značky na zvíře vás bude stát malé měsíční předplatné podle druhu zvířete. Pokud se rozhodnete značku odstranit, bude odstraněna na začátku následujícího měsíce.\"/>\r\n\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Těhotenství\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Všechny samice potřebují alespoň jednoho samce, aby mohly zabřeznout. Obě zvířata musí být správného věku a zdravotního stavu a musí být stejného druhu. Chov mezi různými plemeny (např. holštýnská kráva a býk plemene angus) je povolen.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Příbuzenská plemenitba není povolena. Pokud jsou samec a samice v přímém příbuzenském vztahu, nebudou se spolu pářit.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"Šance samice na otěhotnění závisí na její plodnosti i na plodnosti samce. Samice s vyšší plodností má také výrazně vyšší šanci, že se jí narodí více potomků najednou.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Jakmile samice zabřezne, začne nosit potomky. Předpokládané datum březosti a počet potomků si můžete prohlédnout při pohledu na zvíře v ohradě nebo kliknutím na něj v nabídce zvířat.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"Až dosáhne termínu porodu, porodí své děti. Novorozenci však mají určitou šanci, že budou odebráni, stejně jako matka, pokud těhotenství probíhá špatně. Novorozenci, kteří se narodí v přeplněné ohradě, budou automaticky prodáni.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Produkce\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Krávy jakéhokoli plemene začnou produkovat mléko až po porodu. Po porodu bude kráva produkovat mléko exponenciálně po dobu 3 měsíců, poté bude její produkce po dobu dalších 6 měsíců pomalu klesat. Po 10 měsících od zabřeznutí kráva přestane produkovat mléko až do dalšího zabřeznutí.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Ovce produkují vlnu v teplých měsících. V chladných měsících, při teplotě pod 12 °C, vlnu neprodukují.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"Produkci mléka, vlny a vajec dále ovlivňuje genetika zvířat. Zvíře s dobrou genetikou bude produkovat více, zatímco zvíře se špatnou genetikou nebude produkovat vůbec nic.\"/>\r\n\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Hmotnost\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Zvířata mají určitou hmotnost, která je ovlivněna množstvím jejich potravy a pití. Každý druh a plemeno má svou vlastní průměrnou hmotnost, která ovlivňuje hmotnost každého zvířete.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Hmotnost zvyšuje hodnotu zvířete a nízká hmotnost ovlivňuje šanci, že bude každý měsíc odebráno.\"/>\r\n\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetika\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Každé zvíře má 4 různé genetické hodnoty: metabolismus, plodnost, zdraví a kvalitu. Genetika se mísí mezi matkou a otcem a poté se předává jejich dětem.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Metabolismus ovlivňuje schopnost zvířete přeměnit potravu na hmotnost a ovlivňuje množství, které zvíře sní.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"Plodnost ovlivňuje šanci zvířete zabřeznout nebo zabřeznutí samice a počet potomků, které zplodí.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"Zdravotní stav ovlivňuje zdraví zvířete a jeho šanci na odstranění každý měsíc. Zvíře s vyšší zdravotní genetikou bude mít také delší životnost.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"Kvalita ovlivňuje hodnotu samotného zvířete, zvíře s vyšší kvalitou se prodává za mnohem vyšší cenu.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Skot, ovce a kuřata mají také produkční genetiku, která ovlivňuje množství mléka/vajíček/vlny, které produkují.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\r\n\r\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\r\n\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\r\n\r\n\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\r\n\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\r\n\r\n\r\n\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\r\n\r\n\t</texts>\r\n</l10n>"
  },
  {
    "path": "translations/translation_da.xml",
    "content": "<l10n>\r\n    <texts>\r\n        <!-- KØER -->\r\n\r\n        <text name=\"fillType_bull\" text=\"Tyr\"/>\r\n        <text name=\"fillType_bull_swiss_brown\" text=\"Brun-Swiss Tyr\"/>\r\n        <text name=\"fillType_bull_holstein\" text=\"Holstein Tyr\"/>\r\n        <text name=\"fillType_bull_angus\" text=\"Angus Tyr\"/>\r\n        <text name=\"fillType_bull_limousin\" text=\"Limousin Tyr\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bull\"/>\r\n        <text name=\"animal_descriptionBullFeed\" text=\"Tyre kan lide græs, hø og TMR.\"/>\r\n        <text name=\"animal_descriptionBullYoung\" text=\"Dette er en han-kalv.\"/>\r\n        <text name=\"animal_descriptionBullReproduction\" text=\"Tyre, der er raske og ældre end 12 måneder, kan reproducere.\"/>\r\n\r\n        <!-- VANDBUFALOER -->\r\n\r\n        <text name=\"fillType_bull_waterbuffalo\" text=\"Vandbuffalo Tyr\"/>\r\n\r\n        <!-- GRIS -->\r\n\r\n        <text name=\"fillType_boar\" text=\"Orne\"/>\r\n        <text name=\"fillType_boar_landrace\" text=\"Landrace Orne\"/>\r\n        <text name=\"fillType_boar_black_pied\" text=\"Sort-fodet Orne\"/>\r\n        <text name=\"fillType_boar_berkshire\" text=\"Berkshire Orne\"/>\r\n        <text name=\"animal_descriptionBoarReproduction\" text=\"Orner, der er raske og ældre end 8 måneder, kan reproducere.\"/>\r\n        <text name=\"animal_descriptionBoarFeed\" text=\"Orner spiser næsten alt. Du kan fodre dem med majs, hvede, byg, raps, solsikker, sojabønner, kartofler, sorghum og sukkerroer.\"/>\r\n        <text name=\"animal_descriptionBoarYoung\" text=\"Dette er en han-grisling.\"/>\r\n\r\n        <!-- FÅR -->\r\n\r\n        <text name=\"fillType_ram\" text=\"Væder\"/>\r\n        <text name=\"fillType_ram_landrace\" text=\"Bentheim Landrace Væder\"/>\r\n        <text name=\"fillType_ram_steinschaf\" text=\"Steinschaf Væder\"/>\r\n        <text name=\"fillType_ram_black_welsh\" text=\"Sort Welsh Mountain Væder\"/>\r\n        <text name=\"fillType_ram_swiss_mountain\" text=\"Schweizisk Sort-Brun Mountain Væder\"/>\r\n        <text name=\"animal_descriptionRamFeed\" text=\"Vædre spiser græs og hø.\"/>\r\n        <text name=\"animal_descriptionRamYoung\" text=\"Dette er en han-lam.\"/>\r\n        <text name=\"animal_descriptionRamReproduction\" text=\"Vædre, der er raske og ældre end 5 måneder, kan reproducere.\"/>\r\n\r\n        <!-- Geder -->\r\n\r\n        <text name=\"fillType_ram_goat\" text=\"Ged Væder\"/>\r\n\r\n        <!-- HESTE -->\r\n\r\n        <text name=\"fillType_stallion\" text=\"Hingst\"/>\r\n        <text name=\"fillType_stallion_gray\" text=\"Grå Hingst\"/>\r\n        <text name=\"fillType_stallion_pinto\" text=\"Pinto Hingst\"/>\r\n        <text name=\"fillType_stallion_palomino\" text=\"Palomino Hingst\"/>\r\n        <text name=\"fillType_stallion_chestnut\" text=\"Kastanie Hingst\"/>\r\n        <text name=\"fillType_stallion_bay\" text=\"Bay Hingst\"/>\r\n        <text name=\"fillType_stallion_black\" text=\"Sort Hingst\"/>\r\n        <text name=\"fillType_stallion_seal_brown\" text=\"Sæl Brun Hingst\"/>\r\n        <text name=\"fillType_stallion_dun\" text=\"Dun Hingst\"/>\r\n        <text name=\"animal_descriptionStallionFeed\" text=\"Hingste kan lide hø, havre og sorghum.\"/>\r\n        <text name=\"animal_descriptionStallionProfit\" text=\"Hingste kan sælges for profit.\"/>\r\n        <text name=\"animal_descriptionStallionReproduction\" text=\"Hingste, der er sunde og ældre end 36 måneder, kan reproducere.\"/>\r\n\r\n        <!-- UI -->\r\n\r\n        <text name=\"input_VisualAnimalsDialog\" text=\"Ændr visuelt antal dyr\"/>\r\n        <text name=\"rl_button_apply\" text=\"Anvend\"/>\r\n        <text name=\"rl_button_confirm\" text=\"Bekræft\"/>\r\n        <text name=\"rl_button_recommended\" text=\"Anbefalet\"/>\r\n        <text name=\"rl_button_cancel\" text=\"Annuller\"/>\r\n        <text name=\"rl_button_random\" text=\"Tilfældig\"/>\r\n        <text name=\"rl_dialog_title\" text=\"Indstil maksimalt antal visuelle dyr\"/>\r\n\r\n        <text name=\"rl_ui_unhealthy\" text=\"For usund\"/>\r\n        <text name=\"rl_ui_unhealthyBracketed\" text=\"Nej (for usund)\"/>\r\n        <text name=\"rl_ui_noMaleAnimal\" text=\"Ingen egnet han-dyr\"/>\r\n        <text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Nej (ingen egnet han-dyr)\"/>\r\n        <text name=\"rl_ui_recoveringLastBirth\" text=\"Kommer sig efter sidst fødsel\"/>\r\n        <text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Nej (kommer sig efter sidst fødsel)\"/>\r\n        <text name=\"rl_ui_tooYoung\" text=\"For ung\"/>\r\n        <text name=\"rl_ui_tooYoungBracketed\" text=\"Nej (for ung)\"/>\r\n        <text name=\"rl_ui_pregnant\" text=\"Gravid\"/>\r\n        <text name=\"rl_ui_lactating\" text=\"Lakterende\"/>\r\n        <text name=\"rl_ui_canReproduce\" text=\"Kan reproducere\"/>\r\n        <text name=\"rl_ui_impregnatedBy\" text=\"Befrugtet af\"/>\r\n        <text name=\"rl_ui_unknown\" text=\"Ukendt\"/>\r\n        <text name=\"rl_ui_yes\" text=\"Ja\"/>\r\n        <text name=\"rl_ui_no\" text=\"Nej\"/>\r\n        <text name=\"rl_ui_mother\" text=\"Mor\"/>\r\n        <text name=\"rl_ui_father\" text=\"Far\"/>\r\n        <text name=\"rl_ui_uniqueId\" text=\"Unikt ID\"/>\r\n        <text name=\"rl_ui_farmId\" text=\"Farm ID\"/>\r\n        <text name=\"rl_ui_gender\" text=\"Køn\"/>\r\n        <text name=\"rl_ui_male\" text=\"Han\"/>\r\n        <text name=\"rl_ui_female\" text=\"Hun\"/>\r\n        <text name=\"rl_ui_weight\" text=\"Vægt\"/>\r\n        <text name=\"rl_ui_targetWeight\" text=\"Målvægt\"/>\r\n        <text name=\"rl_ui_value\" text=\"Værdi\"/>\r\n        <text name=\"rl_ui_valuePerKilo\" text=\"Værdi pr. kg\"/>\r\n        <text name=\"rl_ui_genetics\" text=\"Genetik\"/>\r\n        <text name=\"rl_ui_overall\" text=\"Samlet\"/>\r\n        <text name=\"rl_ui_rename\" text=\"Ændre navn\"/>\r\n        <text name=\"rl_ui_cantFindAnimal\" text=\"Kunne ikke finde dyr\"/>\r\n        <text name=\"rl_ui_maleNumImpregnatable\" text=\"Befrugtningsdygtige dyr i fold\"/>\r\n\r\n        <text name=\"rl_ui_breederQuality\" text=\"Opdrætterkvalitet\"/>\r\n        <text name=\"rl_ui_birthday\" text=\"Fødselsdag\"/>\r\n        <text name=\"rl_ui_pregnancyExpected\" text=\"Forventet\"/>\r\n        <text name=\"rl_ui_pregnancyExpecting\" text=\"Forventer\"/>\r\n        <text name=\"rl_ui_pregnancyBaby\" text=\"baby\"/>\r\n        <text name=\"rl_ui_pregnancyBabies\" text=\"babyer\"/>\r\n        <text name=\"rl_ui_animalOrigin\" text=\"Oprindelse\"/>\r\n        <text name=\"rl_ui_months\" text=\"måneder\"/>\r\n        <text name=\"rl_ui_month\" text=\"måned\"/>\r\n        <text name=\"rl_ui_years\" text=\"år\"/>\r\n        <text name=\"rl_ui_year\" text=\"år\"/>\r\n\r\n        <text name=\"rl_ui_milk\" text=\"Mælkeproduktion\"/>\r\n        <text name=\"rl_ui_wool\" text=\"Uldproduktion\"/>\r\n        <text name=\"rl_ui_eggs\" text=\"Ægproduktion\"/>\r\n        <text name=\"rl_ui_metabolism\" text=\"Metabolisme\"/>\r\n        <text name=\"rl_ui_meat\" text=\"Kvalitet\"/>\r\n        <text name=\"rl_ui_health\" text=\"Sundhed\"/>\r\n        <text name=\"rl_ui_fertility\" text=\"Fertilitet\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\r\n        <text name=\"rl_ui_genetics_extremelyLow\" text=\"Ekstremt lav\"/>\r\n        <text name=\"rl_ui_genetics_veryLow\" text=\"Meget lav\"/>\r\n        <text name=\"rl_ui_genetics_low\" text=\"Lav\"/>\r\n        <text name=\"rl_ui_genetics_average\" text=\"Gennemsnitlig\"/>\r\n        <text name=\"rl_ui_genetics_high\" text=\"Høj\"/>\r\n        <text name=\"rl_ui_genetics_veryHigh\" text=\"Meget høj\"/>\r\n        <text name=\"rl_ui_genetics_extremelyHigh\" text=\"Ekstremt høj\"/>\r\n\r\n        <text name=\"rl_ui_genetics_extremelyBad\" text=\"Ekstremt dårlig\"/>\r\n        <text name=\"rl_ui_genetics_veryBad\" text=\"Meget dårlig\"/>\r\n        <text name=\"rl_ui_genetics_bad\" text=\"Dårlig\"/>\r\n        <text name=\"rl_ui_genetics_good\" text=\"God\"/>\r\n        <text name=\"rl_ui_genetics_veryGood\" text=\"Meget god\"/>\r\n        <text name=\"rl_ui_genetics_extremelyGood\" text=\"Ekstremt god\"/>\r\n\r\n        <text name=\"rl_ui_buySelected\" text=\"Køb valgte\"/>\r\n        <text name=\"rl_ui_sellSelected\" text=\"Sælg valgte\"/>\r\n        <text name=\"rl_ui_moveSelected\" text=\"Flyt valgte\"/>\r\n        <text name=\"rl_ui_buyConfirmation\" text=\"Er du sikker på, at du vil købe %s dyr for %s?\" tag=\"format\"/>\r\n        <text name=\"rl_ui_sellConfirmation\" text=\"Er du sikker på, at du vil sælge %s dyr for %s?\" tag=\"format\"/>\r\n        <text name=\"rl_ui_moveConfirmation\" text=\"Er du sikker på, at du vil flytte %s dyr?\" tag=\"format\"/>\r\n        <text name=\"rl_ui_buyBulkResult\" text=\"%s dyr købt for %s\" tag=\"format\"/>\r\n        <text name=\"rl_ui_sellBulkResult\" text=\"%s dyr solgt for %s\" tag=\"format\"/>\r\n        <text name=\"rl_ui_moveBulkResult\" text=\"%s dyr flyttet\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Overvågning\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Overvågningsabonnementer\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Overvågningsabonnementer\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Overvågningsgebyr\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Anvend overvågning\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Fjern overvågning\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Mad\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"Vand\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Strå\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Mælk\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Gødning\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Flydende gødning\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Æg\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Uld\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Gedemælk\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / dag\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / månede\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Monitored\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Products\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Apply All Monitors\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Remove All Monitors\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Fee\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Left Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Right Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Background Colour\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Background Hue\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Background RGB\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Text Colour\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Text Hue\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"Text RGB\"/>\r\n\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s months\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s month\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Not Pregnant\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"Any\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Productivity\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Select All\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Select None\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Filters\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"No Name\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Has Name\"/>\r\n\r\n\r\n\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\r\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\r\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\r\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\r\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\r\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\r\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\r\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\r\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\r\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\r\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\r\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\r\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\r\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\r\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\r\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\r\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\r\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\r\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\r\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\r\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\r\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\r\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\r\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\r\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\r\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\r\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\r\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\r\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\r\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\r\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\r\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\r\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\r\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\r\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\r\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\r\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\r\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\r\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\r\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\r\n\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\r\n\r\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\r\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\r\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\r\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\r\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\r\n\r\n\r\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\r\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\r\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\r\n\r\n\r\n\t\t<!-- AI - BUYING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - SELLING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - CASTRATING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - NAMING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\r\n\r\n\r\n\t\t<!-- AI - AI -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- INDSTILLINGER -->\r\n\r\n        <text name=\"rl_settings\" text=\"Realistisk Dyrehold\"/>\r\n\r\n        <text name=\"rl_settings_off\" text=\"Fra\"/>\r\n        <text name=\"rl_settings_on\" text=\"Til\"/>\r\n\r\n        <text name=\"rl_settings_deathEnabled_label\" text=\"Dyrefjernelse\"/>\r\n        <text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Dyr vil ikke blive fjernet på grund af graviditet, sundhed, alder eller ulykker\"/>\r\n        <text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Dyr vil blive fjernet på grund af graviditet, sundhed, alder eller ulykker\"/>\r\n\r\n        <text name=\"rl_settings_accidentsChance_label\" text=\"Ulykkeschance\"/>\r\n        <text name=\"rl_settings_accidentsChance_tooltip\" text=\"Ændr sandsynligheden for, at dyr bliver fjernet på grund af tilfældige ulykker\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Maksimalt antal forhandlerdyr\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Ændr det maksimale antal dyr, som dyreforhandleren vil have på lager pr. dyretype\"/>\r\n\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Change Tag Colour\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Change the colour of ear tags\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Change Tag Colour\"/>\r\n\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Export To CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Export stats to CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Export To CSV\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\r\n\r\n\r\n\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitors\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"In order to see the majority of an animal's statistics, you need to apply a monitoring tag to it, which can be done through the animal menu (where you buy and sell animals). Monitoring tags are also visually shown on the animal, on their left ear next to their ID tag.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"Monitoring tags will result in important information being shown to you, including health, weight, lactation, production, and straw, food and water requirements.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"Applying a tag to an animal will cost you a small monthly subscription based on the animal's species. If you choose to remove the tag, the tag will be removed at the start of the next month.\"/>\r\n\t\t\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Female animals all require at least 1 male animal in order to potentially become pregnant. Both animals must be of the correct age and health, and must be from the same species. Breeding between different breeds (eg: holstein cow and angus bull) is allowed.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Inbreeding is not allowed. If a male and a female are directly related, they will not breed together.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"The chance for a female to become pregnant depends upon both her and the male's fertility. A female with higher fertility also has a significantly higher chance of producing more offspring at once.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Once a female becomes pregnant, she will start to carry her offspring. You can view the expected date of pregnancy and the number of offspring by looking at the animal in the pen, or by clicking on her in the animal menu.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"When she reaches her due date, she will give birth to her babies. However, the newborns have a certain chance of being removed, as does the mother if the pregnancy goes badly. Newborns that are born in an overcrowded pen will be sold automatically.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Production\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Cows of any breed will only begin to produce milk after giving birth. Once she has given birth, the cow will produce milk exponentially for 3 months, then her production will slowly drop for the next 6 months. 10 months after pregnancy, the cow will stop producing milk until her next pregnancy.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Sheep will produce wool in warm months. In cold months, under 12C, they will not produce wool.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"Milk, wool and egg production is further affected by the animal's genetics. An animal with good production genetics will produce more, whereas animal with bad genetics wont produce much at all.\"/>\r\n\t\t\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Weight\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Animals have a certain weight that which is affected by how much they eat and drink. Every species and breed has its own average weight which affects the weight of each animal.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Weight increases the value of the animal, and a low weight affects its chance of being removed each month.\"/>\r\n\t\t\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetics\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Each animal has 4 different genetic values; metabolism, fertility, health and quality. Genetics are mixed between the mother and father and then passed down to their children.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Metabolism affects the animal's ability to convert food into weight, and affects the amount it eats.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"Fertility affects the animal's chance of getting pregnant, or getting a female pregnant, and the number of offspring it will produce.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"Health affects the animal's health and its chance of being removed each month. An animal with higher health genetics will also have a longer lifespan.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"Quality affects the value of the animal itself, an animal with higher quality will sell for much more.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Cattle, sheep and chicken also have production genetics, which affects how much milk/eggs/wool they produce.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\r\n\r\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\r\n\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\r\n\r\n\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\r\n\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\r\n\r\n\r\n\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\r\n\r\n    </texts>\r\n</l10n>\r\n"
  },
  {
    "path": "translations/translation_de.xml",
    "content": "<l10n>\r\n\t<texts>\r\n\t\t<!-- COWS -->\r\n\r\n\t\t<text name=\"fillType_bull\" text=\"Bullen\"/>\r\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Brown-Swiss Bullen\"/>\r\n\t\t<text name=\"fillType_bull_holstein\" text=\"Holstein Bullen\"/>\r\n\t\t<text name=\"fillType_bull_angus\" text=\"Angus Bullen\"/>\r\n\t\t<text name=\"fillType_bull_limousin\" text=\"Limousin Bullen\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bullen\"/>\r\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Bullen mögen Gras, Heu und TMR.\"/>\r\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Das ist ein männliches Kalb.\"/>\r\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Bullen, die gesund und älter als 12 Monate sind, können sich fortpflanzen.\"/>\r\n\r\n\t\t<!-- WATER BUFFALOS -->\r\n\r\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Water Buffalo Bullen\"/>\r\n\r\n\t\t<!-- PIGS -->\r\n\r\n\t\t<text name=\"fillType_boar\" text=\"Eber\"/>\r\n\t\t<text name=\"fillType_boar_landrace\" text=\"Deutsches Landschwein Eber\"/>\r\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Buntes Bentheimer Eber\"/>\r\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Berkshire Eber\"/>\r\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Gesunde Eber, die älter als 8 Monate sind, können sich fortpflanzen.\"/>\r\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Eber fressen fast alles. Sie können ihnen Mais, Weizen, Gerste, Raps, Sonnenblumen, Sojabohnen, Kartoffeln, Sorghum und Zuckerrüben füttern.\"/>\r\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Dies ist ein männliches Ferkel.\"/>\r\n\r\n\t\t<!-- SHEEP -->\r\n\r\n\t\t<text name=\"fillType_ram\" text=\"Ramme\"/>\r\n\t\t<text name=\"fillType_ram_landrace\" text=\"Bentheimer Landschafbock\"/>\r\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Alpiner Steinschafbock\"/>\r\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Walliser Schwarznasenschafbock\"/>\r\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Schwarz-Brauner Bergschafbock\"/>\r\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Schafböcke fressen Gras und Heu.\"/>\r\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Dies ist ein männliches Lamm.\"/>\r\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Gesunde Schafböcke, die älter als 5 Monate sind, können sich fortpflanzen.\"/>\r\n\r\n\t\t<!-- GOATS -->\r\n\r\n\t\t<text name=\"fillType_ram_goat\" text=\"Ziegenbock\"/>\r\n\r\n\t\t<!-- HORSES -->\r\n\r\n\t\t<text name=\"fillType_stallion\" text=\"Hengst\"/>\r\n\t\t<text name=\"fillType_stallion_gray\" text=\"Schimmel Hengst\"/>\r\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Schecke Hengst\"/>\r\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Isabell Hengst\"/>\r\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Fuchs Hengst\"/>\r\n\t\t<text name=\"fillType_stallion_bay\" text=\"Brauner Hengst\"/>\r\n\t\t<text name=\"fillType_stallion_black\" text=\"Rappe Hengst\"/>\r\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Schwarzbrauner Hengst\"/>\r\n\t\t<text name=\"fillType_stallion_dun\" text=\"Falbe Hengst\"/>\r\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Hengste mögen Heu, Hafer und Hirse.\"/>\r\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Hengste können mit Gewinn verkauft werden.\"/>\r\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Hengste, die gesund und älter als 36 Monate sind, können sich fortpflanzen.\"/>\r\n\r\n\r\n\t\t<!-- UI -->\r\n\r\n\r\n\t\t<text name=\"input_VisualAnimalsDialog\" text=\"Anzahl der visuellen Tiere ändern\"/>\r\n\t\t<text name=\"rl_button_apply\" text=\"Anwenden\"/>\r\n\t\t<text name=\"rl_button_confirm\" text=\"Bestätigen\"/>\r\n\t\t<text name=\"rl_button_recommended\" text=\"Empfohlen\"/>\r\n\t\t<text name=\"rl_button_cancel\" text=\"Stornieren\"/>\r\n\t\t<text name=\"rl_button_random\" text=\"Zufällig\"/>\r\n\t\t<text name=\"rl_dialog_title\" text=\"Maximale Anzahl visueller Tiere\"/>\r\n\r\n\t\t<text name=\"rl_ui_unhealthy\" text=\"Zu ungesund\"/>\r\n\t\t<text name=\"rl_ui_unhealthyBracketed\" text=\"Nein (zu ungesund)\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimal\" text=\"Kein geeignetes männliches Tier\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Nein (kein geeignetes männliches Tier)\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirth\" text=\"Erholen von der letzten Geburt\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Nein (erholt sich von der letzten Geburt)\"/>\r\n\t\t<text name=\"rl_ui_tooYoung\" text=\"Zu jung\"/>\r\n\t\t<text name=\"rl_ui_tooYoungBracketed\" text=\"Nein (zu jung)\"/>\r\n\t\t<text name=\"rl_ui_pregnant\" text=\"Schwanger\"/>\r\n\t\t<text name=\"rl_ui_lactating\" text=\"Säugend\"/>\r\n\t\t<text name=\"rl_ui_canReproduce\" text=\"Kann reproduzieren\"/>\r\n\t\t<text name=\"rl_ui_impregnatedBy\" text=\"Befruchtet durch\"/>\r\n\t\t<text name=\"rl_ui_unknown\" text=\"Unbekannt\"/>\r\n\t\t<text name=\"rl_ui_yes\" text=\"Ja\"/>\r\n\t\t<text name=\"rl_ui_no\" text=\"Nein\"/>\r\n\t\t<text name=\"rl_ui_mother\" text=\"Mutter\"/>\r\n\t\t<text name=\"rl_ui_father\" text=\"Vater\"/>\r\n\t\t<text name=\"rl_ui_uniqueId\" text=\"Eindeutige ID\"/>\r\n\t\t<text name=\"rl_ui_farmId\" text=\"Bauernhof ID\"/>\r\n\t\t<text name=\"rl_ui_gender\" text=\"Geschlecht\"/>\r\n\t\t<text name=\"rl_ui_male\" text=\"Männlich\"/>\r\n\t\t<text name=\"rl_ui_female\" text=\"Weiblich\"/>\r\n\t\t<text name=\"rl_ui_weight\" text=\"Gewicht\"/>\r\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Zielgewicht\"/>\r\n\t\t<text name=\"rl_ui_value\" text=\"Wert\"/>\r\n\t\t<text name=\"rl_ui_valuePerKilo\" text=\"Wert pro kg\"/>\r\n\t\t<text name=\"rl_ui_genetics\" text=\"Genetik\"/>\r\n\t\t<text name=\"rl_ui_overall\" text=\"Insgesamt\"/>\r\n\t\t<text name=\"rl_ui_rename\" text=\"Name ändern\"/>\r\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Konnte kein Tier finden\"/>\r\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Befruchtbare Tiere im Pferch\"/>\r\n\r\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Qualität des Züchters\"/>\r\n\t\t<text name=\"rl_ui_birthday\" text=\"Geburtstag\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Erwartet\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Erwarten Sie\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"Baby\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"Babies\"/>\r\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Herkunft\"/>\r\n\t\t<text name=\"rl_ui_months\" text=\"Monate\"/>\r\n\t\t<text name=\"rl_ui_month\" text=\"Monat\"/>\r\n\t\t<text name=\"rl_ui_years\" text=\"Jahre\"/>\r\n\t\t<text name=\"rl_ui_year\" text=\"Jahr\"/>\r\n\r\n\t\t<text name=\"rl_ui_milk\" text=\"Milcherzeugung\"/>\r\n\t\t<text name=\"rl_ui_wool\" text=\"Produktion von Wolle\"/>\r\n\t\t<text name=\"rl_ui_eggs\" text=\"Eierproduktion\"/>\r\n\t\t<text name=\"rl_ui_metabolism\" text=\"Stoffwechsel\"/>\r\n\t\t<text name=\"rl_ui_meat\" text=\"Qualität\"/>\r\n\t\t<text name=\"rl_ui_health\" text=\"Gesundheit\"/>\r\n\t\t<text name=\"rl_ui_fertility\" text=\"Fruchtbarkeit\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Unfruchtbar\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Extrem niedrig\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Sehr niedrig\"/>\r\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Niedrig\"/>\r\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Durchschnitt\"/>\r\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Hoch\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Sehr hoch\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Extrem hoch\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Extrem schlecht\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Sehr schlecht\"/>\r\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Schlecht\"/>\r\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Gut\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Sehr gut\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Extrem gut\"/>\r\n\r\n\t\t<text name=\"rl_ui_buySelected\" text=\"Auswahl kaufen\"/>\r\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Auswahl verkaufen\"/>\r\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Auswahl verschieben\"/>\r\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Bist Du sicher, dass Du %s Tiere für %s kaufen willst?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Bist Du sicher, dass Du %s Tiere für %s verkaufen willst?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Bist Du sicher, dass Du %s Tiere für %s verschieben willst?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s Tiere für %s gekauft\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s Tiere für %s verkauft\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s Tiere verschoben\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Monitor\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Monitor-Abonnements\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Monitor-Abonnements\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Monitor-Gebühr\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Monitor anwenden\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Monitor entfernen\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Lebensmittel\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"Wasser\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Stroh\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Milch\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Gülle\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Flüssigmist\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Eier\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Wolle\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Ziegenmilch\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / Tag\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / Monat\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Typ\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Überwacht\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Produkte\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Alle Monitore anwenden\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Alle Monitore entfernen\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Gebühr\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Linkes Ohr-Etikett\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Rechte Ohrmarke\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Hintergrundfarbe\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Hintergrund Hue\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Hintergrund RGB\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Textfarbe\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Text Hue\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"Text RGB\"/>\r\n\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s Monate\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s Monat\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Nicht schwanger\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"Jeder\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Schwangerschaft\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Produktivität\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Alle auswählen\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Keine auswählen\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Filter\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"Ohne Namen\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Hat Namen\"/>\r\n\r\n\r\n\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Kastriert\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Kastrieren\"/>\r\n\t\t<text name=\"rl_ui_importance\" text=\"Bedeutung\"/>\r\n\t\t<text name=\"rl_ui_type\" text=\"Typ\"/>\r\n\t\t<text name=\"rl_ui_date\" text=\"Datum\"/>\r\n\t\t<text name=\"rl_ui_message\" text=\"Nachricht\"/>\r\n\t\t<text name=\"rl_ui_messages\" text=\"Nachrichten\"/>\r\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unbekannte Ursachen\"/>\r\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s von %s\"/>\r\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Nachricht Löschen\"/>\r\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' hat ungelesene Nachrichten!\"/>\r\n\t\t<text name=\"rl_ui_herdsman\" text=\"Hirte\"/>\r\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budgetart\"/>\r\n\t\t<text name=\"rl_ui_fixed\" text=\"Behoben\"/>\r\n\t\t<text name=\"rl_ui_percentage\" text=\"Prozent\"/>\r\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Tiere\"/>\r\n\t\t<text name=\"rl_ui_infinite\" text=\"Unendlich\"/>\r\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Kürzlich getätigter Kauf eines Hirten\"/>\r\n\t\t<text name=\"rl_ui_previousWage\" text=\"Vorheriges Gehalt\"/>\r\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Hirtenlöhne\"/>\r\n\t\t<text name=\"finance_herdsmanWages\" text=\"Hirtenlöhne\"/>\r\n\t\t<text name=\"rl_ui_medicine\" text=\"Medizin\"/>\r\n\t\t<text name=\"finance_medicine\" text=\"Medizin\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Kauf von Inseminationsmaterial\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Samenkauf\"/>\r\n\t\t<text name=\"finance_semenPurchase\" text=\"Kauf von Inseminationsmaterial\"/>\r\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Samenkauf\"/>\r\n\t\t<text name=\"rl_ui_noDiseases\" text=\"Keine Krankheiten\"/>\r\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Nur Krankheiten\"/>\r\n\t\t<text name=\"rl_ui_naming\" text=\"Benennung\"/>\r\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetisch\"/>\r\n\t\t<text name=\"rl_ui_breed\" text=\"Rasse\"/>\r\n\t\t<text name=\"rl_ui_dontMark\" text=\"Nicht markieren\"/>\r\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t\t<text name=\"rl_ui_unmark\" text=\"Markierung aufheben\"/>\r\n\t\t<text name=\"rl_ui_favourite\" text=\"Favorit\"/>\r\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Nicht favorisiert\"/>\r\n\t\t<text name=\"rl_ui_quantity\" text=\"Menge\"/>\r\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Künstliche Befruchtung erfolgreich gekauft. Sie können sie im Laden abholen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Samen erfolgreich gekauft. Sie können ihn im Laden abholen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Künstliche Befruchtung konnte nicht gekauft werden.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Samen konnte nicht gekauft werden.\"/>\r\n\t\t<text name=\"rl_ui_earTag\" text=\"Ohrmarke\"/>\r\n\t\t<text name=\"rl_ui_species\" text=\"Arten\"/>\r\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Stroh\"/>\r\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Strohhalme\"/>\r\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Künstliche Befruchtung\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"Sie benötigen keine Genehmigung, um Tiere zu handeln oder Besamungsmaterial zu kaufen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"Sie benötigen keine Genehmigung, um Tiere zu handeln oder Sperma zu kaufen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"Sie haben nicht genug Geld, um dieses Inseminat zu kaufen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"Sie haben nicht genug Geld, um dieses Sperma zu kaufen.\"/>\r\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Stroh nehmen\"/>\r\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Besamen %s\"/>\r\n\t\t<text name=\"rl_ui_inseminate\" text=\"Besamen\"/>\r\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"Dieser Strohhalm ist leer.\"/>\r\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Durchschnittlicher Erfolg: \"/>\r\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Durchschnittlicher Erfolg\"/>\r\n\t\t<text name=\"rl_ui_success\" text=\"Erfolg\"/>\r\n\t\t<text name=\"rl_ui_save\" text=\"Speichern\"/>\r\n\t\t<text name=\"rl_ui_load\" text=\"Belastung\"/>\r\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Profil speichern\"/>\r\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Lastprofil\"/>\r\n\r\n\r\n\t\t<text name=\"rl_insemination_male\" text=\"Nur weibliche Tiere können künstlich befruchtet werden.\"/>\r\n\t\t<text name=\"rl_insemination_pregnant\" text=\"Dieses Tier ist bereits trächtig.\"/>\r\n\t\t<text name=\"rl_insemination_animalType\" text=\"Das Tier muss derselben Art angehören wie der Vater.\"/>\r\n\t\t<text name=\"rl_insemination_inseminated\" text=\"Dieses Tier wurde bereits künstlich befruchtet.\"/>\r\n\t\t<text name=\"rl_insemination_recovering\" text=\"Dieses Tier erholt sich noch von seiner letzten Schwangerschaft.\"/>\r\n\t\t<text name=\"rl_insemination_father\" text=\"Inzucht ist nicht erlaubt.\"/>\r\n\t\t<text name=\"rl_insemination_young\" text=\"Dieses Tier ist zu jung, um künstlich befruchtet zu werden.\"/>\r\n\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Gesund\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Hat Krankheit\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\r\n\r\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Hirte zum Verkauf gekennzeichnet\"/>\r\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Hirte zur Kastration markiert\"/>\r\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Hirte zur Behandlung markiert\"/>\r\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Hirte für künstliche Befruchtung markiert\"/>\r\n\t\t<text name=\"rl_mark_player\" text=\"Vom Spieler markiert\"/>\r\n\r\n\r\n\t\t<!-- AI - BUYING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"Der Hirte wird keine Tiere kaufen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"Der Hirte wird Tiere kaufen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Das Einkaufsbudget ist ein fester Betrag.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Das Einkaufsbudget ist ein Prozentsatz des Geldes Ihres Betriebs.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"Der Hirte wird bis zu %s pro Tag ausgeben.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"Der Hirte gibt täglich bis zu %s des Geldes Ihrer Farm aus.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"Der Hirte wird bis zu %s Tiere pro Tag kaufen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"Der Hirte wird nur %s Tiere kaufen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"Der Hirte wird jede Rasse kaufen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"Der Hirte kauft nur Tiere, die frei von Krankheiten sind.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"Der Hirte wird Tiere unabhängig von Krankheiten kaufen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"Der Hirte wird nur weibliche Tiere kaufen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"Der Hirte wird weibliche und männliche Tiere kaufen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"Der Hirte wird nur männliche Tiere kaufen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"Der Hirte kauft nur Tiere, die %s alt sind.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"Der Viehzüchter kauft nur Tiere, die zwischen %s und %s alt sind.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"Der Hirte kauft nur Tiere mit einer Qualität von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"Der Viehzüchter kauft nur Tiere mit einer Qualität zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"Der Hirte kauft nur Tiere mit einer Fruchtbarkeit von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"Der Viehzüchter kauft nur Tiere mit einer Fruchtbarkeit zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"Der Hirte kauft nur Tiere mit einer Gesundheit von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"Der Hirte kauft nur Tiere mit einem Gesundheitszustand zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"Der Hirte kauft nur Tiere mit einer Produktivität von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"Der Viehzüchter kauft nur Tiere mit einer Produktivität zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"Der Hirte kauft nur Tiere mit einem Stoffwechsel von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"Der Viehzüchter kauft nur Tiere mit einem Stoffwechsel zwischen %s und %s.\"/>\r\n\r\n\r\n\t\t<!-- AI - SELLING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"Der Hirte wird keine Tiere verkaufen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"Der Hirte wird Tiere verkaufen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"Der Hirte wird bis zu %s Tiere pro Tag verkaufen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"Der Hirte wird die zum Verkauf stehenden Tiere nicht kennzeichnen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"Der Hirte wird die Tiere markieren, die verkauft werden sollen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"Der Hirte wird Tiere unabhängig von Krankheiten verkaufen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"Der Hirte verkauft nur Tiere mit einer Krankheit.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"Der Hirte verkauft nur weibliche Tiere.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"Der Hirte wird weibliche und männliche Tiere verkaufen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"Der Hirte verkauft nur männliche Tiere.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"Der Hirte verkauft nur Tiere, die %s alt sind.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"Der Hirte verkauft nur Tiere, die zwischen %s und %s alt sind.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"Der Hirte verkauft nur Tiere mit einer Qualität von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"Der Hirte verkauft nur Tiere mit einer Qualität zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"Der Hirte verkauft nur Tiere mit einer Fruchtbarkeit von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"Der Hirte verkauft nur Tiere mit einer Fruchtbarkeit zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"Der Hirte verkauft nur Tiere mit einer Gesundheit von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"Der Hirte verkauft nur Tiere mit einem Gesundheitszustand zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"Der Hirte verkauft nur Tiere mit einer Produktivität von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"Der Hirte verkauft nur Tiere mit einer Produktivität zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"Der Hirte verkauft nur Tiere mit einem Stoffwechsel von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"Der Hirte verkauft nur Tiere mit einem Stoffwechsel zwischen %s und %s.\"/>\r\n\r\n\r\n\t\t<!-- AI - CASTRATING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"Der Hirte wird keine Tiere kastrieren.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"Der Hirte wird Tiere kastrieren.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"Der Hirte wird die Tiere nicht zur Kastration markieren.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"Der Hirte wird die Tiere zur Kastration markieren.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"Der Hirte wird Tiere unabhängig von Krankheiten kastrieren.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"Der Hirte kastriert nur Tiere, die an einer Krankheit leiden.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"Der Hirte kastriert nur Tiere, die %s alt sind.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"Der Hirte kastriert nur Tiere, die zwischen %s und %s alt sind.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"Der Hirte kastriert nur Tiere mit einer Qualität von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"Der Hirte kastriert nur Tiere mit einer Qualität zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"Der Hirte kastriert nur Tiere mit einer Fruchtbarkeit von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"Der Hirte kastriert nur Tiere mit einer Fruchtbarkeit zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"Der Hirte kastriert nur Tiere mit einer Gesundheit von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"Der Hirte kastriert nur Tiere, deren Gesundheitszustand zwischen %s und %s liegt.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"Der Hirte kastriert nur Tiere mit einer Produktivität von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"Der Hirte kastriert nur Tiere mit einer Produktivität zwischen %s und %s.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"Der Hirte kastriert nur Tiere mit einem Stoffwechsel von %s.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"Der Hirte kastriert nur Tiere mit einem Stoffwechsel zwischen %s und %s.\"/>\r\n\r\n\r\n\t\t<!-- AI - NAMING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"Der Hirte wird die Tiere nicht benennen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"Der Hirte wird die Tiere benennen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"Der Hirte wird die Tiere nach dem Zufallsprinzip benennen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"Der Hirte wird die Tiere alphabetisch benennen.\"/>\r\n\r\n\r\n\t\t<!-- AI - AI -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"Der Hirte wird keine Tiere künstlich befruchten.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"Der Hirte wird keine Tiere besamen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"Der Hirte wird bis zu %s Tiere pro Tag besamen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"Der Hirte wird die zu besamenden Tiere nicht kennzeichnen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"Der Hirte wird die zu besamenden Tiere markieren.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"Der Hirte wird Tiere unabhängig von Krankheiten besamen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"Der Hirte wird nur Tiere mit einer Krankheit besamen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"Der Hirte wird Inseminat von %s verwenden.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"Der Hirte wird Sperma von %s verwenden.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"Der Hirte wird jedes brauchbare Besamungsmittel verwenden.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"Der Hirte wird jedes brauchbare Sperma verwenden.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"Der Hirte wird nur Tiere besamen, die %s alt sind.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"Der Hirte wird nur Tiere besamen, die zwischen %s und %s alt sind.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"Der Hirte wird nur Tiere mit einer Qualität von %s besamen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"Der Hirte wird nur Tiere mit einer Qualität zwischen %s und %s besamen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"Der Hirte wird nur Tiere mit einer Fruchtbarkeit von %s besamen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"Der Hirte wird nur Tiere mit einer Fruchtbarkeit zwischen %s und %s besamen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"Der Hirte wird nur Tiere mit einer Gesundheit von %s besamen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"Der Hirte wird nur Tiere mit einem Gesundheitszustand zwischen %s und %s besamen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"Der Hirte wird nur Tiere mit einer Produktivität von %s besamen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"Der Hirte wird nur Tiere mit einer Produktivität zwischen %s und %s besamen.\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"Der Hirte wird nur Tiere mit %s-Stoffwechsel besamen.\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"Der Hirte wird nur Tiere mit einem Stoffwechsel zwischen %s und %s besamen.\"/>\r\n\r\n\r\n\r\n\r\n\t\t<!--  SETTINGS  -->\r\n\r\n\r\n\t\t<text name=\"rl_settings\" text=\"Realistische Viehbestände\"/>\r\n\r\n\t\t<text name=\"rl_settings_off\" text=\"Aus\"/>\r\n\t\t<text name=\"rl_settings_on\" text=\"Auf\"/>\r\n\r\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Tierentfernung\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Tiere werden nicht aufgrund von Schwangerschaft, Gesundheit, Alter oder Unfällen entfernt.\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Tiere werden aufgrund von Schwangerschaft, Gesundheit, Alter oder Unfällen entfernt.\"/>\r\n\r\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Unfallwahrscheinlichkeit\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Änderung der Wahrscheinlichkeit, dass Tiere aufgrund von Zufallsunfällen entfernt werden\"/>\r\n\r\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Lebensmittelwaage\"/>\r\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Die Menge der von Tieren gefressenen Nahrung verändern\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Maximale Händler-Tiere\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Ändern Sie die maximale Anzahl der Tiere, die der Tierhändler pro Tierart auf Lager hat\"/>\r\n\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Tag-Farbe ändern\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Ändern Sie die Farbe der Ohrmarken.\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Tag-Farbe ändern\"/>\r\n\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Als CSV exportieren\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Statistiken in CSV exportieren\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Als CSV exportieren\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximale Anzahl von Nachrichten\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"Ein höherer Wert führt dazu, dass Ihr Speicherordner mehr Speicherplatz beansprucht. Sobald diese Grenze erreicht ist, werden die ältesten Nachrichten gelöscht.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Aktivierte Krankheiten\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Tiere können keine Krankheiten bekommen oder vererben.\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Tiere können Krankheiten bekommen oder vererben.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Krankheitsrisiko\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Die Wahrscheinlichkeit ändern, dass Tiere Krankheiten bekommen\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Benutzerdefinierte Tiere verwenden\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Verwenden Sie RealisticLivestock-Tiermodelle (erfordert Neustart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Benutzerdefinierte Tiermodelle verwenden (erfordert Neustart, muss entpackt werden)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"XML-Pfad für Tiere festlegen\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Pfad zu einer benutzerdefinierten XML-Datei für Tiere festlegen\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"XML-Pfad für Tiere festlegen\"/>\r\n\r\n\r\n\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitore\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"Um die meisten Statistiken eines Tieres zu sehen, müssen Sie ihm ein Überwachungsetikett zuweisen, was Sie über das Tiermenü (wo Sie Tiere kaufen und verkaufen) tun können. Überwachungsmarken werden auch visuell am Tier angezeigt, und zwar am linken Ohr neben der ID-Marke.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"Durch die Überwachung der Etiketten erhalten Sie wichtige Informationen über Gesundheit, Gewicht, Laktation, Produktion, Stroh-, Futter- und Wasserbedarf.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"Das Anbringen einer Markierung an einem Tier kostet Sie einen kleinen Monatsbeitrag, der sich nach der Tierart richtet. Wenn Sie sich entscheiden, die Markierung zu entfernen, wird sie zu Beginn des nächsten Monats wieder entfernt.\"/>\r\n\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Schwangerschaft\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Weibliche Tiere benötigen alle mindestens ein männliches Tier, um trächtig werden zu können. Beide Tiere müssen das richtige Alter und die richtige Gesundheit haben und von der gleichen Art sein. Die Zucht zwischen verschiedenen Rassen (z. B. Holsteinkuh und Angusbulle) ist erlaubt.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Inzucht ist nicht erlaubt. Wenn ein Männchen und ein Weibchen direkt miteinander verwandt sind, werden sie sich nicht gemeinsam fortpflanzen.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"Die Wahrscheinlichkeit, dass ein Weibchen schwanger wird, hängt sowohl von ihrer als auch von der Fruchtbarkeit des Männchens ab. Ein Weibchen mit höherer Fruchtbarkeit hat auch eine deutlich höhere Chance, mehr Nachkommen auf einmal zu produzieren.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Sobald ein Weibchen trächtig wird, beginnt es, seine Nachkommen auszutragen. Sie können das voraussichtliche Datum der Trächtigkeit und die Anzahl der Nachkommen sehen, indem Sie das Tier im Gehege betrachten oder es im Tiermenü anklicken.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"Wenn sie ihren Geburtstermin erreicht, wird sie ihre Babys zur Welt bringen. Die Neugeborenen haben jedoch eine gewisse Chance, entfernt zu werden, ebenso wie die Mutter, wenn die Schwangerschaft schlecht verläuft. Neugeborene, die in einem überfüllten Stall geboren werden, werden automatisch verkauft.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Produktion\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Kühe jeder Rasse fangen erst nach der Geburt an, Milch zu produzieren. Nach der Geburt produziert die Kuh 3 Monate lang exponentiell Milch, dann nimmt die Produktion in den nächsten 6 Monaten langsam ab. 10 Monate nach der Trächtigkeit stellt die Kuh die Milchproduktion bis zu ihrer nächsten Trächtigkeit ein.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Schafe produzieren in warmen Monaten Wolle. In kalten Monaten, unter 12 °C, produzieren sie keine Wolle.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"Die Milch-, Woll- und Eierproduktion wird auch durch die Genetik des Tieres beeinflusst. Ein Tier mit einer guten Genetik wird mehr produzieren, während ein Tier mit einer schlechten Genetik nicht viel produzieren wird.\"/>\r\n\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Gewicht\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Tiere haben ein bestimmtes Gewicht, das davon abhängt, wie viel sie essen und trinken. Jede Art und Rasse hat ihr eigenes Durchschnittsgewicht, das sich auf das Gewicht eines jeden Tieres auswirkt.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Das Gewicht erhöht den Wert des Tieres, und ein niedriges Gewicht verringert die Wahrscheinlichkeit, dass es jeden Monat abgeholt wird.\"/>\r\n\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetik\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Jedes Tier hat 4 verschiedene genetische Werte: Stoffwechsel, Fruchtbarkeit, Gesundheit und Qualität. Die Genetik wird zwischen Mutter und Vater gemischt und dann an die Kinder weitergegeben.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Der Stoffwechsel wirkt sich auf die Fähigkeit des Tieres aus, Nahrung in Gewicht umzuwandeln, und beeinflusst die Menge, die es frisst.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"Die Fruchtbarkeit wirkt sich auf die Wahrscheinlichkeit aus, dass ein Tier trächtig wird oder ein Weibchen trächtig wird, und auf die Anzahl der Nachkommen, die es produzieren wird.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"Der Gesundheitszustand wirkt sich auf die Gesundheit des Tieres und die Wahrscheinlichkeit aus, dass es jeden Monat entnommen wird. Ein Tier mit einer besseren Gesundheitsgenetik hat auch eine längere Lebensdauer.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"Die Qualität wirkt sich auf den Wert des Tieres selbst aus, ein Tier mit höherer Qualität wird zu einem viel höheren Preis verkauft.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Rinder, Schafe und Hühner haben auch eine genetische Veranlagung, die sich darauf auswirkt, wie viel Milch, Eier oder Wolle sie produzieren.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immun\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Behandlung beginnen\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Behandlung fortsetzen\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Behandlung beenden\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Dauer\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Behandelt werden\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Nicht behandelt\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Träger\"/>\r\n\r\n\t\t<text name=\"rl_diseases\" text=\"Krankheiten\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Krankheit\"/>\r\n\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\r\n\r\n\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Schwangerschaft\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Entfernung\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Tod\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Krankheit\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Bewegung\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Hirte\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Künstliche Befruchtung\"/>\r\n\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"1 Baby zur Welt gebracht\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Geburt von %s Babys\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s Babys wurden aufgrund von Überbelegung für %s verkauft.\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s Babys wurden bei der Geburt entfernt.\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s Babys starben bei der Geburt\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Entfernt aufgrund von %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Gestorben aufgrund von %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Vertraglich vereinbart %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Geheilt von %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Behandlung für %s begonnen bei %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Behandlung für %s bei %s wieder aufgenommen\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Behandlung für %s abgebrochen\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name von '%s' in '%s' geändert\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Vorname '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Der Name „%s“ wurde entfernt.\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 Tier wurde für %s gekauft.\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s Tiere wurden für %s gekauft.\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 Tier wurde für %s verkauft.\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s Tiere wurden für %s verkauft.\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 Tier wurde nach %s gebracht.\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s Tiere wurden nach %s gebracht.\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 Tier wurde von %s umgesiedelt.\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s Tiere wurden aus %s umgesiedelt.\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Hirte hat 1 Tier für %s gekauft\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Hirte kaufte %s Tiere für %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Hirte verkaufte 1 Tier für %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Hirte verkaufte %s Tiere für %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Hirte hat 1 Tier kastriert\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Der Hirte hat %s Tiere kastriert.\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Hirte benannte 1 Tier\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Hirte namens %s Tiere\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Hirte hat 1 Tier zum Verkauf gekennzeichnet\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Der Hirte hat %s Tiere zum Verkauf gekennzeichnet.\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Hirte hat 1 Tier zur Kastration markiert\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Der Hirte hat %s Tiere zur Kastration markiert.\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Hirte hat 1 Tier zur Behandlung markiert\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Der Hirte hat %s Tiere zur Behandlung markiert.\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Die Befruchtung war erfolgreich.\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Die Befruchtung war nicht erfolgreich.\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Hirte hat 1 Tier zur Besamung markiert\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Der Hirte hat %s Tiere zur Besamung markiert.\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Hirte besamte 1 Tier\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Hirte besamte %s Tiere\"/>\r\n\r\n\r\n\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"eine schlechte Schwangerschaft\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"geringe Gesundheit\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"Alter\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"ein Unfall\"/>\r\n\r\n\t</texts>\r\n</l10n>"
  },
  {
    "path": "translations/translation_en.xml",
    "content": "<l10n>\r\n\t<texts>\r\n\t\t<!-- COWS -->\r\n\t\t\r\n\t\t<text name=\"fillType_bull\" text=\"Bull\"/>\r\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Brown-Swiss Bull\"/>\r\n\t\t<text name=\"fillType_bull_holstein\" text=\"Holstein Bull\"/>\r\n\t\t<text name=\"fillType_bull_angus\" text=\"Angus Bull\"/>\r\n\t\t<text name=\"fillType_bull_limousin\" text=\"Limousin Bull\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bull\"/>\r\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Bulls like grass, hay and TMR.\"/>\r\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"This is a male calf.\"/>\r\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Bulls that are healthy and older than 12 months can reproduce.\"/>\r\n\r\n\t\t<!-- WATER BUFFALOS -->\r\n\r\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Water Buffalo Bull\"/>\r\n\r\n\t\t<!-- PIGS -->\r\n\t\t\r\n\t\t<text name=\"fillType_boar\" text=\"Boar\"/>\r\n\t\t<text name=\"fillType_boar_landrace\" text=\"Landrace Boar\"/>\r\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Black-Pied Boar\"/>\r\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Berkshire Boar\"/>\r\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Boars that are healthy and older than 8 months can reproduce.\"/>\r\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Boars eat nearly anything. You can feed them corn, wheat, barley, canola, sunflowers, soybeans, potatoes, sorghum and sugar beets.\"/>\r\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"This is a male piglet.\"/>\r\n\r\n\t\t<!-- SHEEP -->\r\n\t\t\r\n\t\t<text name=\"fillType_ram\" text=\"Ram\"/>\r\n\t\t<text name=\"fillType_ram_landrace\" text=\"Landrace of Bentheim Ram\"/>\r\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Steinschaf Ram\"/>\r\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Black Welsh Mountain Ram\"/>\r\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Swiss Black-Brown Mountain Ram\"/>\r\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Rams eat grass and hay.\"/>\r\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"This is a male lamb.\"/>\r\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Rams that are healthy and older than 5 months can reproduce.\"/>\r\n\r\n\t\t<!-- GOATS -->\r\n\r\n\t\t<text name=\"fillType_ram_goat\" text=\"Goat Ram\"/>\r\n\t\t\r\n\t\t<!-- HORSES -->\r\n\t\t\r\n\t\t<text name=\"fillType_stallion\" text=\"Stallion\"/>\r\n\t\t<text name=\"fillType_stallion_gray\" text=\"Gray Stallion\"/>\r\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Pinto Stallion\"/>\r\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Palomino Stallion\"/>\r\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Chestnut Stallion\"/>\r\n\t\t<text name=\"fillType_stallion_bay\" text=\"Bay Stallion\"/>\r\n\t\t<text name=\"fillType_stallion_black\" text=\"Black Stallion\"/>\r\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Seal Brown Stallion\"/>\r\n\t\t<text name=\"fillType_stallion_dun\" text=\"Dun Stallion\"/>\r\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Stallions like hay, oat and sorghum.\"/>\r\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Stallions can be sold for a profit.\"/>\r\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Stallions that are healthy and older than 36 months can reproduce.\"/>\r\n\r\n\r\n        <!-- UI -->\r\n\r\n\t\t\r\n        <text name=\"input_VisualAnimalsDialog\" text=\"Change Visual Animals Amount\"/>\r\n        <text name=\"rl_button_apply\" text=\"Apply\"/>\r\n        <text name=\"rl_button_confirm\" text=\"Confirm\"/>\r\n        <text name=\"rl_button_recommended\" text=\"Recommended\"/>\r\n        <text name=\"rl_button_cancel\" text=\"Cancel\"/>\r\n        <text name=\"rl_button_random\" text=\"Random\"/>\r\n        <text name=\"rl_dialog_title\" text=\"Set Maximum Number of Visual Animals\"/>\r\n\r\n        <text name=\"rl_ui_unhealthy\" text=\"Too unhealthy\"/>\r\n        <text name=\"rl_ui_unhealthyBracketed\" text=\"No (too unhealthy)\"/>\r\n        <text name=\"rl_ui_noMaleAnimal\" text=\"No suitable male animal\"/>\r\n        <text name=\"rl_ui_noMaleAnimalBracketed\" text=\"No (no suitable male animal)\"/>\r\n        <text name=\"rl_ui_recoveringLastBirth\" text=\"Recovering from last birth\"/>\r\n        <text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"No (recovering from last birth)\"/>\r\n        <text name=\"rl_ui_tooYoung\" text=\"Too young\"/>\r\n        <text name=\"rl_ui_tooYoungBracketed\" text=\"No (too young)\"/>\r\n        <text name=\"rl_ui_pregnant\" text=\"Pregnant\"/>\r\n        <text name=\"rl_ui_lactating\" text=\"Lactating\"/>\r\n        <text name=\"rl_ui_canReproduce\" text=\"Can reproduce\"/>\r\n        <text name=\"rl_ui_impregnatedBy\" text=\"Impregnated by\"/>\r\n        <text name=\"rl_ui_unknown\" text=\"Unknown\"/>\r\n        <text name=\"rl_ui_yes\" text=\"Yes\"/>\r\n        <text name=\"rl_ui_no\" text=\"No\"/>\r\n        <text name=\"rl_ui_mother\" text=\"Mother\"/>\r\n        <text name=\"rl_ui_father\" text=\"Father\"/>\r\n        <text name=\"rl_ui_uniqueId\" text=\"Unique ID\"/>\r\n        <text name=\"rl_ui_farmId\" text=\"Farm ID\"/>\r\n        <text name=\"rl_ui_gender\" text=\"Gender\"/>\r\n        <text name=\"rl_ui_male\" text=\"Male\"/>\r\n        <text name=\"rl_ui_female\" text=\"Female\"/>\r\n        <text name=\"rl_ui_weight\" text=\"Weight\"/>\r\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Target weight\"/>\r\n        <text name=\"rl_ui_value\" text=\"Value\"/>\r\n        <text name=\"rl_ui_valuePerKilo\" text=\"Value per kg\"/>\r\n\t\t<text name=\"rl_ui_genetics\" text=\"Genetics\"/>\r\n\t\t<text name=\"rl_ui_overall\" text=\"Overall\"/>\r\n\t\t<text name=\"rl_ui_rename\" text=\"Change Name\"/>\r\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Could not find animal\"/>\r\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Impregnatable animals in pen\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Breeder Quality\"/>\r\n\t\t<text name=\"rl_ui_birthday\" text=\"Birthday\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Expected\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Expecting\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"baby\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"babies\"/>\r\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Origin\"/>\r\n\t\t<text name=\"rl_ui_months\" text=\"months\"/>\r\n\t\t<text name=\"rl_ui_month\" text=\"month\"/>\r\n\t\t<text name=\"rl_ui_years\" text=\"years\"/>\r\n\t\t<text name=\"rl_ui_year\" text=\"year\"/>\r\n\r\n\t\t<text name=\"rl_ui_milk\" text=\"Milk production\"/>\r\n\t\t<text name=\"rl_ui_wool\" text=\"Wool production\"/>\r\n\t\t<text name=\"rl_ui_eggs\" text=\"Egg production\"/>\r\n\t\t<text name=\"rl_ui_metabolism\" text=\"Metabolism\"/>\r\n\t\t<text name=\"rl_ui_meat\" text=\"Quality\"/>\r\n\t\t<text name=\"rl_ui_meat_github\" text=\"Meat Quality\"/>\r\n\t\t<text name=\"rl_ui_quality\" text=\"Quality\"/>\r\n\t\t<text name=\"rl_ui_quality_github\" text=\"Meat Quality\"/>\r\n\t\t<text name=\"rl_ui_health\" text=\"Health\"/>\r\n\t\t<text name=\"rl_ui_fertility\" text=\"Fertility\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Extremely low\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Very low\"/>\r\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Low\"/>\r\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Average\"/>\r\n\t\t<text name=\"rl_ui_genetics_high\" text=\"High\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Very high\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Extremely high\"/>\r\n\t\t<text name=\"rl_ui_genetics_highest\" text=\"Highest\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Extremely bad\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Very bad\"/>\r\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Bad\"/>\r\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Good\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Very good\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Extremely good\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_buySelected\" text=\"Buy selected\"/>\r\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Sell selected\"/>\r\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Move selected\"/>\r\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Are you sure you want to buy %s animals for %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Are you sure you want to sell %s animals for %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Are you sure you want to move %s animals?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s animals bought for %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s animals sold for %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s animals moved\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Monitor\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Monitor fee\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Apply Monitor\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Remove Monitor\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Food\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"Water\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Milk\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Manure\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Liquid manure\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Eggs\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Wool\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Goat milk\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / day\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / month\" tag=\"format\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Monitored\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Products\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Apply All Monitors\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Remove All Monitors\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Fee\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Left Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Right Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Background Colour\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Background Hue\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Background RGB\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Text Colour\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Text Hue\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"Text RGB\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s months\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s month\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Not Pregnant\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"Any\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Productivity\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Select All\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Select None\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Filters\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"No Name\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Has Name\"/>\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\r\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\r\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\r\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\r\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\r\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\r\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\r\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\r\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\r\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\r\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\r\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\r\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\r\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\r\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\r\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\r\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\r\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\r\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\r\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\r\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\r\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\r\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\r\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\r\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\r\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\r\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\r\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\r\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\r\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\r\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\r\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\r\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\r\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\r\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\r\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\r\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\r\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\r\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\t\t\r\n\t\t\r\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\r\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\r\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\r\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\r\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\r\n\t\t\r\n\t\t\r\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\r\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\r\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\r\n\t\t\r\n\t\t\r\n\t\t<!-- AI - BUYING -->\r\n\t\t\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\r\n\t\t\r\n\r\n\t\t<!-- AI - SELLING -->\r\n\t\t\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\r\n\t\t\r\n\r\n\t\t<!-- AI - CASTRATING -->\r\n\t\t\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\r\n\t\t\r\n\r\n\t\t<!-- AI - NAMING -->\r\n\t\t\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\r\n\t\t\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\r\n\r\n\r\n\t\t<!-- AI - AI -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\r\n\t\t<!--  SETTINGS  -->\r\n\t\t\r\n\r\n\t\t<text name=\"rl_settings\" text=\"Realistic Livestock\"/>\r\n\r\n\t\t<text name=\"rl_settings_off\" text=\"Off\"/>\r\n\t\t<text name=\"rl_settings_on\" text=\"On\"/>\r\n\r\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Animal Removal\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_label_github\" text=\"Animal Death\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Animals will not be removed due to pregnancy, health, age or accidents\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1_github\" text=\"Animals will not die due to pregnancy, health, age or accidents\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Animals will be removed due to pregnancy, health, age or accidents\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2_github\" text=\"Animals will die due to pregnancy, health, age or accidents\"/>\r\n\r\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Accident Chance\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Change the likelihood of animals being removed due to random accidents\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip_github\" text=\"Change the likelihood of animals dying due to random accidents\"/>\r\n\r\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Food Scale\"/>\r\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Change the amount of food eaten by animals\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Max Dealer Animals\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Change the maximum number of animals the animal dealer will have in stock per animal type\"/>\r\n\t\t\r\n\t\t<text name=\"rl_settings_resetDealer_label\" text=\"Reset Animal Dealer\"/>\r\n\t\t<text name=\"rl_settings_resetDealer_tooltip\" text=\"Remove all the dealer's animals and replenish the stock with new animals\"/>\r\n\t\t<text name=\"rl_settings_resetDealer_text\" text=\"Reset Animal Dealer\"/>\r\n\t\t\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Change Tag Colour\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Change the colour of ear tags\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Change Tag Colour\"/>\r\n\t\t\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Export To CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Export stats to CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Export To CSV\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (requires restart, must be unzipped)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitors\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"In order to see the majority of an animal's statistics, you need to apply a monitoring tag to it, which can be done through the animal menu (where you buy and sell animals). Monitoring tags are also visually shown on the animal, on their left ear next to their ID tag.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"Monitoring tags will result in important information being shown to you, including health, weight, lactation, production, and straw, food and water requirements.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"Applying a tag to an animal will cost you a small monthly subscription based on the animal's species. If you choose to remove the tag, the tag will be removed at the start of the next month.\"/>\r\n\t\t\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Female animals all require at least 1 male animal in order to potentially become pregnant. Both animals must be of the correct age and health, and must be from the same species. Breeding between different breeds (eg: holstein cow and angus bull) is allowed.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Inbreeding is not allowed. If a male and a female are directly related, they will not breed together.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"The chance for a female to become pregnant depends upon both her and the male's fertility. A female with higher fertility also has a significantly higher chance of producing more offspring at once.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Once a female becomes pregnant, she will start to carry her offspring. You can view the expected date of pregnancy and the number of offspring by looking at the animal in the pen, or by clicking on her in the animal menu.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"When she reaches her due date, she will give birth to her babies. However, the newborns have a certain chance of being removed, as does the mother if the pregnancy goes badly. Newborns that are born in an overcrowded pen will be sold automatically.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Production\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Cows of any breed will only begin to produce milk after giving birth. Once she has given birth, the cow will produce milk exponentially for 3 months, then her production will slowly drop for the next 6 months. 10 months after pregnancy, the cow will stop producing milk until her next pregnancy.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Sheep will produce wool in warm months. In cold months, under 12C, they will not produce wool.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"Milk, wool and egg production is further affected by the animal's genetics. An animal with good production genetics will produce more, whereas animal with bad genetics wont produce much at all.\"/>\r\n\t\t\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Weight\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Animals have a certain weight that which is affected by how much they eat and drink. Every species and breed has its own average weight which affects the weight of each animal.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Weight increases the value of the animal, and a low weight affects its chance of being removed each month.\"/>\r\n\t\t\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetics\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Each animal has 4 different genetic values; metabolism, fertility, health and quality. Genetics are mixed between the mother and father and then passed down to their children.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Metabolism affects the animal's ability to convert food into weight, and affects the amount it eats.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"Fertility affects the animal's chance of getting pregnant, or getting a female pregnant, and the number of offspring it will produce.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"Health affects the animal's health and its chance of being removed each month. An animal with higher health genetics will also have a longer lifespan.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"Quality affects the value of the animal itself, an animal with higher quality will sell for much more.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Cattle, sheep and chicken also have production genetics, which affects how much milk/eggs/wool they produce.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\t\t\r\n\t\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\r\n\t\t\r\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\r\n\t\t\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\t\t\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\t\t\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\t\t\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\t\t\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\r\n\t\t\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\r\n\t\t\r\n\t\t\r\n\t</texts>\r\n</l10n>"
  },
  {
    "path": "translations/translation_fi.xml",
    "content": "<?xml version='1.0' encoding='utf-8'?>\n<l10n>\n\t<texts>\n\t\t<!-- COWS -->\n\n\t\t<text name=\"fillType_bull\" text=\"Sonni\"/>\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Brown Swiss -sonni\"/>\n\t\t<text name=\"fillType_bull_holstein\" text=\"Holstein-sonni\"/>\n\t\t<text name=\"fillType_bull_angus\" text=\"Angus-sonni\"/>\n\t\t<text name=\"fillType_bull_limousin\" text=\"Limousin-sonni\"/>\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford-sonni\"/>\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Sonnit syövät mielellään ruohoa, heinää ja TMR-rehua.\"/>\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Tämä on urospuolinen vasikka.\"/>\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Terveet, vähintään 12 kuukauden ikäiset sonnit voivat lisääntyä.\"/>\n\n\t\t<!-- WATER BUFFALOS -->\n\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Vesipuhvelisonni\"/>\n\n\t\t<!-- PIGS -->\n\n\t\t<text name=\"fillType_boar\" text=\"Karju\"/>\n\t\t<text name=\"fillType_boar_landrace\" text=\"Saksan Maatiassika-karju\"/>\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Bunte Bentheimer Schwein -karju\"/>\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Berkshire-karju\"/>\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Terveet, vähintään 8 kuukauden ikäiset karjut voivat lisääntyä.\"/>\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Karjut syövät lähes mitä tahansa. Niille voi syöttää maissia, vehnää, ohraa, rypsiä, auringonkukkia, soijapapuja, perunoita, durraa ja sokerijuurikkaita.\"/>\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Tämä on urospuolinen porsas.\"/>\n\n\t\t<!-- SHEEP -->\n\n\t\t<text name=\"fillType_ram\" text=\"Pässi\"/>\n\t\t<text name=\"fillType_ram_landrace\" text=\"Bentheimin Maatiaiskanta-pässi\"/>\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Steinschaf-pässi\"/>\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Black Welsh Mountain -pässi\"/>\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Sveitsiläinen Mustaruskea Vuoristopässi\"/>\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Pässit syövät ruohoa ja heinää.\"/>\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Tämä on urospuolinen karitsa.\"/>\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Terveet, vähintään 5 kuukauden ikäiset pässit voivat lisääntyä.\"/>\n\n\t\t<!-- GOATS -->\n\n\t\t<text name=\"fillType_ram_goat\" text=\"Pukki\"/>\n\t\t\n\t\t<!-- HORSES -->\n\n\t\t<text name=\"fillType_stallion\" text=\"Ori\"/>\n\t\t<text name=\"fillType_stallion_gray\" text=\"Harmaa ori\"/>\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Pinto ori\"/>\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Palomino ori\"/>\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Raudikko ori\"/>\n\t\t<text name=\"fillType_stallion_bay\" text=\"Ruunikko ori\"/>\n\t\t<text name=\"fillType_stallion_black\" text=\"Musta ori\"/>\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Tummanruskea ori\"/>\n\t\t<text name=\"fillType_stallion_dun\" text=\"Hallakko ori\"/>\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Orit pitävät heinästä, kaurasta ja durrasta.\"/>\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Orit voidaan myydä voitolla.\"/>\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Terveet, vähintään 36 kuukauden ikäiset orit voivat lisääntyä.\"/>\n\n\n        <!-- UI -->\n\n\n\t\t<text name=\"input_VisualAnimalsDialog\" text=\"Vaihda visuaalisten eläinten määrä\"/>\n\t\t<text name=\"rl_button_apply\" text=\"Käytä\"/>\n\t\t<text name=\"rl_button_confirm\" text=\"Hyväksy\"/>\n\t\t<text name=\"rl_button_recommended\" text=\"Suositeltu\"/>\n\t\t<text name=\"rl_button_cancel\" text=\"Peruuta\"/>\n\t\t<text name=\"rl_button_random\" text=\"Satunnainen\"/>\n\t\t<text name=\"rl_dialog_title\" text=\"Aseta visuaalisten eläinten maksimimäärä\"/>\n\n\t\t<text name=\"rl_ui_unhealthy\" text=\"Liian huonokuntoinen\"/>\n\t\t<text name=\"rl_ui_unhealthyBracketed\" text=\"Ei (liian huonokuntoinen)\"/>\n\t\t<text name=\"rl_ui_noMaleAnimal\" text=\"Ei soveltuvaa uros eläintä\"/>\n\t\t<text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Ei (ei soveltuvaa uros eläintä)\"/>\n\t\t<text name=\"rl_ui_recoveringLastBirth\" text=\"Toipumassa viimeisimmästä synnytyksestä\"/>\n\t\t<text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Ei (toipumassa viimeisimmästä synnytyksestä)\"/>\n\t\t<text name=\"rl_ui_tooYoung\" text=\"Liian nuori\"/>\n\t\t<text name=\"rl_ui_tooYoungBracketed\" text=\"Ei (liian nuori)\"/>\n\t\t<text name=\"rl_ui_pregnant\" text=\"Tiineenä\"/>\n\t\t<text name=\"rl_ui_lactating\" text=\"Imettävä\"/>\n\t\t<text name=\"rl_ui_canReproduce\" text=\"Voi lisääntyä\"/>\n\t\t<text name=\"rl_ui_impregnatedBy\" text=\"Siittänyt\"/>\n\t\t<text name=\"rl_ui_unknown\" text=\"Ei tiedossa\"/>\n\t\t<text name=\"rl_ui_yes\" text=\"Kyllä\"/>\n\t\t<text name=\"rl_ui_no\" text=\"Ei\"/>\n\t\t<text name=\"rl_ui_mother\" text=\"Emo\"/>\n\t\t<text name=\"rl_ui_father\" text=\"Isä\"/>\n\t\t<text name=\"rl_ui_uniqueId\" text=\"Yksilöllinen ID\"/>\n\t\t<text name=\"rl_ui_farmId\" text=\"Farmin ID\"/>\n\t\t<text name=\"rl_ui_gender\" text=\"Sukupuoli\"/>\n\t\t<text name=\"rl_ui_male\" text=\"Uros\"/>\n\t\t<text name=\"rl_ui_female\" text=\"Naaras\"/>\n\t\t<text name=\"rl_ui_weight\" text=\"Paino\"/>\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Tavoitepaino\"/>\n\t\t<text name=\"rl_ui_value\" text=\"Arvo\"/>\n\t\t<text name=\"rl_ui_valuePerKilo\" text=\"Arvo kilolta\"/>\n\t\t<text name=\"rl_ui_genetics\" text=\"Genetiikka\"/>\n\t\t<text name=\"rl_ui_overall\" text=\"Kokonais\"/>\n\t\t<text name=\"rl_ui_rename\" text=\"Vaihda nimi\"/>\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Eläintä ei löytynyt\"/>\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Siitettäviä eläimiä aitauksessa\"/>\n\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Siittäjän laatu\"/>\n\t\t<text name=\"rl_ui_birthday\" text=\"Syntynyt\"/>\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Laskettu aika\"/>\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Odottaa\"/>\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"poikanen\"/>\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"poikaset\"/>\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Alkuperä\"/>\n\t\t<text name=\"rl_ui_months\" text=\"kuukautta\"/>\n\t\t<text name=\"rl_ui_month\" text=\"kuukausi\"/>\n\t\t<text name=\"rl_ui_years\" text=\"vuotta\"/>\n\t\t<text name=\"rl_ui_year\" text=\"vuosi\"/>\n\n\t\t<text name=\"rl_ui_milk\" text=\"Maidon tuotto\"/>\n\t\t<text name=\"rl_ui_wool\" text=\"Villan tuotto\"/>\n\t\t<text name=\"rl_ui_eggs\" text=\"Munien tuotto\"/>\n\t\t<text name=\"rl_ui_metabolism\" text=\"Aineenvaihdunta\"/>\n\t\t<text name=\"rl_ui_meat\" text=\"Laatu\"/>\n\t\t<text name=\"rl_ui_meat_github\" text=\"Lihan laatu\"/>\n\t\t<text name=\"rl_ui_quality\" text=\"Laatu\"/>\n\t\t<text name=\"rl_ui_quality_github\" text=\"Lihan laatu\"/>\n\t\t<text name=\"rl_ui_health\" text=\"Terveys\"/>\n\t\t<text name=\"rl_ui_fertility\" text=\"Hedelmällisyys\"/>\n\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Lisääntymiskyvytön\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Äärimmäisen alhainen\"/>\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Erittäin alhainen\"/>\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Alhainen\"/>\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Keskiverto\"/>\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Korkea\"/>\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Erittäin korkea\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Äärimmäisen korkea\"/>\n\t\t<text name=\"rl_ui_genetics_highest\" text=\"Korkein mahdollinen\"/>\n\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Äärimmäisen huono\"/>\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Erittäin huono\"/>\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Huono\"/>\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Hyvä\"/>\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Erittäin hyvä\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Äärimmäisen hyvä\"/>\n\n\t\t<text name=\"rl_ui_buySelected\" text=\"Osta valitut\"/>\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Myy valitut\"/>\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Siirrä valitut\"/>\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Haluatko varmasti ostaa %s eläintä %s:lla?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Haluatko varmasti myydä %s eläintä %s:lla?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Haluatko varmasti siirtää %s eläintä?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s eläintä ostettiin %s:lla\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s eläintä myytiin %s:lla\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s eläintä siirrettiin\" tag=\"format\"/>\n\t\t\n\t\t<text name=\"rl_ui_monitor\" text=\"Seurantalaitteet\"/>\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Seurantalaitetilaukset\"/>\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Seurantalaitetilaukset\"/>\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Seurantalaitemaksu\"/>\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Aseta seurantalaite\"/>\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Poista seurantalaite\"/>\n\t\t<text name=\"rl_ui_input_food\" text=\"Ruoka\"/>\n\t\t<text name=\"rl_ui_input_water\" text=\"Vesi\"/>\n\t\t<text name=\"rl_ui_input_straw\" text=\"Olki\"/>\n\t\t<text name=\"rl_ui_output_milk\" text=\"Maito\"/>\n\t\t<text name=\"rl_ui_output_manure\" text=\"Lanta\"/>\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Liete\"/>\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Munia\"/>\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Villa\"/>\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Vuohenmaito\"/>\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fl / päivä\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / kk\" tag=\"format\"/>\n\n\t\t<text name=\"rl_ui_animalType\" text=\"Eläintyyppi\"/>\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Seurannassa\"/>\n\t\t<text name=\"rl_ui_production\" text=\"Tuotanto\"/>\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Aseta kaikille seurantalaite\"/>\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Poista kaikilta seurantalaite\"/>\n\t\t<text name=\"rl_ui_fee\" text=\"Maksu\"/>\n\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Vasen korvamerkki\"/>\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Oikea korvamerkki\"/>\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Taustaväri\"/>\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Taustan sävy\"/>\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Taustan RGB\"/>\n\t\t<text name=\"rl_ui_textColour\" text=\"Tekstin väri\"/>\n\t\t<text name=\"rl_ui_textHue\" text=\"Tekstin sävy\"/>\n\t\t<text name=\"rl_ui_textRgb\" text=\"Tekstin RGB\"/>\n\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s kuukautta\"/>\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s kuukausi\"/>\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Ei tiineenä\"/>\n\t\t<text name=\"rl_ui_any\" text=\"Mikä tahansa\"/>\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Tiineys\"/>\n\t\t<text name=\"rl_ui_productivity\" text=\"Tuottavuus\"/>\n\t\t<text name=\"rl_ui_selectAll\" text=\"Valitse kaikki\"/>\n\t\t<text name=\"rl_ui_selectNone\" text=\"Älä valitse mitään\"/>\n\t\t<text name=\"rl_ui_filters\" text=\"Suodattimet\"/>\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"Ei nimeä\"/>\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"On nimi\"/>\n\n\n\n\t\t<text name=\"rl_ui_castrated\" text=\"Kastroitu\"/>\n\t\t<text name=\"rl_ui_castrate\" text=\"Kastroi\"/>\n\t\t<text name=\"rl_ui_type\" text=\"Tyyppi\"/>\n\t\t<text name=\"rl_ui_date\" text=\"Päivämäärä\"/>\n\t\t<text name=\"rl_ui_message\" text=\"Viesti\"/>\n\t\t<text name=\"rl_ui_messages\" text=\"Viestit\"/>\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"tuntemattomia syitä\"/>\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s / %s\"/>\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Poista viesti\"/>\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Navetalla '%s' on lukemattomia viestejä!\"/>\n\t\t<text name=\"rl_ui_herdsman\" text=\"Lomittaja\"/>\n\t\t<text name=\"rl_ui_budget\" text=\"Budjetti\"/>\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budjetin tyyppi\"/>\n\t\t<text name=\"rl_ui_fixed\" text=\"Kiinteä\"/>\n\t\t<text name=\"rl_ui_percentage\" text=\"Prosenttiosuus\"/>\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Eläimiä enintään\"/>\n\t\t<text name=\"rl_ui_infinite\" text=\"Loputon\"/>\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Lomittajan viimeisimmät ostot\"/>\n\t\t<text name=\"rl_ui_previousWage\" text=\"Edellinen palkka\"/>\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Lomittajan palkat\"/>\n\t\t<text name=\"finance_herdsmanWages\" text=\"Lomittajan palkat\"/>\n\t\t<text name=\"rl_ui_medicine\" text=\"Lääke\"/>\n\t\t<text name=\"finance_medicine\" text=\"Lääke\"/>\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Siemennyskapillaari\"/>\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Siemennyskapillaari\"/>\n\t\t<text name=\"finance_semenPurchase\" text=\"Siemennyskapillaari\"/>\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Siemennyskapillaari\"/>\n\t\t<text name=\"rl_ui_noDiseases\" text=\"Ei tauteja\"/>\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Vain taudit\"/>\n\t\t<text name=\"rl_ui_naming\" text=\"Nimeäminen\"/>\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Aakkosjärjestys\"/>\n\t\t<text name=\"rl_ui_breed\" text=\"Rotu\"/>\n\t\t<text name=\"rl_ui_dontMark\" text=\"Älä merkitse\"/>\n\t\t<text name=\"rl_ui_mark\" text=\"Merkitse\"/>\n\t\t<text name=\"rl_ui_unmark\" text=\"Poista merkintä\"/>\n\t\t<text name=\"rl_ui_favourite\" text=\"Suosikki\"/>\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Poista suosikki\"/>\n\t\t<text name=\"rl_ui_quantity\" text=\"Määrä\"/>\n\t\t<text name=\"rl_ui_dewar\" text=\"Säiliö\"/>\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Siemennystuote ostetty onnistuneesti. Voit noutaa sen kaupalta\"/>\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Siemennystuote ostettu onnistuneesti. Voit noutaa sen kaupalta\"/>\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Siemennystuotteen ostaminen epäonnistui\"/>\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Siemennystuotteen ostaminen epäonnistui\"/>\n\t\t<text name=\"rl_ui_earTag\" text=\"Korvamerkki\"/>\n\t\t<text name=\"rl_ui_species\" text=\"Laji\"/>\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Siemennyskapillaari\"/>\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Siemennyskapillaarit\"/>\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Keinosiemennys\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"Sinulla ei ole oikeuksia käydä kauppaa eläimillä tai ostaa siemennystuotetta.\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"Sinulla ei ole oikeuksia käydä kauppaa eläimillä tai ostaa siemennystuotetta.\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"Sinulla ei ole tarpeeksi rahaa siemennystuotteen ostoon.\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"Sinulla ei ole tarpeeksi rahaa siemennystuotteen ostoon.\"/>\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Ota siemennyskapillaari\"/>\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Siemennä %s\"/>\n\t\t<text name=\"rl_ui_inseminate\" text=\"Siemennä\"/>\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"Tämä siemennyskapillaari on tyhjä\"/>\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Keskiarvo onnistumisesta: \"/>\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Keskiarvo onnistumisessa\"/>\n\t\t<text name=\"rl_ui_success\" text=\"Onnistui\"/>\n\t\t<text name=\"rl_ui_save\" text=\"Tallenna\"/>\n\t\t<text name=\"rl_ui_load\" text=\"Lataa\"/>\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Tallenna profiili\"/>\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Lataa profiili\"/>\n\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\n\n\n\t\t<text name=\"rl_insemination_male\" text=\"Vain naaraspuoliset eläimet voidaan keinosiementää\"/>\n\t\t<text name=\"rl_insemination_pregnant\" text=\"Tämä eläin on jo tiineenä\"/>\n\t\t<text name=\"rl_insemination_animalType\" text=\"Eläimen täytyy olla samaa lajia kuin isä\"/>\n\t\t<text name=\"rl_insemination_inseminated\" text=\"Tämä eläin on jo saanut keinosiemennyksen\"/>\n\t\t<text name=\"rl_insemination_recovering\" text=\"Tämä eläin toipuu edellisestä tiineydestä\"/>\n\t\t<text name=\"rl_insemination_father\" text=\"Sukusiitos ei ole sallittua\"/>\n\t\t<text name=\"rl_insemination_young\" text=\"Tämä eläin on liian nuori keinosiemennykseen\"/>\n\n\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Lomittaja on merkinnyt myyväksi\"/>\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Lomittaja on merkinnyt kastrointiin\"/>\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Lomittaja on merkinnyt hoitoa varten\"/>\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Lomittaja on merkinnyt keinosiemennykseen\"/>\n\t\t<text name=\"rl_mark_player\" text=\"Pelaajan merkitsemä\"/>\n\n\n\t<!-- AI - BUYING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"Lomittaja ei osta eläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"Lomittaja ostaa eläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Ostobudjetti on kiinteä määrä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Ostobudjetti on prosenttiosuus tilan rahoista.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"Lomittaja käyttää enintään %s per päivä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"Lomittaja käyttää enintään %s tilan rahoista päivässä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"Lomittaja ostaa enintään %s eläintä päivässä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"Lomittaja ostaa vain %s -rodun eläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"Lomittaja ostaa minkä tahansa rodun eläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"Lomittaja ostaa vain terveitä eläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"Lomittaja ostaa eläimiä taudeista riippumatta.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"Lomittaja ostaa vain naaraseläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"Lomittaja ostaa sekä naaras- että uroseläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"Lomittaja ostaa vain uroseläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"Lomittaja ostaa vain eläimiä, joiden ikä on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"Lomittaja ostaa vain eläimiä, joiden ikä on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"Lomittaja ostaa vain eläimiä, joiden laatu on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"Lomittaja ostaa vain eläimiä, joiden laatu on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"Lomittaja ostaa vain eläimiä, joiden hedelmällisyys on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"Lomittaja ostaa vain eläimiä, joiden hedelmällisyys on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"Lomittaja ostaa vain eläimiä, joiden terveys on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"Lomittaja ostaa vain eläimiä, joiden terveys on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"Lomittaja ostaa vain eläimiä, joiden tuottavuus on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"Lomittaja ostaa vain eläimiä, joiden tuottavuus on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"Lomittaja ostaa vain eläimiä, joiden aineenvaihdunta on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"Lomittaja ostaa vain eläimiä, joiden aineenvaihdunta on %s ja %s välillä.\"/>\n\n\n\t<!-- AI - SELLING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"Lomittaja ei myy eläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"Lomittaja myy eläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"Lomittaja myy korkeintaan %s eläintä päivässä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"Lomittaja ei merkitse eläimiä myytäväksi.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"Lomittaja merkitsee eläimiä myytäväksi.\"/>\n\t\t\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"Lomittaja myy eläimiä riippumatta sairauksista.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"Lomittaja myy vain sairaita eläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"Lomittaja myy vain naaraseläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"Lomittaja myy sekä naaras- että uroseläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"Lomittaja myy vain uroseläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"Lomittaja myy vain eläimiä, joiden ikä on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"Lomittaja myy vain eläimiä, joiden ikä on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"Lomittaja myy vain eläimiä, joiden laatu on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"Lomittaja myy vain eläimiä, joiden laatu on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"Lomittaja myy vain eläimiä, joiden hedelmällisyys on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"Lomittaja myy vain eläimiä, joiden hedelmällisyys on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"Lomittaja myy vain eläimiä, joiden terveys on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"Lomittaja myy vain eläimiä, joiden terveys on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"Lomittaja myy vain eläimiä, joiden tuottavuus on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"Lomittaja myy vain eläimiä, joiden tuottavuus on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"Lomittaja myy vain eläimiä, joiden aineenvaihdunta on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"Lomittaja myy vain eläimiä, joiden aineenvaihdunta on %s ja %s välillä.\"/>\n\n\n\t<!-- AI - CASTRATING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"Lomittaja ei kastroi eläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"Lomittaja kastroi eläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"Lomittaja ei merkitse eläimiä kastraatiota varten.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"Lomittaja merkitsee eläimiä kastraatiota varten.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"Lomittaja kastroi eläimiä riippumatta sairauksista.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"Lomittaja kastroi vain sairaita eläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"Lomittaja kastroi vain eläimiä, joiden ikä on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"Lomittaja kastroi vain eläimiä, joiden ikä on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"Lomittaja kastroi vain eläimiä, joiden laatu on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"Lomittaja kastroi vain eläimiä, joiden laatu on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"Lomittaja kastroi vain eläimiä, joiden hedelmällisyys on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"Lomittaja kastroi vain eläimiä, joiden hedelmällisyys on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"Lomittaja kastroi vain eläimiä, joiden terveys on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"Lomittaja kastroi vain eläimiä, joiden terveys on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"Lomittaja kastroi vain eläimiä, joiden tuottavuus on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"Lomittaja kastroi vain eläimiä, joiden tuottavuus on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"Lomittaja kastroi vain eläimiä, joiden aineenvaihdunta on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"Lomittaja kastroi vain eläimiä, joiden aineenvaihdunta on %s ja %s välillä.\"/>\n\n\n\t<!-- AI - NAMING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"Lomittaja ei nimeä eläimiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"Lomittaja nimeää eläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"Lomittaja nimeää eläimet satunnaisesti.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"Lomittaja nimeää eläimet aakkosjärjestyksessä.\"/>\n\n\n\t<!-- AI - AI -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"Lomittaja ei tee keinohedelmöityksiä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"Lomittaja tekee keinohedelmöityksiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"Lomittaja keinohedelmöittää enintään %s eläintä päivässä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"Lomittaja ei merkitse eläimiä keinohedelmöitettäväksi.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"Lomittaja merkitsee eläimiä keinohedelmöitettäväksi.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"Lomittaja keinohedelmöittää eläimiä riippumatta sairauksista.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"Lomittaja keinohedelmöittää vain sairaita eläimiä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"Lomittaja käyttää siementä lähteestä %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"Lomittaja käyttää siementä lähteestä %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"Lomittaja käyttää mitä tahansa kelvollista siementä.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"Lomittaja käyttää mitä tahansa kelvollista siementä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden ikä on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden ikä on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden laatu on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden laatu on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden hedelmällisyys on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden hedelmällisyys on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden terveys on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden terveys on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden tuottavuus on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden tuottavuus on %s ja %s välillä.\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden aineenvaihdunta on %s.\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"Lomittaja keinohedelmöittää vain eläimiä, joiden aineenvaihdunta on %s ja %s välillä.\"/>\n\n\n\n\n\t\t<!--  SETTINGS  -->\n\n\n\t\t<text name=\"rl_settings\" text=\"Realistinen Karja\"/>\n\n\t\t<text name=\"rl_settings_off\" text=\"Pois\"/>\n\t\t<text name=\"rl_settings_on\" text=\"Päällä\"/>\n\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Eläinten poistuminen\"/>\n\t\t<text name=\"rl_settings_deathEnabled_label_github\" text=\"Eläinten kuoleminen\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Eläimiä ei poisteta tiineyden, terveyden, vanhuuden tai onnettomuuden vuoksi\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1_github\" text=\"Eläimiä ei kuole tiineyden, terveyden, vanhuuden tai onnettomuuden vuoksi\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Eläimiä poistetaan tiineyden, terveyden, vanhuuden tai onnettomuuden vuoksi\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2_github\" text=\"Eläimiä kuolee tiineyden, terveyden, vanhuuden tai onnettomuuden vuoksi\"/>\n\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Onnettomuuden todennäköisyys\"/>\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Muuta satunnaisista onnettomuuksista johtuvaa eläinten poistumisen todennäköisyyttä\"/>\n\t\t<text name=\"rl_settings_accidentsChance_tooltip_github\" text=\"Muuta satunnaisista onnettomuuksista johtuvaa eläinten kuolemisen todennäköisyyttä\"/>\n\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Ruuankulutus\"/>\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Muuttaa eläinten kuluttamaa ruuan määrää\"/>\n\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Eläinten enimmäismäärä eläinkauppiaalla\"/>\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Muuta eläinkauppiaalta ostettavien eläinten enimmäismäärää eläinlajia kohden\"/>\n\n\t\t<text name=\"rl_settings_resetDealer_label\" text=\"Nollaa eläinkauppias\"/>\n\t\t<text name=\"rl_settings_resetDealer_tooltip\" text=\"Poista kaikki eläinkauppiaan eläimet ja täydennä varastot uusilla eläimillä\"/>\n\t\t<text name=\"rl_settings_resetDealer_text\" text=\"Nollaa eläinkauppias\"/>\n\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Muuta merkin väriä\"/>\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Muuta korvamerkin väriä\"/>\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Muuta merkin väriä\"/>\n\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Vie CSV:ksi\"/>\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Vie tilastot CSV:ksi\"/>\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Vie CSV:ksi\"/>\n\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Enimmäismäärä viestejä\"/>\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"Korkeampi määrä kasvattaa tallennuskansiosi kokoa. Kun tämä raja on saavutettu, vanhimmat viestit poistetaan.\"/>\n\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\n\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\n\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\n\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\n\n\n\n\t\t<!--  HELP  -->\n\n\n\t\t<text name=\"rl_help_monitors_title\" text=\"Seurantalaitteet\"/>\n\t\t<text name=\"rl_help_monitors_1\" text=\"Nähdäksesi suurimman osan eläimen tilastoista, sinun on kiinnitettävä siihen seurantalaite, jonka voit tehdä eläinvalikon kautta (jossa ostetaan ja myydään eläimiä). Seurantalaitteet näkyvät myös visuaalisesti eläimen vasemmassa korvassa, tunnistemerkin vieressä.\"/>\n\t\t<text name=\"rl_help_monitors_2\" text=\"Seurantalaitteen avulla sinulle näytetään tärkeitä tietoja, mm. terveys, paino, imetys, tuotanto sekä olkien, ruoan ja veden tarve.\"/>\n\t\t<text name=\"rl_help_monitors_3\" text=\"Laitteen kiinnittämisestä peritään pieni kuukausimaksun eläimen lajin mukaan. Jos päätät poistaa laitteen, niin se poistetaan seuraavan kuun alussa.\"/>\n\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Tiineys\"/>\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Kaikki naaraspuoliset eläimet tarvitsevat vähintään yhden uroseläimen tullakseen tiineeksi. Molempien eläinten on oltava oikean ikäisiä, terveitä sekä samaa lajia. Jalostus eri rotujen välillä (esim. holstein-lehmä ja angushärkä) on sallittua.\"/>\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Sukusiitos ei ole sallittua. Jos uros ja naaras ovat suoraan sukua, he eivät lisäänny yhdessä.\"/>\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"Naaraan mahdollisuus tulla tiineeksi riippuu kummankin hedelmällisyydestä. Naaralla, jolla on korkeampi hedelmällisyys, on myös huomattavasti suurempi mahdollisuus tuottaa kerralla enemmän jälkeläisiä.\"/>\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Kun naaras tulee tiineeksi, alkaa se kantamaan jälkeläisiä. Näet odotetun tiineyden päivämäärän ja jälkeläisten lukumäärän katsomalla eläintä karsinassa tai klikkaamalla sitä eläinvalikosta.\"/>\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"Naaras poikii odottettuna päivänä. Vastasyntyneillä on kuitenkin tietty mahdollisuus poistua, kuten myös emolla, jos raskaus sujuu huonosti. Ahtaaseen karsinaan syntyneet vastasyntyneet myydään automaattisesti.\"/>\n\n\t\t<text name=\"rl_help_production_title\" text=\"Tuottavuus\"/>\n\t\t<text name=\"rl_help_production_1\" text=\"Kaikkien rotujen lehmät alkavat tuottaa maitoa vasta poikimisen jälkeen. Kun lehmä on poikinut, se tuottaa maitoa eksponentiaalisesti 3 kuukauden ajan, minkä jälkeen tuotanto laskee hitaasti seuraavan 6 kuukauden ajan. 10 kuukautta tiineyden jälkeen lehmä lopettaa maidontuotannon seuraavaan tiineyteen asti.\"/>\n\t\t<text name=\"rl_help_production_2\" text=\"Lampaat tuottavat villaa lämpiminä kuukausina. Kylminä kuukausina alle 12 C:ssa ne eivät tuota villaa.\"/>\n\t\t<text name=\"rl_help_production_3\" text=\"Maidon, villan ja munien tuotantoon vaikuttaa eläimen genetiikka. Eläin, jolla on hyvä tuotantogenetiikka, tuottaa enemmän, kun taas eläin, jolla on huono genetiikka, ei tuota juuri ollenkaan.\"/>\n\n\t\t<text name=\"rl_help_weight_title\" text=\"Paino\"/>\n\t\t<text name=\"rl_help_weight_1\" text=\"Eläimillä on tietty paino, johon vaikuttaa se, kuinka paljon ne syövät ja juovat. Jokaisella lajilla ja rodulla on oma keskipainonsa, joka vaikuttaa kunkin eläimen painoon.\"/>\n\t\t<text name=\"rl_help_weight_2\" text=\"Paino nostaa eläimen arvoa ja alhainen paino vaikuttaa sen mahdollisuuteen poistua joka kuukausi.\"/>\n\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetiikka\"/>\n\t\t<text name=\"rl_help_genetics_1\" text=\"Jokaisella eläimellä on 4 erilaista geneettistä arvoa: aineenvaihdunta, hedelmällisyys, terveys ja laatu. Genetiikka sekoitetaan emon ja isän välillä ja välitetään sitten poikasille.\"/>\n\t\t<text name=\"rl_help_genetics_2\" text=\"Aineenvaihdunta vaikuttaa eläimen kykyyn muuntaa ruokaa painoksi ja vaikuttaa sen syömään määrään.\"/>\n\t\t<text name=\"rl_help_genetics_3\" text=\"Hedelmällisyys vaikuttaa naaraan mahdollisuuteen tulla tiineeksi ja poikasten määrään, sekä uuroksen mahdollisuutta saattaa naaras tiineeksi.\"/>\n\t\t<text name=\"rl_help_genetics_4\" text=\"Terveys vaikuttaa eläimen terveyteen ja sen mahdollisuuteen poistua joka kuukausi. Eläimillä, joilla on korkeampi terveysgenetiikka, on myös pidempi elinikä.\"/>\n\t\t<text name=\"rl_help_genetics_5\" text=\"Laatu vaikuttaa itse eläimen arvoon, laadukkaammasta eläimestä saa korkeamman hinnan.\"/>\n\t\t<text name=\"rl_help_genetics_6\" text=\"Nautaeläimillä, lampailla ja kanoilla on myös tuotantogenetiikkaa, joka vaikuttaa siihen, kuinka paljon maitoa/munia/villaa ne tuottavat.\"/>\n\n\n\n\t\t<!--  DISEASES  -->\n\n\n\t\t<text name=\"rl_ui_immune\" text=\"Immuuni\"/>\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Aloita hoito\"/>\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Jatka hoitoa\"/>\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Lopeta hoito\"/>\n\t\t<text name=\"rl_ui_duration\" text=\"Kesto\"/>\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Hoidettavana\"/>\n\t\t<text name=\"rl_ui_notTreated\" text=\"Ei hoidettavana\"/>\n\t\t<text name=\"rl_ui_carrier\" text=\"Kantaja\"/>\n\n\t\t<text name=\"rl_diseases\" text=\"Taudit\"/>\n\t\t<text name=\"rl_disease\" text=\"Tauti\"/>\n\n\t\t<text name=\"rl_disease_mastitis\" text=\"Utaretulehdus\"/>\n\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM (selkärangan epämuodostuma)\"/>\n\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Suu- ja sorkkatauti\"/>\n\n\t\t<text name=\"rl_disease_ped\" text=\"PED (sikojen epidemiaripuli)\"/>\n\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Lintuinfluenssa\"/>\n\n\n\n\t\t<!--  MESSAGES  -->\n\n\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Tiineys\"/>\n\t\t<text name=\"rl_messageTitle_death\" text=\"Poistuma\"/>\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Kuolema\"/>\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Tauti\"/>\n\t\t<text name=\"rl_messageTitle_name\" text=\"Nimi\"/>\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Siirtymä\"/>\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Lomittaja\"/>\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Keinosiemennys\"/>\n\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Synnytti poikasen\"/>\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Synnytti %s poikasta\"/>\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s poikasta myytiin hintaan %s tilanpuutteen vuoksi\"/>\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s poikasta poistettiin syntymän yhteydessä\"/>\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s poikasta kuoli syntymässä\"/>\n\t\t<text name=\"rl_message_death\" text=\"Poistettu syystä: %s\"/>\n\t\t<text name=\"rl_message_death_github\" text=\"Kuoli syystä: %s\"/>\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Sairastui tautiin: %s\"/>\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Parani taudista: %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Aloitettiin hoito: %s klo %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Hoidon jatkaminen: %s klo %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Hoitotoimenpiteet lopetettu: %s\"/>\n\t\t<text name=\"rl_message_nameChange\" text=\"Nimi muutettu: '%s' → '%s'\"/>\n\t\t<text name=\"rl_message_nameAdded\" text=\"Annettiin nimi: '%s'\"/>\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Nimi '%s' poistettiin\"/>\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"Ostettiin eläin hintaan %s\"/>\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"Ostettiin %s eläintä hintaan %s\"/>\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"Myytiin eläin hintaan %s\"/>\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"Myytiin %s eläintä hintaan %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"Siirrettiin eläin kohteeseen %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"Siirrettiin %s eläintä kohteeseen %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"Siirrettiin eläin paikasta %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"Siirrettiin %s eläintä paikasta %s\"/>\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Lomittaja osti eläimen hintaan %s\"/>\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Lomittaja osti %s eläintä hintaan %s\"/>\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Lomittaja myi eläimen hintaan %s\"/>\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Lomittaja myi %s eläintä hintaan %s\"/>\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Lomittaja kastroi eläimen\"/>\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Lomittaja kastroi %s eläintä\"/>\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Lomittaja nimesi eläimen\"/>\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Lomittaja nimesi %s eläintä\"/>\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Lomittaja merkitsi eläimen myytäväksi\"/>\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Lomittaja merkitsi %s eläintä myytäväksi\"/>\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Lomittaja merkitsi eläimen kastrointiin\"/>\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Lomittaja merkitsi %s eläintä kastroitaviksi\"/>\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Lomittaja merkitsi eläimen hoitoa varten\"/>\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Lomittaja merkitsi %s eläintä hoitoa varten\"/>\n\t\t<text name=\"rl_message_insemination_success\" text=\"Keinosiemennys onnistui\"/>\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Keinosiemennys epäonnistui\"/>\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Lomittaja merkitsi eläimen keinosiemennykseen\"/>\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Lomittaja merkitsi %s eläintä keinosiemennykseen\"/>\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Lomittaja keinosiemensi eläimen\"/>\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Lomittaja keinosiemensi %s eläintä\"/>\n\n\n\n\t\t<!--  DEATHS  -->\n\n\n\t\t<text name=\"rl_death_pregnancy\" text=\"ongelmallinen tiineys\"/>\n\t\t<text name=\"rl_death_health\" text=\"heikko terveys\"/>\n\t\t<text name=\"rl_death_age\" text=\"vanhuus\"/>\n\t\t<text name=\"rl_death_accident\" text=\"onnettomuus\"/>\n\t\t\n\t</texts>\n</l10n>"
  },
  {
    "path": "translations/translation_fr.xml",
    "content": "<l10n>\r\n\t<texts>\r\n\t\t<!-- COWS -->\r\n\t\t\r\n\t\t<text name=\"fillType_bull\" text=\"Taureau\"/>\r\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Taureau Brun-Suisse\"/>\r\n\t\t<text name=\"fillType_bull_holstein\" text=\"Taureau Holstein\"/>\r\n\t\t<text name=\"fillType_bull_angus\" text=\"Taureau Angus\"/>\r\n\t\t<text name=\"fillType_bull_limousin\" text=\"Taureau Limousin\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Taureau Hereford\"/>\r\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Les taureaux aiment l'herbe, le foin et le TMR.\"/>\r\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Il s'agit d'un veau mâle.\"/>\r\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Les taureaux en bonne santé et âgés de plus de 12 mois peuvent se reproduire.\"/>\r\n\r\n\t\t<!-- WATER BUFFALOS -->\r\n\r\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Taureau buffle d'eau\"/>\r\n\r\n\t\t<!-- PIGS -->\r\n\t\t\r\n\t\t<text name=\"fillType_boar\" text=\"Verrat\"/>\r\n\t\t<text name=\"fillType_boar_landrace\" text=\"Sanglier de race locale\"/>\r\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Sanglier à Pied Noir\"/>\r\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Sanglier du Berkshire\"/>\r\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Les verrats en bonne santé et âgés de plus de 8 mois peuvent se reproduire.\"/>\r\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Les sangliers mangent presque n'importe quoi. Vous pouvez leur donner du maïs, du blé, de l'orge, du canola, du tournesol, du soja, des pommes de terre, du sorgho et des betteraves sucrières.\"/>\r\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Il s'agit d'un porcelet mâle.\"/>\r\n\r\n\t\t<!-- SHEEP -->\r\n\t\t\r\n\t\t<text name=\"fillType_ram\" text=\"Bélier\"/>\r\n\t\t<text name=\"fillType_ram_landrace\" text=\"Race locale de Bentheim Bélier\"/>\r\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Steinschaf Bélier\"/>\r\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Bélier gallois noir\"/>\r\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Bélier suisse noir et brun\"/>\r\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Les béliers mangent de l'herbe et du foin.\"/>\r\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Il s'agit d'un agneau mâle.\"/>\r\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Les béliers en bonne santé et âgés de plus de 5 mois peuvent se reproduire.\"/>\r\n\r\n\t\t<!-- GOATS -->\r\n\r\n\t\t<text name=\"fillType_ram_goat\" text=\"Chèvre bélier\"/>\r\n\t\t\r\n\t\t<!-- HORSES -->\r\n\t\t\r\n\t\t<text name=\"fillType_stallion\" text=\"Étalon\"/>\r\n\t\t<text name=\"fillType_stallion_gray\" text=\"Étalon gris\"/>\r\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Étalon Pinto\"/>\r\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Étalon palomino\"/>\r\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Étalon alezan\"/>\r\n\t\t<text name=\"fillType_stallion_bay\" text=\"Étalon bai\"/>\r\n\t\t<text name=\"fillType_stallion_black\" text=\"Étalon noir\"/>\r\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Étalon brun du phoque\"/>\r\n\t\t<text name=\"fillType_stallion_dun\" text=\"Étalon Dun\"/>\r\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Les étalons aiment le foin, l'avoine et le sorgho.\"/>\r\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Les étalons peuvent être vendus avec profit.\"/>\r\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Les étalons en bonne santé et âgés de plus de 36 mois peuvent se reproduire.\"/>\r\n\r\n\r\n        <!-- UI -->\r\n\r\n\t\t\r\n        <text name=\"input_VisualAnimalsDialog\" text=\"Changement Animaux Visuels Montant\"/>\r\n        <text name=\"rl_button_apply\" text=\"Appliquer\"/>\r\n\t\t<text name=\"rl_button_confirm\" text=\"Confirmer\"/>\r\n        <text name=\"rl_button_recommended\" text=\"Recommandé\"/>\r\n        <text name=\"rl_button_cancel\" text=\"Annuler\"/>\r\n\t\t<text name=\"rl_button_random\" text=\"Aléatoire\"/>\r\n        <text name=\"rl_dialog_title\" text=\"Définir le nombre maximum d'animaux visuels\"/>\r\n\r\n        <text name=\"rl_ui_unhealthy\" text=\"Trop malsain\"/>\r\n        <text name=\"rl_ui_unhealthyBracketed\" text=\"Non (trop malsain)\"/>\r\n        <text name=\"rl_ui_noMaleAnimal\" text=\"Pas d'animal mâle approprié\"/>\r\n        <text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Non (pas d'animal mâle approprié)\"/>\r\n        <text name=\"rl_ui_recoveringLastBirth\" text=\"Récupération après le dernier accouchement\"/>\r\n        <text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Non (en convalescence depuis le dernier accouchement)\"/>\r\n        <text name=\"rl_ui_tooYoung\" text=\"Trop jeune\"/>\r\n        <text name=\"rl_ui_tooYoungBracketed\" text=\"Non (trop jeune)\"/>\r\n        <text name=\"rl_ui_pregnant\" text=\"Enceinte\"/>\r\n        <text name=\"rl_ui_lactating\" text=\"Allaitement\"/>\r\n        <text name=\"rl_ui_canReproduce\" text=\"Peut se reproduire\"/>\r\n        <text name=\"rl_ui_impregnatedBy\" text=\"Imprégné par\"/>\r\n        <text name=\"rl_ui_unknown\" text=\"Inconnu\"/>\r\n        <text name=\"rl_ui_yes\" text=\"Oui\"/>\r\n        <text name=\"rl_ui_no\" text=\"Non\"/>\r\n        <text name=\"rl_ui_mother\" text=\"Mère\"/>\r\n        <text name=\"rl_ui_father\" text=\"Père\"/>\r\n        <text name=\"rl_ui_uniqueId\" text=\"Identifiant unique\"/>\r\n        <text name=\"rl_ui_farmId\" text=\"ID de l'exploitation\"/>\r\n        <text name=\"rl_ui_gender\" text=\"Genre\"/>\r\n        <text name=\"rl_ui_male\" text=\"Homme\"/>\r\n        <text name=\"rl_ui_female\" text=\"Femme\"/>\r\n\t\t<text name=\"rl_ui_weight\" text=\"Poids\"/>\r\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Poids cible\"/>\r\n\t\t<text name=\"rl_ui_value\" text=\"Valeur\"/>\r\n\t\t<text name=\"rl_ui_valuePerKilo\" text=\"Valeur par kg\"/>\r\n\t\t<text name=\"rl_ui_genetics\" text=\"Génétique\"/>\r\n\t\t<text name=\"rl_ui_overall\" text=\"Globalement\"/>\r\n\t\t<text name=\"rl_ui_rename\" text=\"Changer de nom\"/>\r\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Impossible de trouver l'animal\"/>\r\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Animaux imprégnables dans un enclos\"/>\r\n\r\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Qualité de l'éleveur\"/>\r\n\t\t<text name=\"rl_ui_birthday\" text=\"Anniversaire\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Attendu\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Attente\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"bébé\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"bébés\"/>\r\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Origine\"/>\r\n\t\t<text name=\"rl_ui_months\" text=\"mois\"/>\r\n\t\t<text name=\"rl_ui_month\" text=\"mois\"/>\r\n\t\t<text name=\"rl_ui_years\" text=\"années\"/>\r\n\t\t<text name=\"rl_ui_year\" text=\"année\"/>\r\n\r\n\t\t<text name=\"rl_ui_milk\" text=\"Production laitière\"/>\r\n\t\t<text name=\"rl_ui_wool\" text=\"Production de laine\"/>\r\n\t\t<text name=\"rl_ui_eggs\" text=\"Production d'œufs\"/>\r\n\t\t<text name=\"rl_ui_metabolism\" text=\"Métabolisme\"/>\r\n\t\t<text name=\"rl_ui_meat\" text=\"Qualité\"/>\r\n\t\t<text name=\"rl_ui_health\" text=\"Santé\"/>\r\n\t\t<text name=\"rl_ui_fertility\" text=\"Fécondité\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Extrêmement faible\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Très faible\"/>\r\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Faible\"/>\r\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Moyenne\"/>\r\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Haut\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Très haut\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Extrêmement haut\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Extrêmement mauvais\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Très mauvais\"/>\r\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Mauvais\"/>\r\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Bon\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Très bon\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Extrêmement bon\"/>\r\n\r\n\t\t<text name=\"rl_ui_buySelected\" text=\"Achetez ce qui a été sélectionné\"/>\r\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Vendre sélectionné\"/>\r\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Déplacer la sélection\"/>\r\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Êtes-vous sûr de vouloir acheter %s animaux pour %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Êtes-vous sûr de vouloir vendre %s animaux pour %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Êtes-vous sûr de vouloir déplacer %s animaux?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s animaux achetés pour %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s animaux vendus pour %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s animaux déplacés\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Moniteur\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Abonnements au moniteur\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Abonnements au moniteur\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Taxe de surveillance\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Appliquer le moniteur\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Retirer le moniteur\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Alimentation\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"L'eau\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Paille\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Lait\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Fumier\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Lisier\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Œufs\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Laine\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Lait de chèvre\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / jour\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / mois\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Contrôlé\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Produits\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Appliquer tous les moniteurs\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Supprimer tous les moniteurs\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Frais\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Étiquette d'oreille gauche\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Étiquette d'oreille droite\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Couleur d'arrière-plan\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Arrière-plan Hue\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Arrière-plan RGB\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Couleur du texte\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Texte Hue\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"Texte RGB\"/>\r\n\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s mois\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s mois\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Non enceinte\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"N'importe quel\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Grossesse\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Productivité\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Sélectionner tout\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Sélectionner Aucun\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Filtres\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"Sans nom\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"A un nom\"/>\r\n\r\n\r\n\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\r\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\r\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\r\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\r\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\r\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\r\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\r\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\r\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\r\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\r\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\r\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\r\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\r\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\r\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\r\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\r\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\r\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\r\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\r\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\r\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\r\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\r\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\r\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\r\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\r\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\r\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\r\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\r\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\r\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\r\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\r\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\r\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\r\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\r\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\r\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\r\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\r\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\r\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\r\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\r\n\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\r\n\r\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\r\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\r\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\r\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\r\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\r\n\r\n\r\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\r\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\r\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\r\n\r\n\r\n\t\t<!-- AI - BUYING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - SELLING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - CASTRATING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - NAMING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\r\n\r\n\r\n\t\t<!-- AI - AI -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\r\n\r\n\t\t<!--  SETTINGS  -->\r\n\r\n\r\n\t\t<text name=\"rl_settings\" text=\"Bétail Réaliste\"/>\r\n\r\n\t\t<text name=\"rl_settings_off\" text=\"Arrêt\"/>\r\n\t\t<text name=\"rl_settings_on\" text=\"Sur\"/>\r\n\r\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Enlèvement d'animaux\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Les animaux ne seront pas retirés pour cause de grossesse, de santé, d'âge ou d'accident.\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Les animaux seront retirés pour cause de grossesse, de santé, d'âge ou d'accident.\"/>\r\n\r\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Le hasard des accidents\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Modifier la probabilité que des animaux soient retirés à la suite d'accidents aléatoires\"/>\r\n\r\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Balance alimentaire\"/>\r\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Modifier la quantité de nourriture consommée par les animaux\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Animaux maximums du croupier\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Modifier le nombre maximum d'animaux que le marchand d'animaux peut avoir en stock par type d'animal.\"/>\r\n\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Changer la couleur de l'étiquette\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Changer la couleur des marques auriculaires\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Changer la couleur de l'étiquette\"/>\r\n\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Exporter au format CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Exporter les statistiques au format CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Exporter au format CSV\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\r\n\r\n\r\n\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Moniteurs\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"Pour voir la majorité des statistiques d'un animal, vous devez lui apposer une étiquette de surveillance, ce qui peut être fait dans le menu des animaux (où vous achetez et vendez des animaux). Les étiquettes de surveillance sont également visibles sur l'animal, sur son oreille gauche, à côté de son étiquette d'identification.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"La surveillance des étiquettes vous permettra d'obtenir des informations importantes, notamment sur la santé, le poids, la lactation, la production et les besoins en paille, en nourriture et en eau.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"L'apposition d'une balise sur un animal vous coûtera un petit abonnement mensuel basé sur l'espèce de l'animal. Si vous décidez de retirer la balise, elle sera retirée au début du mois suivant.\"/>\r\n\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Grossesse\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Les femelles ont toutes besoin d'au moins un mâle pour pouvoir tomber enceintes. Les deux animaux doivent avoir l'âge et la santé requis et doivent appartenir à la même espèce. La reproduction entre races différentes (par exemple : vache holstein et taureau angus) est autorisée.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"La consanguinité n'est pas autorisée. Si un mâle et une femelle sont directement apparentés, ils ne se reproduiront pas ensemble.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"Les chances de grossesse d'une femme dépendent de sa fertilité et de celle de l'homme. Une femelle plus fertile a également beaucoup plus de chances de produire plus de descendants à la fois.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Une fois qu'une femelle est enceinte, elle commence à porter sa progéniture. Vous pouvez voir la date prévue de la gestation et le nombre de petits en regardant l'animal dans l'enclos ou en cliquant sur lui dans le menu des animaux.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"À la date prévue, elle donnera naissance à ses bébés. Cependant, les nouveau-nés ont une certaine chance d'être retirés, tout comme la mère si la grossesse se déroule mal. Les nouveau-nés qui naissent dans un enclos surpeuplé sont automatiquement vendus.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Production\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Les vaches, quelle que soit leur race, ne commencent à produire du lait qu'après avoir mis bas. Une fois qu'elle a mis bas, la vache produit du lait de manière exponentielle pendant 3 mois, puis sa production diminue lentement pendant les 6 mois suivants. 10 mois après la grossesse, la vache cesse de produire du lait jusqu'à sa prochaine grossesse.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Les moutons produisent de la laine pendant les mois chauds. Pendant les mois froids, en dessous de 12°C, ils ne produiront pas de laine.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"La production de lait, de laine et d'œufs est également influencée par la génétique de l'animal. Un animal ayant une bonne génétique de production produira plus, alors qu'un animal ayant une mauvaise génétique ne produira pas beaucoup.\"/>\r\n\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Poids\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Les animaux ont un certain poids qui dépend de la quantité de nourriture et de boisson qu'ils consomment. Chaque espèce et chaque race a son propre poids moyen, ce qui influe sur le poids de chaque animal.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Le poids augmente la valeur de l'animal, et un poids faible réduit ses chances d'être enlevé chaque mois.\"/>\r\n\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Génétique\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Chaque animal possède quatre valeurs génétiques différentes : le métabolisme, la fertilité, la santé et la qualité. Les gènes sont mélangés entre la mère et le père, puis transmis à leurs enfants.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Le métabolisme affecte la capacité de l'animal à convertir la nourriture en poids, et affecte la quantité qu'il mange.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"La fertilité affecte les chances de l'animal de tomber enceinte ou de mettre une femelle enceinte, ainsi que le nombre de descendants qu'il produira.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"La santé a une incidence sur la santé de l'animal et sur ses chances d'être retiré chaque mois. Un animal en meilleure santé génétique aura également une durée de vie plus longue.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"La qualité influe sur la valeur de l'animal lui-même. Un animal de qualité supérieure se vendra beaucoup plus cher.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Les bovins, les ovins et les poulets ont également une génétique de production, qui influe sur la quantité de lait, d'œufs ou de laine qu'ils produisent.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\r\n\r\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\r\n\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\r\n\r\n\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\r\n\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\r\n\r\n\r\n\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\r\n\t</texts>\r\n</l10n>"
  },
  {
    "path": "translations/translation_it.xml",
    "content": "<l10n>\r\n    <texts>\r\n        <!-- MUCCHE -->\r\n        \r\n        <text name=\"fillType_bull\" text=\"Toro\"/>\r\n        <text name=\"fillType_bull_swiss_brown\" text=\"Toro Marrone-Svizzero\"/>\r\n        <text name=\"fillType_bull_holstein\" text=\"Toro Holstein\"/>\r\n        <text name=\"fillType_bull_angus\" text=\"Toro Angus\"/>\r\n        <text name=\"fillType_bull_limousin\" text=\"Toro Limousine\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bull\"/>\r\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"I Tori amano l'erba, il fieno e i mangimi a lunga conservazione\"/>\r\n        <text name=\"animal_descriptionBullYoung\" text=\"Questo è un vitello Maschio\"/>\r\n        <text name=\"animal_descriptionBullReproduction\" text=\"I Tori sani e di età superiore ai 12 mesi possono riprodursi\"/>\r\n\r\n        <!-- BUFALI D'ACQUA -->\r\n\r\n        <text name=\"fillType_bull_waterbuffalo\" text=\"Toro Bufalo d'acqua\"/>\r\n\r\n        <!-- MAIALI -->\r\n        \r\n        <text name=\"fillType_boar\" text=\"Maiale\"/>\r\n        <text name=\"fillType_boar_landrace\" text=\"Maiale Landrace\"/>\r\n        <text name=\"fillType_boar_black_pied\" text=\"Maiale Nero-Piedizzato\"/>\r\n        <text name=\"fillType_boar_berkshire\" text=\"Maiale del Berkshire\"/>\r\n        <text name=\"animal_descriptionBoarReproduction\" text=\"I maiali sani e di età superiore agli 8 mesi possono riprodursi\"/>.\r\n        <text name=\"animal_descriptionBoarFeed\" text=\"I maiali mangiano quasi tutto. Possono essere nutriti con mais, frumento, orzo, colza, girasoli, soia, patate, sorgo e barbabietole da zucchero\"/>\r\n        <text name=\"animal_descriptionBoarYoung\" text=\"Questo è un Maialino Maschio\"/>\r\n\r\n        <!-- PECORE -->\r\n        \r\n        <text name=\"fillType_ram\" text=\"Montone\"/>\r\n        <text name=\"fillType_ram_landrace\" text=\"Razza di Montone di Bentheim\"/>\r\n        <text name=\"fillType_ram_steinschaf\" text=\"Montone di Steinschaf\"/>\r\n        <text name=\"fillType_ram_black_welsh\" text=\"Montone Nero di Montagna Gallese\"/>\r\n        <text name=\"fillType_ram_swiss_mountain\" text=\"Montone di Montagna Svizzero Nero-Bruno\"/>\r\n        <text name=\"animal_descriptionRamFeed\" text=\"I Montoni mangiano erba e fieno.\"/>\r\n        <text name=\"animal_descriptionRamYoung\" text=\"Questo è un Agnello Maschio\"/>\r\n        <text name=\"animal_descriptionRamReproduction\" text=\"I Montoni sani e di età superiore ai 5 mesi possono riprodursi\"/>\r\n\r\n        <!-- CAPRE -->\r\n\r\n        <text name=\"fillType_ram_goat\" text=\"Capra Montone\" />\r\n\r\n        <!-- CAVALLI -->\r\n\r\n        <text name=\"fillType_stallion\" text=\"Stallone\"/>\r\n        <text name=\"fillType_stallion_gray\" text=\"Stallone Grigio\"/>\r\n        <text name=\"fillType_stallion_pinto\" text=\"Stallone Pinto\"/>\r\n        <text name=\"fillType_stallion_palomino\" text=\"Stallone Palomino\"/>\r\n        <text name=\"fillType_stallion_chestnut\" text=\"Stallone Castagno\"/>\r\n        <text name=\"fillType_stallion_bay\" text=\"Stallone Bay\"/>\r\n        <text name=\"fillType_stallion_black\" text=\"Stallone Nero\"/>\r\n        <text name=\"fillType_stallion_seal_brown\" text=\"Stallone Marrone Foca\" />\r\n        <text name=\"fillType_stallion_dun\" text=\"Stallone Marrone\" />\r\n        <text name=\"animal_descriptionStallionFeed\" text=\"Gli Stalloni amano il fieno, l'avena e il sorgo.\"/>\r\n        <text name=\"animal_descriptionStallionProfit\" text=\"Gli Stalloni possono essere venduti per ricavarne un profitto.\"/>\r\n        <text name=\"animal_descriptionStallionReproduction\" text=\"Gli Stalloni sani e di età superiore ai 36 mesi possono riprodursi.\"/>\r\n\r\n        <!-- UI -->\r\n\r\n        <text name=\"input_VisualAnimalsDialog\" text=\"Modifica quantità animali visivi\"/>\r\n        <text name=\"rl_button_apply\" text=\"Applica\"/>\r\n        <text name=\"rl_button_confirm\" text=\"Conferma\"/>\r\n        <text name=\"rl_button_recommended\" text=\"Consigliato\"/>\r\n        <text name=\"rl_button_cancel\" text=\"Annulla\"/>\r\n        <text name=\"rl_button_random\" text=\"Casuale\"/>\r\n        <text name=\"rl_dialog_title\" text=\"Imposta il numero massimo di animali visivi\"/>\r\n\r\n        <text name=\"rl_ui_unhealthy\" text=\"Troppo poco salutare\"/>\r\n        <text name=\"rl_ui_unhealthyBracketed\" text=\"No (troppo poco salutare)\"/>\r\n        <text name=\"rl_ui_noMaleAnimal\" text=\"Nessun animale maschio adatto\" />\r\n        <text name=\"rl_ui_noMaleAnimalBracketed\" text=\"No (non c'è un animale maschio adatto)\"/>\r\n        <text name=\"rl_ui_recoveringLastBirth\" text=\"Recupero dall'ultima nascita\"/>\r\n        <text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"No (in fase di recupero dall'ultimo parto)\"/>\r\n        <text name=\"rl_ui_tooYoung\" text=\"Troppo giovane\"/>\r\n        <text name=\"rl_ui_tooYoungBracketed\" text=\"No (troppo giovane)\"/>\r\n        <text name=\"rl_ui_pregnant\" text=\"Incinta\"/>\r\n        <text name=\"rl_ui_lactating\" text=\"In allattamento\"/>\r\n        <text name=\"rl_ui_canReproduce\" text=\"Può riprodursi\"/>\r\n        <text name=\"rl_ui_impregnatedBy\" text=\"Impregnato da\"/>\r\n        <text name=\"rl_ui_unknown\" text=\"Sconosciuto\"/>\r\n        <text name=\"rl_ui_yes\" text=\"Sì\"/>\r\n        <text name=\"rl_ui_no\" text=\"No\"/>\r\n        <text name=\"rl_ui_mother\" text=\"Madre\"/>\r\n        <text name=\"rl_ui_father\" text=\"Padre\"/>\r\n        <text name=\"rl_ui_uniqueId\" text=\"ID univoco\"/>\r\n        <text name=\"rl_ui_farmId\" text=\"ID azienda agricola\"/>\r\n        <text name=\"rl_ui_gender\" text=\"Genere\"/>\r\n        <text name=\"rl_ui_male\" text=\"Maschio\"/>\r\n        <text name=\"rl_ui_female\" text=\"Femmina\"/>\r\n        <text name=\"rl_ui_weight\" text=\"Peso\"/>\r\n        <text name=\"rl_ui_targetWeight\" text=\"Peso obiettivo\"/>\r\n        <text name=\"rl_ui_value\" text=\"Valore\"/>\r\n        <text name=\"rl_ui_valuePerKilo\" text=\"Valore per kg\"/>\r\n        <text name=\"rl_ui_genetics\" text=\"Genetica\"/>\r\n        <text name=\"rl_ui_overall\" text=\"Overall\"/>\r\n        <text name=\"rl_ui_rename\" text=\"Cambia nome\"/>\r\n        <text name=\"rl_ui_cantFindAnimal\" text=\"Impossibile trovare l'animale\"/>\r\n        <text name=\"rl_ui_maleNumImpregnatable\" text=\"Animali imprigionabili nel recinto\"/>\r\n\r\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Breeder Quality\"/>\r\n\t\t<text name=\"rl_ui_birthday\" text=\"Birthday\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Expected\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Expecting\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"baby\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"babies\"/>\r\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Origin\"/>\r\n\t\t<text name=\"rl_ui_months\" text=\"months\"/>\r\n\t\t<text name=\"rl_ui_month\" text=\"month\"/>\r\n\t\t<text name=\"rl_ui_years\" text=\"years\"/>\r\n\t\t<text name=\"rl_ui_year\" text=\"year\"/>\r\n\r\n        <text name=\"rl_ui_milk\" text=\"Produzione di latte\"/>\r\n        <text name=\"rl_ui_wool\" text=\"Produzione di lana\"/>\r\n        <text name=\"rl_ui_eggs\" text=\"Produzione di uova\"/>\r\n        <text name=\"rl_ui_metabolismo\" text=\"Metabolismo\"/>\r\n        <text name=\"rl_ui_meat\" text=\"Qualità\"/>\r\n        <text name=\"rl_ui_health\" text=\"Salute\"/>\r\n        <text name=\"rl_ui_fertility\" text=\"Fertilità\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\r\n        <text name=\"rl_ui_genetics_extremelyLow\" text=\"Estremamente bassa\"/>\r\n        <text name=\"rl_ui_genetics_veryLow\" text=\"Molto basso\"/>\r\n        <text name=\"rl_ui_genetics_low\" text=\"Basso\"/>\r\n        <text name=\"rl_ui_genetics_average\" text=\"Medio\"/>\r\n        <text name=\"rl_ui_genetics_high\" text=\"Alto\"/>\r\n        <text name=\"rl_ui_genetics_veryHigh\" text=\"Molto alto\"/>\r\n        <text name=\"rl_ui_genetics_extremelyHigh\" text=\"Estremamente elevato\"/>\r\n\r\n        <text name=\"rl_ui_genetics_extremelyBad\" text=\"Estremamente cattivo\"/>\r\n        <text name=\"rl_ui_genetics_veryBad\" text=\"Molto male\"/>\r\n        <text name=\"rl_ui_genetics_bad\" text=\"Pessimo\"/>\r\n        <text name=\"rl_ui_genetics_good\" text=\"Buona\"/>\r\n        <text name=\"rl_ui_genetics_veryGood\" text=\"Molto buono\"/>\r\n        <text name=\"rl_ui_genetics_extremelyGood\" text=\"Estremamente buono\"/>\r\n\r\n\t\t<text name=\"rl_ui_buySelected\" text=\"Buy selected\"/>\r\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Sell selected\"/>\r\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Move selected\"/>\r\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Are you sure you want to buy %s animals for %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Are you sure you want to sell %s animals for %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Are you sure you want to move %s animals?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s animals bought for %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s animals sold for %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s animals moved\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Monitor\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Monitor fee\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Apply Monitor\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Remove Monitor\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Food\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"Water\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Milk\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Manure\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Liquid manure\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Eggs\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Wool\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Goat milk\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / day\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / month\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Monitored\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Products\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Apply All Monitors\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Remove All Monitors\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Fee\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Left Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Right Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Background Colour\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Background Hue\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Background RGB\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Text Colour\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Text Hue\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"Text RGB\"/>\r\n\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s months\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s month\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Not Pregnant\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"Any\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Productivity\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Select All\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Select None\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Filters\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"No Name\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Has Name\"/>\r\n\r\n\r\n\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/><text name=\"rl_ui_importance\" text=\"Importance\"/>\r\n\t<text name=\"rl_ui_type\" text=\"Type\"/>\r\n\t<text name=\"rl_ui_date\" text=\"Date\"/>\r\n\t<text name=\"rl_ui_message\" text=\"Message\"/>\r\n\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\r\n\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\r\n\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\r\n\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\r\n\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\r\n\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\r\n\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\r\n\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\r\n\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\r\n\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\r\n\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\r\n\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\r\n\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\r\n\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\r\n\t<text name=\"finance_medicine\" text=\"Medicine\"/>\r\n\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\r\n\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\r\n\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\r\n\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\r\n\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\r\n\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\r\n\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\r\n\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\r\n\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\r\n\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\r\n\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\r\n\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\r\n\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\r\n\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\r\n\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\r\n\t<text name=\"rl_ui_species\" text=\"Species\"/>\r\n\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\r\n\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\r\n\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\r\n\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\r\n\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\r\n\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\r\n\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\r\n\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\r\n\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\r\n\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\r\n\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\r\n\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\r\n\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\r\n\t<text name=\"rl_ui_success\" text=\"Success\"/>\r\n\t<text name=\"rl_ui_save\" text=\"Save\"/>\r\n\t<text name=\"rl_ui_load\" text=\"Load\"/>\r\n\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\r\n\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\r\n\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\r\n\r\n\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\r\n\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\r\n\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\r\n\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\r\n\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\r\n\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\r\n\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\r\n\r\n\r\n\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\r\n\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\r\n\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\r\n\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\r\n\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\r\n\r\n\r\n\t<!-- AI - BUYING -->\r\n\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t<!-- AI - SELLING -->\r\n\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t<!-- AI - CASTRATING -->\r\n\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t<!-- AI - NAMING -->\r\n\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\r\n\r\n\r\n\t<!-- AI - AI -->\r\n\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\r\n\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\r\n\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\r\n\r\n\t\t<!--  SETTINGS  -->\r\n\r\n\r\n\t\t<text name=\"rl_settings\" text=\"Realistic Livestock\"/>\r\n\r\n\t\t<text name=\"rl_settings_off\" text=\"Off\"/>\r\n\t\t<text name=\"rl_settings_on\" text=\"On\"/>\r\n\r\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Animal Removal\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Animals will not be removed due to pregnancy, health, age or accidents\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Animals will be removed due to pregnancy, health, age or accidents\"/>\r\n\r\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Accident Chance\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Change the likelihood of animals being removed due to random accidents\"/>\r\n\r\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Food Scale\"/>\r\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Change the amount of food eaten by animals\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Max Dealer Animals\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Change the maximum number of animals the animal dealer will have in stock per animal type\"/>\r\n\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Change Tag Colour\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Change the colour of ear tags\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Change Tag Colour\"/>\r\n\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Export To CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Export stats to CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Export To CSV\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\r\n\r\n\r\n\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitors\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"In order to see the majority of an animal's statistics, you need to apply a monitoring tag to it, which can be done through the animal menu (where you buy and sell animals). Monitoring tags are also visually shown on the animal, on their left ear next to their ID tag.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"Monitoring tags will result in important information being shown to you, including health, weight, lactation, production, and straw, food and water requirements.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"Applying a tag to an animal will cost you a small monthly subscription based on the animal's species. If you choose to remove the tag, the tag will be removed at the start of the next month.\"/>\r\n\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Female animals all require at least 1 male animal in order to potentially become pregnant. Both animals must be of the correct age and health, and must be from the same species. Breeding between different breeds (eg: holstein cow and angus bull) is allowed.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Inbreeding is not allowed. If a male and a female are directly related, they will not breed together.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"The chance for a female to become pregnant depends upon both her and the male's fertility. A female with higher fertility also has a significantly higher chance of producing more offspring at once.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Once a female becomes pregnant, she will start to carry her offspring. You can view the expected date of pregnancy and the number of offspring by looking at the animal in the pen, or by clicking on her in the animal menu.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"When she reaches her due date, she will give birth to her babies. However, the newborns have a certain chance of being removed, as does the mother if the pregnancy goes badly. Newborns that are born in an overcrowded pen will be sold automatically.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Production\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Cows of any breed will only begin to produce milk after giving birth. Once she has given birth, the cow will produce milk exponentially for 3 months, then her production will slowly drop for the next 6 months. 10 months after pregnancy, the cow will stop producing milk until her next pregnancy.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Sheep will produce wool in warm months. In cold months, under 12C, they will not produce wool.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"Milk, wool and egg production is further affected by the animal's genetics. An animal with good production genetics will produce more, whereas animal with bad genetics wont produce much at all.\"/>\r\n\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Weight\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Animals have a certain weight that which is affected by how much they eat and drink. Every species and breed has its own average weight which affects the weight of each animal.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Weight increases the value of the animal, and a low weight affects its chance of being removed each month.\"/>\r\n\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetics\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Each animal has 4 different genetic values; metabolism, fertility, health and quality. Genetics are mixed between the mother and father and then passed down to their children.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Metabolism affects the animal's ability to convert food into weight, and affects the amount it eats.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"Fertility affects the animal's chance of getting pregnant, or getting a female pregnant, and the number of offspring it will produce.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"Health affects the animal's health and its chance of being removed each month. An animal with higher health genetics will also have a longer lifespan.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"Quality affects the value of the animal itself, an animal with higher quality will sell for much more.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Cattle, sheep and chicken also have production genetics, which affects how much milk/eggs/wool they produce.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\r\n\r\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\r\n\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\r\n\r\n\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\r\n\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\r\n\r\n\r\n\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\r\n\r\n    </texts>\r\n</l10n>"
  },
  {
    "path": "translations/translation_nl.xml",
    "content": "<l10n>\r\n\t<texts>\r\n\t\t<!-- COWS -->\r\n\r\n\t\t<text name=\"fillType_bull\" text=\"Stier\"/>\r\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Brown-Swiss Stier\"/>\r\n\t\t<text name=\"fillType_bull_holstein\" text=\"Holstein Stier\"/>\r\n\t\t<text name=\"fillType_bull_angus\" text=\"Angus Stier\"/>\r\n\t\t<text name=\"fillType_bull_limousin\" text=\"Limousin Stier\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Stier\"/>\r\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Stieren houden van gras, hooi and CGR.\"/>\r\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Dit is een mannelijk kalf.\"/>\r\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Stieren die gezond zijn en ouder dan 12 maanden kunnen zich voortplanten.\"/>\r\n\r\n\t\t<!-- WATER BUFFALOS -->\r\n\r\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Waterbuffel Stier\"/>\r\n\r\n\t\t<!-- PIGS -->\r\n\r\n\t\t<text name=\"fillType_boar\" text=\"Zwijn\"/>\r\n\t\t<text name=\"fillType_boar_landrace\" text=\"Duits landras Zwijn\"/>\r\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Bentheimer Zwijn\"/>\r\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Berkshire Zwijn\"/>\r\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Zwijnen die gezond zijn en ouder dan 8 maanden kunnen zich voortplanten.\"/>\r\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Zwijnen eten bijna alles: maïs, tarwe, gerst, koolzaad, zonnebloemen, sojabonen, aardappelen en suikerbieten.\"/>\r\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Dit is een mannelijk biggetje\"/>\r\n\r\n\t\t<!-- SHEEP -->\r\n\r\n\t\t<text name=\"fillType_ram\" text=\"Ram\"/>\r\n\t\t<text name=\"fillType_ram_landrace\" text=\"Landras van Bentheim Ram\"/>\r\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Steinschaf Ram\"/>\r\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Black Welsh Mountain Ram\"/>\r\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Schwarzbraunes Bergschaf Ram\"/>\r\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Rammen eten gras en hooi.\"/>\r\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Dit is een mannelijk lammetje.\"/>\r\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Rammen die gezond zijn en ouder dan 5 maanden kunnen zich voortplanten.\"/>\r\n\r\n\t\t<!-- GOATS -->\r\n\r\n\t\t<text name=\"fillType_ram_goat\" text=\"Bok\"/>\r\n\r\n\t\t<!-- HORSES -->\r\n\r\n\t\t<text name=\"fillType_stallion\" text=\"Hengst\"/>\r\n\t\t<text name=\"fillType_stallion_gray\" text=\"Hengst (grijs)\"/>\r\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Hengst (bruin-wit)\"/>\r\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Hengst (beige)\"/>\r\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Hengst (roodbruin)\"/>\r\n\t\t<text name=\"fillType_stallion_bay\" text=\"Hengst (bruin)\"/>\r\n\t\t<text name=\"fillType_stallion_black\" text=\"Hengst (zwart)\"/>\r\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Hengst (donkerbruin)\"/>\r\n\t\t<text name=\"fillType_stallion_dun\" text=\"Hengst (lichtbruin)\"/>\r\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Hengsten houden van hooi, haver en sorghum.\"/>\r\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Je kunt hengsten verkopen voor winst.\"/>\r\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Hengsten die gezond zijn en ouder dan 36 maanden kunnen zich voortplanten.\"/>\r\n\r\n\r\n\t\t<!-- UI -->\r\n\r\n\r\n\t\t<text name=\"input_VisualAnimalsDialog\" text=\"Wijzig aantal zichtbare dieren\"/>\r\n\t\t<text name=\"rl_button_apply\" text=\"Toepassen\"/>\r\n\t\t<text name=\"rl_button_confirm\" text=\"Bevestigen\"/>\r\n\t\t<text name=\"rl_button_recommended\" text=\"Aanbevolen\"/>\r\n\t\t<text name=\"rl_button_cancel\" text=\"Annuleren\"/>\r\n\t\t<text name=\"rl_button_random\" text=\"Wilekeurig\"/>\r\n\t\t<text name=\"rl_dialog_title\" text=\"Kies maximaal aantal visuele dieren\"/>\r\n\r\n\t\t<text name=\"rl_ui_unhealthy\" text=\"Te ongezond\"/>\r\n\t\t<text name=\"rl_ui_unhealthyBracketed\" text=\"Nee (te ongezond)\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimal\" text=\"Geen geschikt mannelijk dier\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Nee (geen geschikt mannelijk dier)\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirth\" text=\"Herstellend van bevalling\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Nee (herstellend van bevalling)\"/>\r\n\t\t<text name=\"rl_ui_tooYoung\" text=\"Te jong\"/>\r\n\t\t<text name=\"rl_ui_tooYoungBracketed\" text=\"Nee (te jong)\"/>\r\n\t\t<text name=\"rl_ui_pregnant\" text=\"Drachtig\"/>\r\n\t\t<text name=\"rl_ui_lactating\" text=\"Melkgevend\"/>\r\n\t\t<text name=\"rl_ui_canReproduce\" text=\"Kan voortplanten\"/>\r\n\t\t<text name=\"rl_ui_impregnatedBy\" text=\"Bevrucht door\"/>\r\n\t\t<text name=\"rl_ui_unknown\" text=\"Onbekend\"/>\r\n\t\t<text name=\"rl_ui_yes\" text=\"Ja\"/>\r\n\t\t<text name=\"rl_ui_no\" text=\"Nee\"/>\r\n\t\t<text name=\"rl_ui_mother\" text=\"Moeder\"/>\r\n\t\t<text name=\"rl_ui_father\" text=\"Vader\"/>\r\n\t\t<text name=\"rl_ui_uniqueId\" text=\"Uniek ID\"/>\r\n\t\t<text name=\"rl_ui_farmId\" text=\"Boederij ID\"/>\r\n\t\t<text name=\"rl_ui_gender\" text=\"Geslacht\"/>\r\n\t\t<text name=\"rl_ui_male\" text=\"Mannelijk\"/>\r\n\t\t<text name=\"rl_ui_female\" text=\"Vrouwelijk\"/>\r\n\t\t<text name=\"rl_ui_weight\" text=\"Gewicht\"/>\r\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Doel gewicht\"/>\r\n\t\t<text name=\"rl_ui_value\" text=\"Waarde\"/>\r\n\t\t<text name=\"rl_ui_valuePerKilo\" text=\"Waarde per kg\"/>\r\n\t\t<text name=\"rl_ui_genetics\" text=\"Genetica\"/>\r\n\t\t<text name=\"rl_ui_overall\" text=\"Algemeen\"/>\r\n\t\t<text name=\"rl_ui_rename\" text=\"Verander naam\"/>\r\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Kon dier niet vinden\"/>\r\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Bevruchtbare dieren in hok\"/>\r\n\r\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Fokkerskwaliteit\"/>\r\n\t\t<text name=\"rl_ui_birthday\" text=\"Verjaardag\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Verwachtte\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Verwachting\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"baby\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"baby's\"/>\r\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Oorsprong\"/>\r\n\t\t<text name=\"rl_ui_months\" text=\"maanden\"/>\r\n\t\t<text name=\"rl_ui_month\" text=\"maand\"/>\r\n\t\t<text name=\"rl_ui_years\" text=\"jaren\"/>\r\n\t\t<text name=\"rl_ui_year\" text=\"jaar\"/>\r\n\r\n\t\t<text name=\"rl_ui_milk\" text=\"Melk productie\"/>\r\n\t\t<text name=\"rl_ui_wool\" text=\"Wol productie\"/>\r\n\t\t<text name=\"rl_ui_eggs\" text=\"Eieren productie\"/>\r\n\t\t<text name=\"rl_ui_metabolism\" text=\"Metabolisme\"/>\r\n\t\t<text name=\"rl_ui_meat\" text=\"Kwaliteit\"/>\r\n\t\t<text name=\"rl_ui_health\" text=\"Gezondheid\"/>\r\n\t\t<text name=\"rl_ui_fertility\" text=\"Vruchtbaarheid\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Onvruchtbaar\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Extreem laag\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Erg laag\"/>\r\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Laag\"/>\r\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Gemiddeld\"/>\r\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Hoog\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Erg hoog\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Extreem hoog\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Extreme slecht\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Erg slecht\"/>\r\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Slecht\"/>\r\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Goed\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Erg goed\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Extreem goed\"/>\r\n\r\n\t\t<text name=\"rl_ui_buySelected\" text=\"Koop geselecteerde\"/>\r\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Verkoop geselecteerde\"/>\r\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Verplaats geselecteerde\"/>\r\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Weet je zeker dat je %s dieren voor %s wilt kopen?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Weet je zeker dat je %s dieren voor %s wilt verkopen?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Weet je zeker dat je %s dieren wilt verplaatsen?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s dieren gekocht voor %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s dieren verkocht voor %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s dieren verplaatst\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Monitor\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Monitor abonnement\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Monitor abonnementen\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Monitor tarief\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Activeer monitor\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Verwijder monitor\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Voedsel\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"Water\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Stro\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Melk\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Mest\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Drijfmest\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Eieren\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Wol\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Geitenmelk\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / dag\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / month\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Gemonitord\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Producten\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Activeer alle monitoren\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Verwijder alle monitoren\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Tarief\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Linker oor tag\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Rechter oor tag\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Achtergrond kleur\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Achtergrond Hue\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Achtergrond RGB\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Tekst kleur\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Tekst Hue\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"Tekst RGB\"/>\r\n\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s maanden\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s maand\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Niet zwanger\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"Enig\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Zwangerschap\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Zwangerschap\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Selecteer alle\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Selecteer geen\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Filters\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"Geen naam\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Heeft naam\"/>\r\n\r\n\r\n\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\r\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\r\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\r\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\r\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\r\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\r\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\r\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\r\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\r\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\r\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\r\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\r\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\r\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\r\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\r\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\r\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\r\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\r\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\r\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\r\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\r\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\r\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\r\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\r\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\r\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\r\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\r\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\r\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\r\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\r\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\r\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\r\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\r\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\r\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\r\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\r\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\r\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\r\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\r\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\r\n\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\r\n\r\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\r\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\r\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\r\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\r\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\r\n\r\n\r\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\r\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\r\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\r\n\r\n\r\n\t\t<!-- AI - BUYING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - SELLING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - CASTRATING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - NAMING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\r\n\r\n\r\n\t\t<!-- AI - AI -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!--  SETTINGS  -->\r\n\r\n\r\n\t\t<text name=\"rl_settings\" text=\"Realistic Livestock\"/>\r\n\r\n\t\t<text name=\"rl_settings_off\" text=\"Uit\"/>\r\n\t\t<text name=\"rl_settings_on\" text=\"Aan\"/>\r\n\r\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Dier verwijdering\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Dieren worden niet verwijderd vanwege zwangerschap, gezondheid, leeftijd of ongevallen\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Dieren worden verwijderd vanwege zwangerschap, gezondheid, leeftijd of ongevallen\"/>\r\n\r\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Ongeval kans\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Verander de kans dat dieren worden verwijderd door willekeurige ongevallen\"/>\r\n\r\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Voedselschaal\"/>\r\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Verander de hoeveelheid voedsel die door dieren wordt gegeten\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Maximale veehandelaar dieren\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Wijzig het maximale aantal dieren dat de veehandelaar op voorraad zal hebben per diertype\"/>\r\n\r\n\t\t<text name=\"rl_settings_resetDealer_label\" text=\"Reset Veehandelaar\"/>\r\n\t\t<text name=\"rl_settings_resetDealer_tooltip\" text=\"Verwijder alle dieren van de veehandelaar en vul de voorraad aan met nieuwe dieren\"/>\r\n\t\t<text name=\"rl_settings_resetDealer_text\" text=\"Reset Veehandelaar\"/>\r\n\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Wijzig Tag kleur\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Wijzig de kleur van de oor tags\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Wijzig Tag kleur\"/>\r\n\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Exporteer naar CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Exporteer statistieken naar CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Exporteer naar CSV\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\r\n\r\n\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitoren\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"Om het grootste deel van de statistieken van een dier te zien, moet u er een monitoringtag op toepassen, die via het diermenu kan worden gedaan (waar u dieren koopt en verkoopt). Monitoring tags worden ook visueel getoond op het dier, op hun linkeroor naast hun ID -tag.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"Het monitoren van tags zal ertoe leiden dat belangrijke informatie aan u wordt getoond, waaronder gezondheid, gewicht, lactatie, productie en stro-, voedsel- en watervereisten.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"Door een tag op een dier toe te passen, kost je een klein maandelijks abonnement op basis van de soort van het dier. Als u ervoor kiest om de tag te verwijderen, wordt de tag aan het begin van de volgende maand verwijderd.\"/>\r\n\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Zwangerschap\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Vrouwelijke dieren vereisen allemaal minimaal 1 mannelijk dier om mogelijk zwanger te worden. Beide dieren moeten van de juiste leeftijd en gezondheid zijn en moeten van dezelfde soort zijn. Het fokken tussen verschillende rassen (bijv. Holstein Cow en Angus Bull) is toegestaan.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Inteelt is niet toegestaan. Als een man en een vrouw direct gerelateerd zijn, zullen ze niet samen fokken.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"De kans voor een vrouw om zwanger te worden hangt af van zowel haar als de vruchtbaarheid van het mannetje. Een vrouw met een hogere vruchtbaarheid heeft ook een aanzienlijk hogere kans om meer nakomelingen tegelijk te produceren.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Zodra een vrouw zwanger wordt, begint ze haar nakomelingen te dragen. U kunt de verwachte datum van zwangerschap en het aantal nakomelingen bekijken door naar het dier in de pen te kijken, of door op haar te klikken in het diermenu.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"Wanneer ze haar vervaldatum bereikt, zal ze haar baby's baren. De pasgeborenen hebben echter een zekere kans om te worden verwijderd, net als de moeder als de zwangerschap slecht gaat. Pasgeborenen die in een overvolle pen worden geboren, worden automatisch verkocht.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Productie\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Koeien van elk ras beginnen pas melk te produceren na de bevalling. Zodra ze is bevallen, zal de koe 3 maanden exponentieel melk produceren, dan zal haar productie de komende 6 maanden langzaam dalen. 10 maanden na de zwangerschap stopt de koe met het produceren van melk tot haar volgende zwangerschap.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Schapen zullen wol produceren in warme maanden. In koude maanden, onder de 12c, zullen ze geen wol produceren.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"Melk-, wol- en eierproductie wordt verder beïnvloed door de genetica van het dier. Een dier met goede productiegenetica zal meer produceren, terwijl dier met slechte genetica helemaal niet veel zal produceren.\"/>\r\n\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Gewicht\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Dieren hebben een bepaald gewicht dat wordt beïnvloed door hoeveel ze eten en drinken. Elke soort en ras heeft zijn eigen gemiddelde gewicht dat het gewicht van elk dier beïnvloedt.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Gewicht verhoogt de waarde van het dier en een laag gewicht beïnvloedt zijn kans om elke maand te worden verwijderd.\"/>\r\n\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetica\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Elk dier heeft 4 verschillende genetische waarden; Metabolisme, vruchtbaarheid, gezondheid en kwaliteit. Genetica zijn gemengd tussen de moeder en de vader en vervolgens doorgegeven aan hun kinderen.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Het metabolisme beïnvloedt het vermogen van het dier om voedsel om te zetten in gewicht en beïnvloedt de hoeveelheid die het eet.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"Vruchtbaarheid beïnvloedt de kans van het dier om zwanger te worden, of een vrouwelijke zwangerschap te krijgen, en het aantal nakomelingen dat het zal produceren.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"Gezondheid beïnvloedt de gezondheid van het dier en de kans om elke maand te worden verwijderd. Een dier met hogere gezondheidsgenetica zal ook een langere levensduur hebben.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"Kwaliteit beïnvloedt de waarde van het dier zelf, een dier met hogere kwaliteit zal voor veel meer verkopen.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Vee, schapen en kip hebben ook productiegenetica, die invloed hebben op hoeveel melk/eieren/wol ze produceren.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\r\n\r\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\r\n\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\r\n\r\n\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\r\n\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\r\n\r\n\r\n\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\r\n\r\n\t</texts>\r\n</l10n>"
  },
  {
    "path": "translations/translation_pl.xml",
    "content": "<l10n>\r\n\t<texts>\r\n\t\t<!-- COWS -->\r\n\t\t\r\n\t\t<text name=\"fillType_bull\" text=\"Byk\"/>\r\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Brown-Swiss Byk\"/>\r\n\t\t<text name=\"fillType_bull_holstein\" text=\"Byk rasy holsztyńskiej\"/>\r\n\t\t<text name=\"fillType_bull_angus\" text=\"Angus Byk\"/>\r\n\t\t<text name=\"fillType_bull_limousin\" text=\"Byk rasy Limousin\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bull\"/>\r\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Byki lubią trawę, siano i TMR.\"/>\r\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Jest to cielę płci męskiej.\"/>\r\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Byki, które są zdrowe i starsze niż 12 miesięcy, mogą się rozmnażać.\"/>\r\n\r\n\t\t<!-- WATER BUFFALOS -->\r\n\r\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Bawół Wodny Byk\"/>\r\n\r\n\t\t<!-- PIGS -->\r\n\t\t\r\n\t\t<text name=\"fillType_boar\" text=\"Dzik\"/>\r\n\t\t<text name=\"fillType_boar_landrace\" text=\"Dzik rasy Landrace\"/>\r\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Dzik Czarny\"/>\r\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Berkshire Dzik\"/>\r\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Knury, które są zdrowe i mają więcej niż 8 miesięcy, mogą się rozmnażać.\"/>\r\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Dziki jedzą prawie wszystko. Można je karmić kukurydzą, pszenicą, jęczmieniem, rzepakiem, słonecznikiem, soją, ziemniakami, sorgo i burakami cukrowymi.\"/>\r\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Jest to prosię płci męskiej.\"/>\r\n\r\n\t\t<!-- SHEEP -->\r\n\t\t\r\n\t\t<text name=\"fillType_ram\" text=\"Ram\"/>\r\n\t\t<text name=\"fillType_ram_landrace\" text=\"Rasa Bentheim Ram\"/>\r\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Steinschaf Ram\"/>\r\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Czarny walijski baran górski\"/>\r\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Szwajcarski czarno-brązowy baran górski\"/>\r\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Barany jedzą trawę i siano.\"/>\r\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Jest to jagnię płci męskiej.\"/>\r\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Barany, które są zdrowe i starsze niż 5 miesięcy, mogą się rozmnażać.\"/>\r\n\r\n\t\t<!-- GOATS -->\r\n\r\n\t\t<text name=\"fillType_ram_goat\" text=\"Koza Ram\"/>\r\n\t\t\r\n\t\t<!-- HORSES -->\r\n\t\t\r\n\t\t<text name=\"fillType_stallion\" text=\"Ogier\"/>\r\n\t\t<text name=\"fillType_stallion_gray\" text=\"Szary Ogier\"/>\r\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Pinto Ogier\"/>\r\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Ogier Palomino\"/>\r\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Kasztanowaty Ogier\"/>\r\n\t\t<text name=\"fillType_stallion_bay\" text=\"Ogier Gniady\"/>\r\n\t\t<text name=\"fillType_stallion_black\" text=\"Czarny Ogier\"/>\r\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Brązowy Seal Ogier\"/>\r\n\t\t<text name=\"fillType_stallion_dun\" text=\"Dun Ogier\"/>\r\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Ogiery lubią siano, owies i sorgo.\"/>\r\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Ogiery mogą być sprzedawane z zyskiem.\"/>\r\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Ogiery, które są zdrowe i mają więcej niż 36 miesięcy, mogą się rozmnażać.\"/>\r\n\r\n\r\n        <!-- UI -->\r\n\r\n\t\t\r\n        <text name=\"input_VisualAnimalsDialog\" text=\"Zmiana Visual Animals Kwota\"/>\r\n        <text name=\"rl_button_apply\" text=\"Zastosuj\"/>\r\n\t\t<text name=\"rl_button_confirm\" text=\"Potwierdzenie\"/>\r\n        <text name=\"rl_button_recommended\" text=\"Zalecane\"/>\r\n        <text name=\"rl_button_cancel\" text=\"Anuluj\"/>\r\n\t\t<text name=\"rl_button_random\" text=\"Losowo\"/>\r\n        <text name=\"rl_dialog_title\" text=\"Ustaw maksymalną liczbę zwierząt wizualnych\"/>\r\n\r\n        <text name=\"rl_ui_unhealthy\" text=\"Zbyt niezdrowe\"/>\r\n        <text name=\"rl_ui_unhealthyBracketed\" text=\"Nie (zbyt niezdrowe)\"/>\r\n        <text name=\"rl_ui_noMaleAnimal\" text=\"Brak odpowiedniego samca\"/>\r\n        <text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Nie (brak odpowiedniego samca)\"/>\r\n        <text name=\"rl_ui_recoveringLastBirth\" text=\"Powrót do zdrowia po ostatnim porodzie\"/>\r\n        <text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Nie (rekonwalescencja po ostatnim porodzie)\"/>\r\n        <text name=\"rl_ui_tooYoung\" text=\"Zbyt młody\"/>\r\n        <text name=\"rl_ui_tooYoungBracketed\" text=\"Nie (zbyt młody)\"/>\r\n        <text name=\"rl_ui_pregnant\" text=\"W ciąży\"/>\r\n        <text name=\"rl_ui_lactating\" text=\"Laktacja\"/>\r\n        <text name=\"rl_ui_canReproduce\" text=\"Może się rozmnażać\"/>\r\n        <text name=\"rl_ui_impregnatedBy\" text=\"Impregnowane przez\"/>\r\n        <text name=\"rl_ui_unknown\" text=\"Nieznany\"/>\r\n        <text name=\"rl_ui_yes\" text=\"Tak\"/>\r\n        <text name=\"rl_ui_no\" text=\"Nie\"/>\r\n        <text name=\"rl_ui_mother\" text=\"Matka\"/>\r\n        <text name=\"rl_ui_father\" text=\"Ojciec\"/>\r\n        <text name=\"rl_ui_uniqueId\" text=\"Unikalny identyfikator\"/>\r\n        <text name=\"rl_ui_farmId\" text=\"Identyfikator gospodarstwa\"/>\r\n        <text name=\"rl_ui_gender\" text=\"Płeć\"/>\r\n\t\t<text name=\"rl_ui_male\" text=\"Samiec\"/>\r\n\t\t<text name=\"rl_ui_female\" text=\"Samica\"/>\r\n\t\t<text name=\"rl_ui_weight\" text=\"Waga\"/>\r\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Waga docelowa\"/>\r\n\t\t<text name=\"rl_ui_value\" text=\"Wartość\"/>\r\n\t\t<text name=\"rl_ui_valuePerKilo\" text=\"Wartość na kg\"/>\r\n\t\t<text name=\"rl_ui_genetics\" text=\"Genetyka\"/>\r\n\t\t<text name=\"rl_ui_overall\" text=\"Ogólnie\"/>\r\n\t\t<text name=\"rl_ui_rename\" text=\"Zmień nazwę\"/>\r\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Nie można znaleźć zwierzęcia\"/>\r\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Zwierzęta w kojcach, które można zapłodnić\"/>\r\n\r\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Jakość hodowcy\"/>\r\n\t\t<text name=\"rl_ui_birthday\" text=\"Urodziny\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Oczekiwany\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Oczekiwanie\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"dziecko\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"dzieci\"/>\r\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Pochodzenie\"/>\r\n\t\t<text name=\"rl_ui_months\" text=\"miesiące\"/>\r\n\t\t<text name=\"rl_ui_month\" text=\"miesiąc\"/>\r\n\t\t<text name=\"rl_ui_years\" text=\"lata\"/>\r\n\t\t<text name=\"rl_ui_year\" text=\"rok\"/>\r\n\r\n\t\t<text name=\"rl_ui_milk\" text=\"Produkcja mleka\"/>\r\n\t\t<text name=\"rl_ui_wool\" text=\"Produkcja wełny\"/>\r\n\t\t<text name=\"rl_ui_eggs\" text=\"Produkcja jaj\"/>\r\n\t\t<text name=\"rl_ui_metabolism\" text=\"Metabolizm\"/>\r\n\t\t<text name=\"rl_ui_meat\" text=\"Jakość\"/>\r\n\t\t<text name=\"rl_ui_health\" text=\"Zdrowie\"/>\r\n\t\t<text name=\"rl_ui_fertility\" text=\"Płodność\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Niezwykle niski\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Bardzo niski\"/>\r\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Niski\"/>\r\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Średnia\"/>\r\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Wysoki\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Bardzo wysoki\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Niezwykle wysoki\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Niezwykle źle\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Bardzo źle\"/>\r\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Zły\"/>\r\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Dobry\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Bardzo dobry\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Niezwykle dobry\"/>\r\n\r\n\t\t<text name=\"rl_ui_buySelected\" text=\"Buy selected\"/>\r\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Sell selected\"/>\r\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Move selected\"/>\r\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Are you sure you want to buy %s animals for %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Are you sure you want to sell %s animals for %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Are you sure you want to move %s animals?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s animals bought for %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s animals sold for %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s animals moved\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Monitor\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Monitor fee\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Apply Monitor\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Remove Monitor\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Food\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"Water\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Milk\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Manure\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Liquid manure\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Eggs\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Wool\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Goat milk\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / day\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / month\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Monitored\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Products\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Apply All Monitors\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Remove All Monitors\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Fee\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Left Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Right Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Background Colour\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Background Hue\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Background RGB\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Text Colour\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Text Hue\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"Text RGB\"/>\r\n\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s months\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s month\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Not Pregnant\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"Any\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Productivity\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Select All\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Select None\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Filters\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"No Name\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Has Name\"/>\r\n\r\n\r\n\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\r\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\r\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\r\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\r\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\r\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\r\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\r\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\r\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\r\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\r\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\r\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\r\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\r\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\r\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\r\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\r\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\r\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\r\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\r\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\r\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\r\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\r\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\r\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\r\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\r\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\r\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\r\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\r\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\r\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\r\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\r\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\r\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\r\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\r\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\r\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\r\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\r\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\r\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\r\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\r\n\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\r\n\r\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\r\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\r\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\r\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\r\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\r\n\r\n\r\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\r\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\r\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\r\n\r\n\r\n\t\t<!-- AI - BUYING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - SELLING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - CASTRATING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - NAMING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\r\n\r\n\r\n\t\t<!-- AI - AI -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\r\n\r\n\t\t<!--  SETTINGS  -->\r\n\r\n\r\n\t\t<text name=\"rl_settings\" text=\"Realistic Livestock\"/>\r\n\r\n\t\t<text name=\"rl_settings_off\" text=\"Off\"/>\r\n\t\t<text name=\"rl_settings_on\" text=\"On\"/>\r\n\r\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Animal Removal\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Animals will not be removed due to pregnancy, health, age or accidents\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Animals will be removed due to pregnancy, health, age or accidents\"/>\r\n\r\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Accident Chance\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Change the likelihood of animals being removed due to random accidents\"/>\r\n\r\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Food Scale\"/>\r\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Change the amount of food eaten by animals\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Max Dealer Animals\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Change the maximum number of animals the animal dealer will have in stock per animal type\"/>\r\n\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Change Tag Colour\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Change the colour of ear tags\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Change Tag Colour\"/>\r\n\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Export To CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Export stats to CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Export To CSV\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\r\n\r\n\r\n\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitors\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"In order to see the majority of an animal's statistics, you need to apply a monitoring tag to it, which can be done through the animal menu (where you buy and sell animals). Monitoring tags are also visually shown on the animal, on their left ear next to their ID tag.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"Monitoring tags will result in important information being shown to you, including health, weight, lactation, production, and straw, food and water requirements.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"Applying a tag to an animal will cost you a small monthly subscription based on the animal's species. If you choose to remove the tag, the tag will be removed at the start of the next month.\"/>\r\n\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Female animals all require at least 1 male animal in order to potentially become pregnant. Both animals must be of the correct age and health, and must be from the same species. Breeding between different breeds (eg: holstein cow and angus bull) is allowed.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Inbreeding is not allowed. If a male and a female are directly related, they will not breed together.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"The chance for a female to become pregnant depends upon both her and the male's fertility. A female with higher fertility also has a significantly higher chance of producing more offspring at once.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Once a female becomes pregnant, she will start to carry her offspring. You can view the expected date of pregnancy and the number of offspring by looking at the animal in the pen, or by clicking on her in the animal menu.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"When she reaches her due date, she will give birth to her babies. However, the newborns have a certain chance of being removed, as does the mother if the pregnancy goes badly. Newborns that are born in an overcrowded pen will be sold automatically.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Production\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Cows of any breed will only begin to produce milk after giving birth. Once she has given birth, the cow will produce milk exponentially for 3 months, then her production will slowly drop for the next 6 months. 10 months after pregnancy, the cow will stop producing milk until her next pregnancy.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Sheep will produce wool in warm months. In cold months, under 12C, they will not produce wool.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"Milk, wool and egg production is further affected by the animal's genetics. An animal with good production genetics will produce more, whereas animal with bad genetics wont produce much at all.\"/>\r\n\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Weight\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Animals have a certain weight that which is affected by how much they eat and drink. Every species and breed has its own average weight which affects the weight of each animal.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Weight increases the value of the animal, and a low weight affects its chance of being removed each month.\"/>\r\n\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetics\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Each animal has 4 different genetic values; metabolism, fertility, health and quality. Genetics are mixed between the mother and father and then passed down to their children.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Metabolism affects the animal's ability to convert food into weight, and affects the amount it eats.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"Fertility affects the animal's chance of getting pregnant, or getting a female pregnant, and the number of offspring it will produce.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"Health affects the animal's health and its chance of being removed each month. An animal with higher health genetics will also have a longer lifespan.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"Quality affects the value of the animal itself, an animal with higher quality will sell for much more.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Cattle, sheep and chicken also have production genetics, which affects how much milk/eggs/wool they produce.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\r\n\r\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\r\n\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\r\n\r\n\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\r\n\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\r\n\r\n\r\n\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\r\n\t</texts>\r\n</l10n>"
  },
  {
    "path": "translations/translation_pt.xml",
    "content": "<l10n>\n\t<texts>\n\t\t<!-- COWS -->\n\t\t\n\t\t<text name=\"fillType_bull\" text=\"Touro\"/>\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Touro Brown-Swiss\"/>\n\t\t<text name=\"fillType_bull_holstein\" text=\"Touro Holstein\"/>\n\t\t<text name=\"fillType_bull_angus\" text=\"Touro Angus\"/>\n\t\t<text name=\"fillType_bull_limousin\" text=\"Touro Limousin\"/>\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bull\"/>\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Touros gostam de erva, feno e TMR.\"/>\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Ele é um novilho.\"/>\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Touros saudáveis e com mais de 12 meses podem reproduzir.\"/>\n\n\t\t<!-- WATER BUFFALOS -->\n\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Touro de búfalo-asiático\"/>\n\n\t\t<!-- PIGS -->\n\t\t\n\t\t<text name=\"fillType_boar\" text=\"Porco\"/>\n\t\t<text name=\"fillType_boar_landrace\" text=\"Porco Landrace\"/>\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Porco Black-Pied\"/>\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Porco Berkshire\"/>\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Porcos saudáveis e com mais de 8 meses podem reproduzir.\"/>\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Porcos podem comer de tudo. Pode-se alimentar com milho, trigo, cevada, canola, girassol, soja, batatas, sorgo e beterraba.\"/>\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Ele é um leitão macho.\"/>\n\n\t\t<!-- SHEEP -->\n\t\t\n\t\t<text name=\"fillType_ram\" text=\"Carneiro\"/>\n\t\t<text name=\"fillType_ram_landrace\" text=\"Carneiro de Bentheimer Landschaf\"/>\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Carneiro de Steinschaf\"/>\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Carneiro de Black Welsh Mountain\"/>\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Carneiro de Swiss Black-Brown Mountain\"/>\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Carneiros podem comer erva e feno.\"/>\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Ele é um borrego.\"/>\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Carneiros saudáveis e com mais de 5 meses podem reproduzir.\"/>\n\n\t\t<!-- GOATS -->\n\n\t\t<text name=\"fillType_ram_goat\" text=\"Bode\"/>\n\t\t\n\t\t<!-- HORSES -->\n\t\t\n\t\t<text name=\"fillType_stallion\" text=\"Garanhão\"/>\n\t\t<text name=\"fillType_stallion_gray\" text=\"Garanhão Cinzento\"/>\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Garanhão Pinto\"/>\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Garanhão Palomino\"/>\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Garanhão Castanho\"/>\n\t\t<text name=\"fillType_stallion_bay\" text=\"Garanhão Bay\"/>\n\t\t<text name=\"fillType_stallion_black\" text=\"Garanhão Escuro\"/>\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Garanhão Seal Brown\"/>\n\t\t<text name=\"fillType_stallion_dun\" text=\"Garanhão Dun\"/>\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Garanhões gostam de feno, aveia e sorgo.\"/>\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Garanhões podem ser vendidos para lucro.\"/>\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Garanhões saudáveis e com mais de 36 meses podem reproduzir.\"/>\n\n\n        <!-- UI -->\n\n\t\t\n        <text name=\"input_VisualAnimalsDialog\" text=\"Altera Quantidade Visual de Animais\"/>\n        <text name=\"rl_button_apply\" text=\"Aplicar\"/>\n        <text name=\"rl_button_confirm\" text=\"Confirmar\"/>\n        <text name=\"rl_button_recommended\" text=\"Recommendado\"/>\n        <text name=\"rl_button_cancel\" text=\"Cancelar\"/>\n        <text name=\"rl_button_random\" text=\"Aleatório\"/>\n        <text name=\"rl_dialog_title\" text=\"Definir o número máximo visual de animais\"/>\n\n        <text name=\"rl_ui_unhealthy\" text=\"Muito doente\"/>\n        <text name=\"rl_ui_unhealthyBracketed\" text=\"Não (Muito doente)\"/>\n        <text name=\"rl_ui_noMaleAnimal\" text=\"Sem macho disponível\"/>\n        <text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Não (sem macho disponível)\"/>\n        <text name=\"rl_ui_recoveringLastBirth\" text=\"A recuperar do último nascimento\"/>\n        <text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Não (a recuperar do último nascimento)\"/>\n        <text name=\"rl_ui_tooYoung\" text=\"Muito novo\"/>\n        <text name=\"rl_ui_tooYoungBracketed\" text=\"Não (muito novo)\"/>\n        <text name=\"rl_ui_pregnant\" text=\"Prenha\"/>\n        <text name=\"rl_ui_lactating\" text=\"Em lactação\"/>\n        <text name=\"rl_ui_canReproduce\" text=\"Pode reproduzir\"/>\n        <text name=\"rl_ui_impregnatedBy\" text=\"Engravidada por\"/>\n        <text name=\"rl_ui_unknown\" text=\"Desconhecido\"/>\n        <text name=\"rl_ui_yes\" text=\"Sim\"/>\n        <text name=\"rl_ui_no\" text=\"Não\"/>\n        <text name=\"rl_ui_mother\" text=\"Mãe\"/>\n        <text name=\"rl_ui_father\" text=\"Pai\"/>\n        <text name=\"rl_ui_uniqueId\" text=\"ID único\"/>\n        <text name=\"rl_ui_farmId\" text=\"ID Quinta\"/>\n        <text name=\"rl_ui_gender\" text=\"Género\"/>\n        <text name=\"rl_ui_male\" text=\"Macho\"/>\n        <text name=\"rl_ui_female\" text=\"Fêmea\"/>\n        <text name=\"rl_ui_weight\" text=\"Peaso\"/>\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Peso ideal\"/>\n        <text name=\"rl_ui_value\" text=\"Valor\"/>\n        <text name=\"rl_ui_valuePerKilo\" text=\"Valor por kg\"/>\n\t\t<text name=\"rl_ui_genetics\" text=\"Genética\"/>\n\t\t<text name=\"rl_ui_overall\" text=\"Em geral\"/>\n\t\t<text name=\"rl_ui_rename\" text=\"Alterar nome\"/>\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Não é possível encontrar o animal\"/>\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Engravida os animais no curral\"/>\n\t\t\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Qualidade da Reprodução\"/>\n\t\t<text name=\"rl_ui_birthday\" text=\"Dia Nascimento\"/>\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Esperado\"/>\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Esperando\"/>\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"cria\"/>\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"crias\"/>\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Origem\"/>\n\t\t<text name=\"rl_ui_months\" text=\"meses\"/>\n\t\t<text name=\"rl_ui_month\" text=\"mês\"/>\n\t\t<text name=\"rl_ui_years\" text=\"anos\"/>\n\t\t<text name=\"rl_ui_year\" text=\"ano\"/>\n\n\t\t<text name=\"rl_ui_milk\" text=\"Produção Leite\"/>\n\t\t<text name=\"rl_ui_wool\" text=\"Produção lã\"/>\n\t\t<text name=\"rl_ui_eggs\" text=\"Produção ovvos\"/>\n\t\t<text name=\"rl_ui_metabolism\" text=\"Metabolismo\"/>\n\t\t<text name=\"rl_ui_meat\" text=\"Qualidade\"/>\n\t\t<text name=\"rl_ui_health\" text=\"Saúde\"/>\n\t\t<text name=\"rl_ui_fertility\" text=\"Fertilidade\"/>\n\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Extremamente baixo\"/>\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Muito baixo\"/>\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Baixo\"/>\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Média\"/>\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Alta\"/>\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Muito Alto\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Extremamente alta\"/>\n\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Extremamente mau\"/>\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Muito mau\"/>\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Mau\"/>\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Bom\"/>\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Muito bom\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Extremamente bom\"/>\n\t\t\n\t\t<text name=\"rl_ui_buySelected\" text=\"Compra selecionado\"/>\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Vende selecionado\"/>\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Move selectionado\"/>\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Tem a certeza que quer comprar %s animais por %s?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Tem a certeza que quer vender %s animais por %s?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Tem a certeza que quer mover %s animais?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s animais comprados por %s\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s animais vendidos por %s\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s animais movidos\" tag=\"format\"/>\n\n\t\t<text name=\"rl_ui_monitor\" text=\"Monitor\"/>\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Monitor fee\"/>\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Apply Monitor\"/>\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Remove Monitor\"/>\n\t\t<text name=\"rl_ui_input_food\" text=\"Food\"/>\n\t\t<text name=\"rl_ui_input_water\" text=\"Water\"/>\n\t\t<text name=\"rl_ui_input_straw\" text=\"Straw\"/>\n\t\t<text name=\"rl_ui_output_milk\" text=\"Milk\"/>\n\t\t<text name=\"rl_ui_output_manure\" text=\"Manure\"/>\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Liquid manure\"/>\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Eggs\"/>\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Wool\"/>\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Goat milk\"/>\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / day\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / month\" tag=\"format\"/>\n\n\t\t<text name=\"rl_ui_animalType\" text=\"Type\"/>\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Monitored\"/>\n\t\t<text name=\"rl_ui_production\" text=\"Products\"/>\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Apply All Monitors\"/>\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Remove All Monitors\"/>\n\t\t<text name=\"rl_ui_fee\" text=\"Fee\"/>\n\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Left Ear Tag\"/>\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Right Ear Tag\"/>\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Background Colour\"/>\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Background Hue\"/>\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Background RGB\"/>\n\t\t<text name=\"rl_ui_textColour\" text=\"Text Colour\"/>\n\t\t<text name=\"rl_ui_textHue\" text=\"Text Hue\"/>\n\t\t<text name=\"rl_ui_textRgb\" text=\"Text RGB\"/>\n\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s months\"/>\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s month\"/>\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Not Pregnant\"/>\n\t\t<text name=\"rl_ui_any\" text=\"Any\"/>\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Pregnancy\"/>\n\t\t<text name=\"rl_ui_productivity\" text=\"Productivity\"/>\n\t\t<text name=\"rl_ui_selectAll\" text=\"Select All\"/>\n\t\t<text name=\"rl_ui_selectNone\" text=\"Select None\"/>\n\t\t<text name=\"rl_ui_filters\" text=\"Filters\"/>\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"No Name\"/>\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Has Name\"/>\n\n\n\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/><text name=\"rl_ui_importance\" text=\"Importance\"/>\n\t<text name=\"rl_ui_type\" text=\"Type\"/>\n\t<text name=\"rl_ui_date\" text=\"Date\"/>\n\t<text name=\"rl_ui_message\" text=\"Message\"/>\n\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\n\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\n\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\n\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\n\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\n\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\n\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\n\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\n\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\n\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\n\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\n\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\n\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\n\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\n\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\n\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\n\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\n\t<text name=\"finance_medicine\" text=\"Medicine\"/>\n\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\n\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\n\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\n\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\n\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\n\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\n\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\n\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\n\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\n\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\n\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\n\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\n\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\n\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\n\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\n\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\n\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\n\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\n\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\n\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\n\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\n\t<text name=\"rl_ui_species\" text=\"Species\"/>\n\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\n\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\n\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\n\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\n\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\n\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\n\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\n\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\n\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\n\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\n\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\n\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\n\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\n\t<text name=\"rl_ui_success\" text=\"Success\"/>\n\t<text name=\"rl_ui_save\" text=\"Save\"/>\n\t<text name=\"rl_ui_load\" text=\"Load\"/>\n\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\n\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\n\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\n\n\n\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\n\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\n\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\n\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\n\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\n\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\n\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\n\n\n\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\n\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\n\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\n\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\n\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\n\n\n\t<!-- AI - BUYING -->\n\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\n\n\n\t<!-- AI - SELLING -->\n\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\n\n\n\t<!-- AI - CASTRATING -->\n\n\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\n\n\n\t<!-- AI - NAMING -->\n\n\n\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\n\n\n\t<!-- AI - AI -->\n\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\n\n\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\n\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\n\n\n\n\n\t\t<!--  SETTINGS  -->\n\n\n\t\t<text name=\"rl_settings\" text=\"Realistic Livestock\"/>\n\n\t\t<text name=\"rl_settings_off\" text=\"Off\"/>\n\t\t<text name=\"rl_settings_on\" text=\"On\"/>\n\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Animal Removal\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Animals will not be removed due to pregnancy, health, age or accidents\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Animals will be removed due to pregnancy, health, age or accidents\"/>\n\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Accident Chance\"/>\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Change the likelihood of animals being removed due to random accidents\"/>\n\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Food Scale\"/>\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Change the amount of food eaten by animals\"/>\n\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Max Dealer Animals\"/>\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Change the maximum number of animals the animal dealer will have in stock per animal type\"/>\n\n\t\t<text name=\"rl_settings_resetDealer_label\" text=\"Reiniciar o Comerciante de Animais\"/>Add commentMore actions\n\t\t<text name=\"rl_settings_resetDealer_tooltip\" text=\"Remove todos os animais do comerciante e reabastecem com novos animais\"/>\n\t\t<text name=\"rl_settings_resetDealer_text\" text=\"Reiniciar o Comerciante de Animais\"/>\n\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Change Tag Colour\"/>\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Change the colour of ear tags\"/>\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Change Tag Colour\"/>\n\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Export To CSV\"/>\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Export stats to CSV\"/>\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Export To CSV\"/>\n\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\n\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\n\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\n\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\n\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\n\n\n\n\t\t<!--  HELP  -->\n\n\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitors\"/>\n\t\t<text name=\"rl_help_monitors_1\" text=\"In order to see the majority of an animal's statistics, you need to apply a monitoring tag to it, which can be done through the animal menu (where you buy and sell animals). Monitoring tags are also visually shown on the animal, on their left ear next to their ID tag.\"/>\n\t\t<text name=\"rl_help_monitors_2\" text=\"Monitoring tags will result in important information being shown to you, including health, weight, lactation, production, and straw, food and water requirements.\"/>\n\t\t<text name=\"rl_help_monitors_3\" text=\"Applying a tag to an animal will cost you a small monthly subscription based on the animal's species. If you choose to remove the tag, the tag will be removed at the start of the next month.\"/>\n\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Pregnancy\"/>\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Female animals all require at least 1 male animal in order to potentially become pregnant. Both animals must be of the correct age and health, and must be from the same species. Breeding between different breeds (eg: holstein cow and angus bull) is allowed.\"/>\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Inbreeding is not allowed. If a male and a female are directly related, they will not breed together.\"/>\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"The chance for a female to become pregnant depends upon both her and the male's fertility. A female with higher fertility also has a significantly higher chance of producing more offspring at once.\"/>\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Once a female becomes pregnant, she will start to carry her offspring. You can view the expected date of pregnancy and the number of offspring by looking at the animal in the pen, or by clicking on her in the animal menu.\"/>\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"When she reaches her due date, she will give birth to her babies. However, the newborns have a certain chance of being removed, as does the mother if the pregnancy goes badly. Newborns that are born in an overcrowded pen will be sold automatically.\"/>\n\n\t\t<text name=\"rl_help_production_title\" text=\"Production\"/>\n\t\t<text name=\"rl_help_production_1\" text=\"Cows of any breed will only begin to produce milk after giving birth. Once she has given birth, the cow will produce milk exponentially for 3 months, then her production will slowly drop for the next 6 months. 10 months after pregnancy, the cow will stop producing milk until her next pregnancy.\"/>\n\t\t<text name=\"rl_help_production_2\" text=\"Sheep will produce wool in warm months. In cold months, under 12C, they will not produce wool.\"/>\n\t\t<text name=\"rl_help_production_3\" text=\"Milk, wool and egg production is further affected by the animal's genetics. An animal with good production genetics will produce more, whereas animal with bad genetics wont produce much at all.\"/>\n\n\t\t<text name=\"rl_help_weight_title\" text=\"Weight\"/>\n\t\t<text name=\"rl_help_weight_1\" text=\"Animals have a certain weight that which is affected by how much they eat and drink. Every species and breed has its own average weight which affects the weight of each animal.\"/>\n\t\t<text name=\"rl_help_weight_2\" text=\"Weight increases the value of the animal, and a low weight affects its chance of being removed each month.\"/>\n\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetics\"/>\n\t\t<text name=\"rl_help_genetics_1\" text=\"Each animal has 4 different genetic values; metabolism, fertility, health and quality. Genetics are mixed between the mother and father and then passed down to their children.\"/>\n\t\t<text name=\"rl_help_genetics_2\" text=\"Metabolism affects the animal's ability to convert food into weight, and affects the amount it eats.\"/>\n\t\t<text name=\"rl_help_genetics_3\" text=\"Fertility affects the animal's chance of getting pregnant, or getting a female pregnant, and the number of offspring it will produce.\"/>\n\t\t<text name=\"rl_help_genetics_4\" text=\"Health affects the animal's health and its chance of being removed each month. An animal with higher health genetics will also have a longer lifespan.\"/>\n\t\t<text name=\"rl_help_genetics_5\" text=\"Quality affects the value of the animal itself, an animal with higher quality will sell for much more.\"/>\n\t\t<text name=\"rl_help_genetics_6\" text=\"Cattle, sheep and chicken also have production genetics, which affects how much milk/eggs/wool they produce.\"/>\n\n\n\n\t\t<!--  DISEASES  -->\n\n\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\n\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\n\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\n\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\n\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\n\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\n\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\n\n\n\n\t\t<!--  MESSAGES  -->\n\n\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\n\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\n\n\n\n\t\t<!--  DEATHS  -->\n\n\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\n\t\t\n\t</texts>\n</l10n>\n"
  },
  {
    "path": "translations/translation_ru.xml",
    "content": "<l10n>\r\n\t<texts>\r\n\t\t<!-- КОРОВЫ -->\r\n\r\n\t\t<text name=\"fillType_bull\" text=\"Бык\"/>\r\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Бурый швейцарский бык\"/>\r\n\t\t<text name=\"fillType_bull_holstein\" text=\"Голштинский бык\"/>\r\n\t\t<text name=\"fillType_bull_angus\" text=\"Ангусский бык\"/>\r\n\t\t<text name=\"fillType_bull_limousin\" text=\"Лимузинский бык\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bull\"/>\r\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Быки любят траву, сено и TMR.\"/>\r\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Это теленок-самец.\"/>\r\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Быки, которые здоровы и старше 12 месяцев, могут размножаться.\"/>\r\n\r\n\t\t<!-- ВОДЯНЫЕ БУЙВОЛЫ -->\r\n\r\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Буйвол\"/>\r\n\r\n\t\t<!-- СВИНЬИ -->\r\n\r\n\t\t<text name=\"fillType_boar\" text=\"Хряк\"/>\r\n\t\t<text name=\"fillType_boar_landrace\" text=\"Ландрас хряк\"/>\r\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Черно-пегий хряк\"/>\r\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Беркширский хряк\"/>\r\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Хряки, которые здоровы и старше 8 месяцев, могут размножаться.\"/>\r\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Хряки едят почти всё. Вы можете кормить их кукурузой, пшеницей, ячменем, рапсом, подсолнечником, соей, картофелем, сорго и сахарной свеклой.\"/>\r\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Это поросенок-самец.\"/>\r\n\r\n\t\t<!-- ОВЦЫ -->\r\n\r\n\t\t<text name=\"fillType_ram\" text=\"Баран\"/>\r\n\t\t<text name=\"fillType_ram_landrace\" text=\"Баран Ландрас Бентхайм\"/>\r\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Баран Штайншаф\"/>\r\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Баран Черный Уэльский Горный\"/>\r\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Баран Швейцарский Черно-Бурый Горный\"/>\r\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Бараны едят траву и сено.\"/>\r\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Это ягненок-самец.\"/>\r\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Бараны, которые здоровы и старше 5 месяцев, могут размножаться.\"/>\r\n\r\n\t\t<!-- КОЗЫ -->\r\n\r\n\t\t<text name=\"fillType_ram_goat\" text=\"Козел\"/>\r\n\r\n\t\t<!-- ЛОШАДИ -->\r\n\r\n\t\t<text name=\"fillType_stallion\" text=\"Жеребец\"/>\r\n\t\t<text name=\"fillType_stallion_gray\" text=\"Серый жеребец\"/>\r\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Пегий жеребец\"/>\r\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Паломино жеребец\"/>\r\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Рыжий жеребец\"/>\r\n\t\t<text name=\"fillType_stallion_bay\" text=\"Гнедой жеребец\"/>\r\n\t\t<text name=\"fillType_stallion_black\" text=\"Вороной жеребец\"/>\r\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Темно-гнедой жеребец\"/>\r\n\t\t<text name=\"fillType_stallion_dun\" text=\"Саврасый жеребец\"/>\r\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Жеребцы любят сено, овес и сорго.\"/>\r\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Жеребцов можно продать с прибылью.\"/>\r\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Жеребцы, которые здоровы и старше 36 месяцев, могут размножаться.\"/>\r\n\r\n\t\t<!-- ИНТЕРФЕЙС -->\r\n\r\n\t\t<text name=\"input_VisualAnimalsDialog\" text=\"Изменить количество видимых животных\"/>\r\n\t\t<text name=\"rl_button_apply\" text=\"Применить\"/>\r\n\t\t<text name=\"rl_button_confirm\" text=\"Подтвердить\"/>\r\n\t\t<text name=\"rl_button_recommended\" text=\"Рекомендуется\"/>\r\n\t\t<text name=\"rl_button_cancel\" text=\"Отмена\"/>\r\n\t\t<text name=\"rl_button_random\" text=\"Случайно\"/>\r\n\t\t<text name=\"rl_dialog_title\" text=\"Установить максимальное количество видимых животных\"/>\r\n\r\n\t\t<text name=\"rl_ui_unhealthy\" text=\"Слишком нездоров\"/>\r\n\t\t<text name=\"rl_ui_unhealthyBracketed\" text=\"Нет (слишком нездоров)\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimal\" text=\"Нет подходящего самца\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Нет (нет подходящего самца)\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirth\" text=\"Восстанавливается после последних родов\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Нет (восстанавливается после последних родов)\"/>\r\n\t\t<text name=\"rl_ui_tooYoung\" text=\"Слишком молод\"/>\r\n\t\t<text name=\"rl_ui_tooYoungBracketed\" text=\"Нет (слишком молод)\"/>\r\n\t\t<text name=\"rl_ui_pregnant\" text=\"Беременна\"/>\r\n\t\t<text name=\"rl_ui_lactating\" text=\"Лактирует\"/>\r\n\t\t<text name=\"rl_ui_canReproduce\" text=\"Может размножаться\"/>\r\n\t\t<text name=\"rl_ui_impregnatedBy\" text=\"Осеменена\"/>\r\n\t\t<text name=\"rl_ui_unknown\" text=\"Неизвестно\"/>\r\n\t\t<text name=\"rl_ui_yes\" text=\"Да\"/>\r\n\t\t<text name=\"rl_ui_no\" text=\"Нет\"/>\r\n\t\t<text name=\"rl_ui_mother\" text=\"Мать\"/>\r\n\t\t<text name=\"rl_ui_father\" text=\"Отец\"/>\r\n\t\t<text name=\"rl_ui_uniqueId\" text=\"Уникальный ID\"/>\r\n\t\t<text name=\"rl_ui_farmId\" text=\"ID фермы\"/>\r\n\t\t<text name=\"rl_ui_gender\" text=\"Пол\"/>\r\n\t\t<text name=\"rl_ui_male\" text=\"Самец\"/>\r\n\t\t<text name=\"rl_ui_female\" text=\"Самка\"/>\r\n\t\t<text name=\"rl_ui_weight\" text=\"Вес\"/>\r\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Целевой вес\"/>\r\n\t\t<text name=\"rl_ui_value\" text=\"Стоимость\"/>\r\n\t\t<text name=\"rl_ui_valuePerKilo\" text=\"Стоимость за кг\"/>\r\n\t\t<text name=\"rl_ui_genetics\" text=\"Генетика\"/>\r\n\t\t<text name=\"rl_ui_overall\" text=\"Общий\"/>\r\n\t\t<text name=\"rl_ui_rename\" text=\"Изменить имя\"/>\r\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Не удалось найти животное\"/>\r\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Животные, способные к осеменению в загоне\"/>\r\n\r\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Качество заводчика\"/>\r\n\t\t<text name=\"rl_ui_birthday\" text=\"День рождения\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Ожидается\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Ожидает\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"детеныш\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"детеныши\"/>\r\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Происхождение\"/>\r\n\t\t<text name=\"rl_ui_months\" text=\"месяцев\"/>\r\n\t\t<text name=\"rl_ui_month\" text=\"месяц\"/>\r\n\t\t<text name=\"rl_ui_years\" text=\"лет\"/>\r\n\t\t<text name=\"rl_ui_year\" text=\"год\"/>\r\n\r\n\t\t<text name=\"rl_ui_milk\" text=\"Производство молока\"/>\r\n\t\t<text name=\"rl_ui_wool\" text=\"Производство шерсти\"/>\r\n\t\t<text name=\"rl_ui_eggs\" text=\"Производство яиц\"/>\r\n\t\t<text name=\"rl_ui_metabolism\" text=\"Метаболизм\"/>\r\n\t\t<text name=\"rl_ui_meat\" text=\"Качество мяса\"/>\r\n\t\t<text name=\"rl_ui_health\" text=\"Здоровье\"/>\r\n\t\t<text name=\"rl_ui_fertility\" text=\"Фертильность\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Крайне низкий\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Очень низкий\"/>\r\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Низкий\"/>\r\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Средний\"/>\r\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Высокий\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Очень высокий\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Крайне высокий\"/>\r\n\r\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Крайне плохой\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Очень плохой\"/>\r\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Плохой\"/>\r\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Хороший\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Очень хороший\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Крайне хороший\"/>\r\n\r\n\t\t<text name=\"rl_ui_buySelected\" text=\"Buy selected\"/>\r\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Sell selected\"/>\r\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Move selected\"/>\r\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Are you sure you want to buy %s animals for %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Are you sure you want to sell %s animals for %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Are you sure you want to move %s animals?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s animals bought for %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s animals sold for %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s animals moved\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Monitor\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Monitor Subscriptions\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Monitor fee\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Apply Monitor\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Remove Monitor\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Food\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"Water\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Milk\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Manure\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Liquid manure\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Eggs\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Wool\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Goat milk\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / day\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / month\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Monitored\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Products\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Apply All Monitors\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Remove All Monitors\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Fee\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Left Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Right Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Background Colour\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Background Hue\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Background RGB\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Text Colour\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Text Hue\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"Text RGB\"/>\r\n\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s months\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s month\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Not Pregnant\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"Any\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Productivity\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Select All\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Select None\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Filters\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"No Name\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Has Name\"/>\r\n\r\n\r\n\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\r\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\r\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\r\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\r\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\r\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\r\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\r\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\r\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\r\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\r\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\r\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\r\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\r\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\r\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\r\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\r\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\r\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\r\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\r\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\r\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\r\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\r\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\r\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\r\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\r\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\r\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\r\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\r\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\r\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\r\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\r\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\r\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\r\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\r\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\r\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\r\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\r\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\r\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\r\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\r\n\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\r\n\r\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\r\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\r\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\r\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\r\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\r\n\r\n\r\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\r\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\r\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\r\n\r\n\r\n\t\t<!-- AI - BUYING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - SELLING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - CASTRATING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - NAMING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\r\n\r\n\r\n\t\t<!-- AI - AI -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\r\n\r\n\t\t<!--  SETTINGS  -->\r\n\r\n\r\n\t\t<text name=\"rl_settings\" text=\"Realistic Livestock\"/>\r\n\r\n\t\t<text name=\"rl_settings_off\" text=\"Off\"/>\r\n\t\t<text name=\"rl_settings_on\" text=\"On\"/>\r\n\r\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Animal Removal\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Animals will not be removed due to pregnancy, health, age or accidents\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Animals will be removed due to pregnancy, health, age or accidents\"/>\r\n\r\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Accident Chance\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Change the likelihood of animals being removed due to random accidents\"/>\r\n\r\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Food Scale\"/>\r\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Change the amount of food eaten by animals\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Max Dealer Animals\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Change the maximum number of animals the animal dealer will have in stock per animal type\"/>\r\n\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Change Tag Colour\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Change the colour of ear tags\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Change Tag Colour\"/>\r\n\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Export To CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Export stats to CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Export To CSV\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\r\n\r\n\r\n\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Monitors\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"In order to see the majority of an animal's statistics, you need to apply a monitoring tag to it, which can be done through the animal menu (where you buy and sell animals). Monitoring tags are also visually shown on the animal, on their left ear next to their ID tag.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"Monitoring tags will result in important information being shown to you, including health, weight, lactation, production, and straw, food and water requirements.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"Applying a tag to an animal will cost you a small monthly subscription based on the animal's species. If you choose to remove the tag, the tag will be removed at the start of the next month.\"/>\r\n\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Female animals all require at least 1 male animal in order to potentially become pregnant. Both animals must be of the correct age and health, and must be from the same species. Breeding between different breeds (eg: holstein cow and angus bull) is allowed.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Inbreeding is not allowed. If a male and a female are directly related, they will not breed together.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"The chance for a female to become pregnant depends upon both her and the male's fertility. A female with higher fertility also has a significantly higher chance of producing more offspring at once.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Once a female becomes pregnant, she will start to carry her offspring. You can view the expected date of pregnancy and the number of offspring by looking at the animal in the pen, or by clicking on her in the animal menu.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"When she reaches her due date, she will give birth to her babies. However, the newborns have a certain chance of being removed, as does the mother if the pregnancy goes badly. Newborns that are born in an overcrowded pen will be sold automatically.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Production\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Cows of any breed will only begin to produce milk after giving birth. Once she has given birth, the cow will produce milk exponentially for 3 months, then her production will slowly drop for the next 6 months. 10 months after pregnancy, the cow will stop producing milk until her next pregnancy.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Sheep will produce wool in warm months. In cold months, under 12C, they will not produce wool.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"Milk, wool and egg production is further affected by the animal's genetics. An animal with good production genetics will produce more, whereas animal with bad genetics wont produce much at all.\"/>\r\n\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Weight\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Animals have a certain weight that which is affected by how much they eat and drink. Every species and breed has its own average weight which affects the weight of each animal.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Weight increases the value of the animal, and a low weight affects its chance of being removed each month.\"/>\r\n\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetics\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Each animal has 4 different genetic values; metabolism, fertility, health and quality. Genetics are mixed between the mother and father and then passed down to their children.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Metabolism affects the animal's ability to convert food into weight, and affects the amount it eats.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"Fertility affects the animal's chance of getting pregnant, or getting a female pregnant, and the number of offspring it will produce.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"Health affects the animal's health and its chance of being removed each month. An animal with higher health genetics will also have a longer lifespan.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"Quality affects the value of the animal itself, an animal with higher quality will sell for much more.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Cattle, sheep and chicken also have production genetics, which affects how much milk/eggs/wool they produce.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\r\n\r\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\r\n\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\r\n\r\n\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\r\n\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\r\n\r\n\r\n\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\r\n\r\n\t</texts>\r\n</l10n>"
  },
  {
    "path": "translations/translation_tr.xml",
    "content": "<l10n>\n\t<texts>\n\t\t<!-- COWS -->\n\t\t\n\t\t<text name=\"fillType_bull\" text=\"Boğa\"/>\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Montofon Boğa\"/>\n\t\t<text name=\"fillType_bull_holstein\" text=\"Holstein Boğa\"/>\n\t\t<text name=\"fillType_bull_angus\" text=\"Angus Boğa\"/>\n\t\t<text name=\"fillType_bull_limousin\" text=\"Limuzin Boğa\"/>\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bull\"/>\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Boğalar çim, kuru ot ve TKT'yi sever.\"/>\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Bu bir erkek buzağı.\"/>\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Sağlıklı ve 12 aydan büyük boğalar üreyebilir.\"/>\n\n\t\t<!-- WATER BUFFALOS -->\n\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Manda Boğası\"/>\n\n\t\t<!-- PIGS -->\n\t\t\n\t\t<text name=\"fillType_boar\" text=\"Erkek Domuz\"/>\n\t\t<text name=\"fillType_boar_landrace\" text=\"Landrace Erkek Domuz\"/>\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Black-Pied Erkek Domuz\"/>\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Berkshire Erkek Domuz\"/>\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Sağlıklı ve 8 aydan büyük olan domuzlar üreyebilir.\"/>\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Domuzlar neredeyse her şeyi yerler. Onları mısır, buğday, arpa, kanola, ayçiçeği, soya fasulyesi, patates, sorgum ve şeker pancarı ile besleyebilirsiniz.\"/>\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Bu bir erkek domuz yavrusu.\"/>\n\n\t\t<!-- SHEEP -->\n\t\t\n\t\t<text name=\"fillType_ram\" text=\"Koç\"/>\n\t\t<text name=\"fillType_ram_landrace\" text=\"Yerli Bentheim Koç\"/>\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Steinschaf Koç\"/>\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Siyah Galli Koç\"/>\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"İsviçre Siyah-Kahverengi Dağ Koç\"/>\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Koçlar çim ve kuru ot yer.\"/>\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Bu bir erkek kuzu.\"/>\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Sağlıklı ve 5 aydan büyük koçlar üreyebilir.\"/>\n\n\t\t<!-- GOATS -->\n\n\t\t<text name=\"fillType_ram_goat\" text=\"Erkek Keçi\"/>\n\t\t\n\t\t<!-- HORSES -->\n\t\t\n\t\t<text name=\"fillType_stallion\" text=\"Aygır\"/>\n\t\t<text name=\"fillType_stallion_gray\" text=\"Gri Aygır\"/>\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Pinto Aygır\"/>\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Palomino Aygır\"/>\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Chestnut Aygır\"/>\n\t\t<text name=\"fillType_stallion_bay\" text=\"Bay Aygır\"/>\n\t\t<text name=\"fillType_stallion_black\" text=\"Siyah Aygır\"/>\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Seal Brown Aygır\"/>\n\t\t<text name=\"fillType_stallion_dun\" text=\"Dun Aygır\"/>\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Aygırlar kuru ot, yulaf ve sorgumu sever.\"/>\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Aygırlar kâr amacıyla satılabilir.\"/>\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Sağlıklı ve 36 aydan büyük aygırlar üreyebilir.\"/>\n\n\n        <!-- UI -->\n\n\t\t\n        <text name=\"input_VisualAnimalsDialog\" text=\"Görüntülenen Hayvan Sayısını Değiştir\"/>\n        <text name=\"rl_button_apply\" text=\"Uygula\"/>\n        <text name=\"rl_button_confirm\" text=\"Onayla\"/>\n        <text name=\"rl_button_recommended\" text=\"Önerilen\"/>\n        <text name=\"rl_button_cancel\" text=\"İptal\"/>\n        <text name=\"rl_button_random\" text=\"Rastgele\"/>\n        <text name=\"rl_dialog_title\" text=\"Maksimum Görsel Hayvan Sayısını Ayarlayın\"/>\n\n        <text name=\"rl_ui_unhealthy\" text=\"Çok Sağlıksız\"/>\n        <text name=\"rl_ui_unhealthyBracketed\" text=\"Hayır (çok sağlıksız)\"/>\n        <text name=\"rl_ui_noMaleAnimal\" text=\"Uygun erkek hayvan yok\"/>\n        <text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Hayır (uygun erkek hayvan yok)\"/>\n        <text name=\"rl_ui_recoveringLastBirth\" text=\"Son doğumdan sonra iyileşme\"/>\n        <text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Hayır (son doğumdan sonra iyileşme)\"/>\n        <text name=\"rl_ui_tooYoung\" text=\"Çok genç\"/>\n        <text name=\"rl_ui_tooYoungBracketed\" text=\"Hayır (çok genç)\"/>\n        <text name=\"rl_ui_pregnant\" text=\"Hamile\"/>\n        <text name=\"rl_ui_lactating\" text=\"Süt Salgılama\"/>\n        <text name=\"rl_ui_canReproduce\" text=\"Üreyebilir\"/>\n        <text name=\"rl_ui_impregnatedBy\" text=\"Tarafından Hamile\"/>\n        <text name=\"rl_ui_unknown\" text=\"Bilinmiyor\"/>\n        <text name=\"rl_ui_yes\" text=\"Evet\"/>\n        <text name=\"rl_ui_no\" text=\"Hayır\"/>\n        <text name=\"rl_ui_mother\" text=\"Anne\"/>\n        <text name=\"rl_ui_father\" text=\"Baba\"/>\n        <text name=\"rl_ui_uniqueId\" text=\"Benzersiz ID\"/>\n        <text name=\"rl_ui_farmId\" text=\"Çiftlik ID\"/>\n        <text name=\"rl_ui_gender\" text=\"Cinsiyet\"/>\n        <text name=\"rl_ui_male\" text=\"Erkek\"/>\n        <text name=\"rl_ui_female\" text=\"Dişi\"/>\n        <text name=\"rl_ui_weight\" text=\"Ağırlık\"/>\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Hedef Ağırlık\"/>\n        <text name=\"rl_ui_value\" text=\"Değer\"/>\n        <text name=\"rl_ui_valuePerKilo\" text=\"Kg. Başına Değer\"/>\n\t\t<text name=\"rl_ui_genetics\" text=\"Genetik\"/>\n\t\t<text name=\"rl_ui_overall\" text=\"Toplam\"/>\n\t\t<text name=\"rl_ui_rename\" text=\"İsim Değiştir\"/>\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Hayvan bulunamadı\"/>\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Ağılda hamile olmayan hayvanlar\"/>\n\t\t\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Damızlık Kalitesi\"/>\n\t\t<text name=\"rl_ui_birthday\" text=\"Doğum Günü\"/>\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Beklenen\"/>\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Beklenti\"/>\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"yavru\"/>\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"yavrular\"/>\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Menşei\"/>\n\t\t<text name=\"rl_ui_months\" text=\"aylık\"/>\n\t\t<text name=\"rl_ui_month\" text=\"ay\"/>\n\t\t<text name=\"rl_ui_years\" text=\"yaşında\"/>\n\t\t<text name=\"rl_ui_year\" text=\"yıl\"/>\n\n\t\t<text name=\"rl_ui_milk\" text=\"Süt üretimi\"/>\n\t\t<text name=\"rl_ui_wool\" text=\"Yün üretimi\"/>\n\t\t<text name=\"rl_ui_eggs\" text=\"Yumurta üretimi\"/>\n\t\t<text name=\"rl_ui_metabolism\" text=\"Metabolizma\"/>\n\t\t<text name=\"rl_ui_meat\" text=\"Kalite\"/>\n\t\t<text name=\"rl_ui_health\" text=\"Sağlık\"/>\n\t\t<text name=\"rl_ui_fertility\" text=\"Doğurganlık\"/>\n\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Aşırı düşük\"/>\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Çok düşük\"/>\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Düşük\"/>\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Ortalama\"/>\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Yüksek\"/>\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Çok yüksek\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Aşırı yüksek\"/>\n\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Aşırı kötü\"/>\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Çok kötü\"/>\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Kötü\"/>\n\t\t<text name=\"rl_ui_genetics_good\" text=\"İyi\"/>\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Çok iyi\"/>\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Aşırı iyi\"/>\n\t\t\n\t\t<text name=\"rl_ui_buySelected\" text=\"Seçilenleri satın al\"/>\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Seçilenleri sat\"/>\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Seçilenleri gönder\"/>\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Satın almak istediğine emin misin ? %s hayvan için %s?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Satmak istediğine emin misin ? %s hayvan için %s??\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Emin misin %s hayvan gönderilecek?\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"%s hayvan için ödendi %s\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"%s hayvan %s için satıldı\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"%s hayvan gönderildi\" tag=\"format\"/>\n\n\t\t<text name=\"rl_ui_monitor\" text=\"İzleme\"/>\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"İzleme Aboneliği\"/>\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"İzleme Aboneliği\"/>\n\t\t<text name=\"rl_ui_monitorFee\" text=\"İzleme ücreti\"/>\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"İzle\"/>\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"İzlemeyi Kaldır\"/>\n\t\t<text name=\"rl_ui_input_food\" text=\"Besin\"/>\n\t\t<text name=\"rl_ui_input_water\" text=\"Su\"/>\n\t\t<text name=\"rl_ui_input_straw\" text=\"Saman\"/>\n\t\t<text name=\"rl_ui_output_milk\" text=\"Süt\"/>\n\t\t<text name=\"rl_ui_output_manure\" text=\"Doğal Gübre\"/>\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Sıvı Gübre\"/>\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Yumurta\"/>\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Yün\"/>\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Keçi Sütü\"/>\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fL / gün\" tag=\"format\"/>\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / ay\" tag=\"format\"/>\n\t\t\n\t\t<text name=\"rl_ui_animalType\" text=\"Tür\"/>\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"İzlendi\"/>\n\t\t<text name=\"rl_ui_production\" text=\"Ürünler\"/>\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Tüm İzlenenlere Uygula\"/>\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Tüm İzlenenleri Kaldır\"/>\n\t\t<text name=\"rl_ui_fee\" text=\"Fee\"/>\n\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Left Ear Tag\"/>\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Right Ear Tag\"/>\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Background Colour\"/>\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Background Hue\"/>\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Background RGB\"/>\n\t\t<text name=\"rl_ui_textColour\" text=\"Text Colour\"/>\n\t\t<text name=\"rl_ui_textHue\" text=\"Text Hue\"/>\n\t\t<text name=\"rl_ui_textRgb\" text=\"Text RGB\"/>\n\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s months\"/>\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s month\"/>\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Not Pregnant\"/>\n\t\t<text name=\"rl_ui_any\" text=\"Any\"/>\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Pregnancy\"/>\n\t\t<text name=\"rl_ui_productivity\" text=\"Productivity\"/>\n\t\t<text name=\"rl_ui_selectAll\" text=\"Select All\"/>\n\t\t<text name=\"rl_ui_selectNone\" text=\"Select None\"/>\n\t\t<text name=\"rl_ui_filters\" text=\"Filters\"/>\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"No Name\"/>\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Has Name\"/>\n\n\n\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\n\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\n\n\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\n\n\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\n\n\n\t\t<!-- AI - BUYING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\n\n\n\t\t<!-- AI - SELLING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\n\n\n\t\t<!-- AI - CASTRATING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\n\n\n\t\t<!-- AI - NAMING -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\n\n\n\t\t<!-- AI - AI -->\n\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\n\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\n\n\n\n\t\t<!--  SETTINGS  -->\n\t\t\n\n\t\t<text name=\"rl_settings\" text=\"Gerçekçi Hayvancılık\"/>\n\n\t\t<text name=\"rl_settings_off\" text=\"Kapalı\"/>\n\t\t<text name=\"rl_settings_on\" text=\"Açık\"/>\n\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Hayvan Kaldırma\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Hayvanlar hamilelik, sağlık, yaş veya kaza nedeniyle kaldırılmayacak\"/>\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Hayvanlar hamilelik, sağlık, yaş veya kaza nedeniyle kaldırılacak\"/>\n\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Kaza Olasılığı\"/>\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Hayvanların rastgele kazalar nedeniyle kaldırılma olasılığını değiştirin\"/>\n\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Gıda Ölçeği\"/>\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Hayvanlar tarafından yenen yiyecek miktarını değiştir\"/>\n\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Maksimum Bayi Hayvanları\"/>\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Hayvan satıcısının hayvan türü başına stokta bulunduracağı maksimum hayvan sayısını değiştirin\"/>\n\t\t\n\t\t<text name=\"rl_settings_resetDealer_label\" text=\"Hayvan bayisini sıfırla\"/>\n\t\t<text name=\"rl_settings_resetDealer_tooltip\" text=\"Satıcının tüm hayvanlarını çıkarın ve stoğu yeni hayvanlarla doldurun\"/>\n\t\t<text name=\"rl_settings_resetDealer_text\" text=\"Hayvan Bayisini Sıfırla\"/>\n\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Change Tag Colour\"/>\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Change the colour of ear tags\"/>\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Change Tag Colour\"/>\n\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Export To CSV\"/>\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Export stats to CSV\"/>\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Export To CSV\"/>\n\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\n\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\n\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\n\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\n\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\n\t\t\n\t\t\n\t\t\n\t\t<!--  HELP  -->\n\n\n\t\t<text name=\"rl_help_monitors_title\" text=\"İzleme\"/>\n\t\t<text name=\"rl_help_monitors_1\" text=\"Bir hayvanın istatistiklerinin çoğunu görmek için, ona bir izleme etiketi uygulamanız gerekir; bunu hayvan menüsünden (hayvan alıp sattığınız yer) yapabilirsiniz. İzleme etiketleri ayrıca görsel olarak hayvanın üzerinde, sol kulağında kimlik etiketinin yanında gösterilir.\"/>\n\t\t<text name=\"rl_help_monitors_2\" text=\"Etiketleri izlediğinizde, sağlık, ağırlık, emzirme, üretim ve saman, yiyecek ve su gereksinimleri dahil olmak üzere önemli bilgiler size gösterilecektir.\"/>\n\t\t<text name=\"rl_help_monitors_3\" text=\"Bir hayvana etiket uygulamak, hayvanın türüne bağlı olarak size küçük bir aylık aboneliğe mal olacaktır. Etiketi kaldırmayı seçerseniz, etiket bir sonraki ayın başında kaldırılacaktır.\"/>\n\t\t\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Hamilelik\"/>\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Dişi hayvanların hepsinin potansiyel olarak hamile kalabilmesi için en az 1 erkek hayvana ihtiyacı vardır. Her iki hayvan da doğru yaşta ve sağlıkta olmalı ve aynı türden olmalıdır. Farklı ırklar arasında üremeye izin verilir (örneğin: holstein ineği ve angus boğası).\"/>\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Akraba evliliklerine izin verilmez. Eğer bir erkek ve bir dişi doğrudan akraba ise, birlikte üremeyeceklerdir.\"/>\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"Bir dişinin hamile kalma şansı hem kendisinin hem de erkeğin doğurganlığına bağlıdır. Daha yüksek doğurganlığa sahip bir dişinin aynı anda daha fazla yavru üretme şansı da önemli ölçüde daha yüksektir.\"/>\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Bir dişi hamile kaldığında yavrularını taşımaya başlayacaktır. Beklenen gebelik tarihini ve yavru sayısını ağıldaki hayvana bakarak veya hayvan menüsünde üzerine tıklayarak görebilirsiniz.\"/>\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"İnekler doğum tarihine ulaştığında yavrularını dünyaya getirecektir. Ancak, hamileliğin kötü gitmesi durumunda annenin olduğu gibi yeni doğanların da belirli bir kaldırılma şansı vardır. Aşırı kalabalık bir ağılda doğan yavrular otomatik olarak satılacaktır.\"/>\n\n\t\t<text name=\"rl_help_production_title\" text=\"Üretim\"/>\n\t\t<text name=\"rl_help_production_1\" text=\"Her türden inek ancak doğum yaptıktan sonra süt üretmeye başlayacaktır. İnek doğum yaptıktan sonra 3 ay boyunca katlanarak süt üretecek, ardından sonraki 6 ay boyunca üretimi yavaşça düşecektir. Hamilelikten 10 ay sonra, inek bir sonraki hamileliğine kadar süt üretimini durduracaktır.\"/>\n\t\t<text name=\"rl_help_production_2\" text=\"Koyunlar sıcak aylarda yün üretecektir. Soğuk aylarda, 12C'nin altında, yün üretmeyecekler.\"/>\n\t\t<text name=\"rl_help_production_3\" text=\"Süt, yün ve yumurta üretimi hayvanın genetiğinden de etkilenir. İyi üretim genetiğine sahip bir hayvan daha fazla üretirken, kötü genetiğe sahip bir hayvan hiç üretmeyecektir.\"/>\n\t\t\n\t\t<text name=\"rl_help_weight_title\" text=\"Ağırlık\"/>\n\t\t<text name=\"rl_help_weight_1\" text=\"Hayvanların belirli bir ağırlığı vardır ve bu ağırlık ne kadar yiyip içtiklerinden etkilenir. Her türün ve ırkın kendi ortalama ağırlığı vardır ve bu da her hayvanın ağırlığını etkiler.\"/>\n\t\t<text name=\"rl_help_weight_2\" text=\"Ağırlık hayvanın değerini artırır ve düşük ağırlık her ay kaldırılma şansını etkiler.\"/>\n\t\t\n\t\t<text name=\"rl_help_genetics_title\" text=\"Genetik\"/>\n\t\t<text name=\"rl_help_genetics_1\" text=\"Her hayvanın 4 farklı genetik değeri vardır; metabolizma, doğurganlık, sağlık ve kalite. Genetik anne ve baba arasında karıştırılır ve daha sonra çocuklarına aktarılır.\"/>\n\t\t<text name=\"rl_help_genetics_2\" text=\"Metabolizma, hayvanın gıdayı ağırlığa dönüştürme kabiliyetini ve yediği miktarı etkiler.\"/>\n\t\t<text name=\"rl_help_genetics_3\" text=\"Doğurganlık, hayvanın hamile kalma veya bir dişiyi hamile bırakma şansını ve üreteceği yavru sayısını etkiler.\"/>\n\t\t<text name=\"rl_help_genetics_4\" text=\"Sağlık, hayvanın sağlığını ve her ay kaldırılma şansını etkiler. Daha sağlıklı genetiğe sahip bir hayvanın ömrü de daha uzun olacaktır.\"/>\n\t\t<text name=\"rl_help_genetics_5\" text=\"Kalite hayvanın kendi değerini etkiler, daha kaliteli bir hayvan çok daha fazla fiyata satılacaktır.\"/>\n\t\t<text name=\"rl_help_genetics_6\" text=\"Sığır, koyun ve tavuğun da üretim genetiği vardır ve bu da ne kadar süt/yumurta/yün ürettiklerini etkiler.\"/>\n\n\n\n\t\t<!--  DISEASES  -->\n\n\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\n\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\n\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\n\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\n\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\n\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\n\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\n\n\n\n\t\t<!--  MESSAGES  -->\n\n\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\n\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\n\n\n\n\t\t<!--  DEATHS  -->\n\n\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\n\t\t\n\t</texts>\n</l10n>\n"
  },
  {
    "path": "translations/translation_uk.xml",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\r\n<l10n>\r\n\t<translationContributors>Kalderone</translationContributors>\r\n    <texts>\r\n\t\t<!-- КОРОВИ -->\r\n\t\t<text name=\"fillType_bull\" text=\"Бик\"/>\r\n\t\t<text name=\"fillType_bull_swiss_brown\" text=\"Бурий швейцарський бик\"/>\r\n\t\t<text name=\"fillType_bull_holstein\" text=\"Гольштінський бик\"/>\r\n\t\t<text name=\"fillType_bull_angus\" text=\"Ангусьский бик\"/>\r\n\t\t<text name=\"fillType_bull_limousin\" text=\"Лімузинський бик\"/>\r\n\t\t<text name=\"fillType_cow_hereford\" text=\"Hereford\"/>\r\n\t\t<text name=\"fillType_bull_hereford\" text=\"Hereford Bull\"/>\r\n\t\t<text name=\"animal_descriptionBullFeed\" text=\"Бики їдять траву, сіно та TMR.\"/>\r\n\t\t<text name=\"animal_descriptionBullYoung\" text=\"Це бичок.\"/>\r\n\t\t<text name=\"animal_descriptionBullReproduction\" text=\"Бики, які здорові та старші за 12 місяців, можуть розмножуватись.\"/>\r\n\r\n\t\t<!-- ВОДЯНІ БУЙВОЛИ -->\r\n\t\t<text name=\"fillType_bull_waterbuffalo\" text=\"Водяний буйвол\"/>\r\n\r\n\t\t<!-- СВИНІ -->\r\n\t\t<text name=\"fillType_boar\" text=\"Кабан\"/>\r\n\t\t<text name=\"fillType_boar_landrace\" text=\"Кабан породи Ландрас\"/>\r\n\t\t<text name=\"fillType_boar_black_pied\" text=\"Чорно-рябий кабан\"/>\r\n\t\t<text name=\"fillType_boar_berkshire\" text=\"Кабан породи Беркшир\"/>\r\n\t\t<text name=\"animal_descriptionBoarReproduction\" text=\"Кабани, які здорові та старші за 8 місяців, можуть розмножуватись.\"/>\r\n\t\t<text name=\"animal_descriptionBoarFeed\" text=\"Кабани їдять майже все. Їх можна годувати кукурудзою, пшеницею, ячменем, ріпаком, соняшником, соєю, картоплею, сорго та цукровими буряками.\"/>\r\n\t\t<text name=\"animal_descriptionBoarYoung\" text=\"Це пацєтко-самець\"/>\r\n\r\n\t\t<!-- ВІВЦІ -->\r\n\t\t<text name=\"fillType_ram\" text=\"Баран\"/>\r\n\t\t<text name=\"fillType_ram_landrace\" text=\"Баран породи Ландрас Бентгейм\"/>\r\n\t\t<text name=\"fillType_ram_steinschaf\" text=\"Баран породи Штайншаф\"/>\r\n\t\t<text name=\"fillType_ram_black_welsh\" text=\"Баран Чорної валлійської гірської породи\"/>\r\n\t\t<text name=\"fillType_ram_swiss_mountain\" text=\"Баран Швейцарської чорної-бурої гірської породи\"/>\r\n\t\t<text name=\"animal_descriptionRamFeed\" text=\"Барани їдять траву та сіно.\"/>\r\n\t\t<text name=\"animal_descriptionRamYoung\" text=\"Це ягня-самець.\"/>\r\n\t\t<text name=\"animal_descriptionRamReproduction\" text=\"Барани, які здорові та старші за 5 місяців, можуть розмножуватись.\"/>\r\n\r\n\t\t<!-- КОЗИ -->\r\n\t\t<text name=\"fillType_ram_goat\" text=\"Козел\"/>\r\n\r\n\t\t<!-- КОНІ -->\r\n\t\t<text name=\"fillType_stallion\" text=\"Жеребець\"/>\r\n\t\t<text name=\"fillType_stallion_gray\" text=\"Сірий жеребець\"/>\r\n\t\t<text name=\"fillType_stallion_pinto\" text=\"Пінто жеребець\"/>\r\n\t\t<text name=\"fillType_stallion_palomino\" text=\"Паломіно жеребець\"/>\r\n\t\t<text name=\"fillType_stallion_chestnut\" text=\"Каштановий жеребець\"/>\r\n\t\t<text name=\"fillType_stallion_bay\" text=\"Гнідий жеребець\"/>\r\n\t\t<text name=\"fillType_stallion_black\" text=\"Чорний жеребець\"/>\r\n\t\t<text name=\"fillType_stallion_seal_brown\" text=\"Темно-коричневий жеребець\"/>\r\n\t\t<text name=\"fillType_stallion_dun\" text=\"Мишастий жеребець\"/>\r\n\t\t<text name=\"animal_descriptionStallionFeed\" text=\"Жеребці їдять сіно, овес і сорго.\"/>\r\n\t\t<text name=\"animal_descriptionStallionProfit\" text=\"Жеребців можна продавати з прибутком.\"/>\r\n\t\t<text name=\"animal_descriptionStallionReproduction\" text=\"Жеребці, які здорові та старші за 36 місяців, можуть розмножуватись.\"/>\r\n\r\n\t\t<!-- ІНТЕРФЕЙС КОРИСТУВАЧА -->\r\n\t\t<text name=\"input_VisualAnimalsDialog\" text=\"Змінити кількість видимих тварин\"/>\r\n\t\t<text name=\"rl_button_apply\" text=\"Застосувати\"/>\r\n\t\t<text name=\"rl_button_confirm\" text=\"Підтвердити\"/>\r\n\t\t<text name=\"rl_button_recommended\" text=\"Рекомендовано\"/>\r\n\t\t<text name=\"rl_button_cancel\" text=\"Скасувати\"/>\r\n\t\t<text name=\"rl_button_random\" text=\"Випадково\"/>\r\n\t\t<text name=\"rl_dialog_title\" text=\"Встановити максимальну кількість видимих тварин\"/>\r\n\t\t<text name=\"rl_ui_unhealthy\" text=\"Надто поганий стан здоров’я\"/>\r\n\t\t<text name=\"rl_ui_unhealthyBracketed\" text=\"Ні (поганий стан здоров’я)\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimal\" text=\"Немає відповідного самця\"/>\r\n\t\t<text name=\"rl_ui_noMaleAnimalBracketed\" text=\"Ні (немає відповідного самця)\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirth\" text=\"Відновлення після пологів\"/>\r\n\t\t<text name=\"rl_ui_recoveringLastBirthBracketed\" text=\"Ні (відновлення після пологів)\"/>\r\n\t\t<text name=\"rl_ui_tooYoung\" text=\"Занадто молодий\"/>\r\n\t\t<text name=\"rl_ui_tooYoungBracketed\" text=\"Ні (занадто молодий)\"/>\r\n\t\t<text name=\"rl_ui_pregnant\" text=\"Вагітна\"/>\r\n\t\t<text name=\"rl_ui_lactating\" text=\"Лактація\"/>\r\n\t\t<text name=\"rl_ui_canReproduce\" text=\"Може розмножуватись\"/>\r\n\t\t<text name=\"rl_ui_impregnatedBy\" text=\"Запліднено самцем\"/>\r\n\t\t<text name=\"rl_ui_unknown\" text=\"Невідомо\"/>\r\n\t\t<text name=\"rl_ui_yes\" text=\"Так\"/>\r\n\t\t<text name=\"rl_ui_no\" text=\"Ні\"/>\r\n\t\t<text name=\"rl_ui_mother\" text=\"Мати\"/>\r\n\t\t<text name=\"rl_ui_father\" text=\"Батько\"/>\r\n\t\t<text name=\"rl_ui_uniqueId\" text=\"Унікальний ID\"/>\r\n\t\t<text name=\"rl_ui_farmId\" text=\"ID ферми\"/>\r\n\t\t<text name=\"rl_ui_gender\" text=\"Стать\"/>\r\n\t\t<text name=\"rl_ui_male\" text=\"Самець\"/>\r\n\t\t<text name=\"rl_ui_female\" text=\"Самка\"/>\r\n\t\t<text name=\"rl_ui_weight\" text=\"Вага\"/>\r\n\t\t<text name=\"rl_ui_targetWeight\" text=\"Цільова вага\"/>\r\n\t\t<text name=\"rl_ui_value\" text=\"Цінність\"/>\r\n\t\t<text name=\"rl_ui_valuePerKilo\" text=\"Ціна за кг\"/>\r\n\t\t<text name=\"rl_ui_genetics\" text=\"Генетика\"/>\r\n\t\t<text name=\"rl_ui_overall\" text=\"Загальний стан\"/>\r\n\t\t<text name=\"rl_ui_rename\" text=\"Змінити ім’я\"/>\r\n\t\t<text name=\"rl_ui_cantFindAnimal\" text=\"Не вдалося знайти тварину\"/>\r\n\t\t<text name=\"rl_ui_maleNumImpregnatable\" text=\"Запліднювані тварини в загоні\"/>\r\n\t\t<text name=\"rl_ui_breederQuality\" text=\"Якість для розведення\"/>\r\n\t\t<text name=\"rl_ui_birthday\" text=\"Дата народження\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpected\" text=\"Очікується\"/>\r\n\t\t<text name=\"rl_ui_pregnancyExpecting\" text=\"Очікує потомство\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBaby\" text=\"дитинча\"/>\r\n\t\t<text name=\"rl_ui_pregnancyBabies\" text=\"дитинчата\"/>\r\n\t\t<text name=\"rl_ui_animalOrigin\" text=\"Походження\"/>\r\n\t\t<text name=\"rl_ui_months\" text=\"місяців\"/>\r\n\t\t<text name=\"rl_ui_month\" text=\"місяць\"/>\r\n\t\t<text name=\"rl_ui_years\" text=\"років\"/>\r\n\t\t<text name=\"rl_ui_year\" text=\"рік\"/>\r\n\t\t<text name=\"rl_ui_milk\" text=\"Виробництво молока\"/>\r\n\t\t<text name=\"rl_ui_wool\" text=\"Виробництво вовни\"/>\r\n\t\t<text name=\"rl_ui_eggs\" text=\"Виробництво яєць\"/>\r\n\t\t<text name=\"rl_ui_metabolism\" text=\"Метаболізм\"/>\r\n\t\t<text name=\"rl_ui_meat\" text=\"Якість м’яса\"/>\r\n\t\t<text name=\"rl_ui_health\" text=\"Здоров’я\"/>\r\n\t\t<text name=\"rl_ui_fertility\" text=\"Фертильність\"/>\r\n\t\t<text name=\"rl_ui_genetics_infertile\" text=\"Infertile\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyLow\" text=\"Крайній низький рівень\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryLow\" text=\"Дуже низький рівень\"/>\r\n\t\t<text name=\"rl_ui_genetics_low\" text=\"Низький рівень\"/>\r\n\t\t<text name=\"rl_ui_genetics_average\" text=\"Середній рівень\"/>\r\n\t\t<text name=\"rl_ui_genetics_high\" text=\"Високий рівень\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryHigh\" text=\"Дуже високий рівень\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyHigh\" text=\"Крайній високий рівень\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyBad\" text=\"Крайня погана\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryBad\" text=\"Дуже погана\"/>\r\n\t\t<text name=\"rl_ui_genetics_bad\" text=\"Погана\"/>\r\n\t\t<text name=\"rl_ui_genetics_good\" text=\"Хороша\"/>\r\n\t\t<text name=\"rl_ui_genetics_veryGood\" text=\"Дуже хороша\"/>\r\n\t\t<text name=\"rl_ui_genetics_extremelyGood\" text=\"Крайня хороша\"/>\r\n\r\n\t\t<text name=\"rl_ui_buySelected\" text=\"Купити вибране\"/>\r\n\t\t<text name=\"rl_ui_sellSelected\" text=\"Продати вибране\"/>\r\n\t\t<text name=\"rl_ui_moveSelected\" text=\"Перемістити вибране\"/>\r\n\t\t<text name=\"rl_ui_buyConfirmation\" text=\"Ви впевнені, що хочете купити %s тварин за %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellConfirmation\" text=\"Ви впевнені, що хочете продати %s тварин за %s?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveConfirmation\" text=\"Ви впевнені, що хочете перемістити %s тварин?\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_buyBulkResult\" text=\"Куплено %s тварин за %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_sellBulkResult\" text=\"Продано %s тварин за %s\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_moveBulkResult\" text=\"Переміщено %s тварин\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_monitor\" text=\"Монітор\"/>\r\n\t\t<text name=\"rl_ui_monitorSubscriptions\" text=\"Моніторинг підписок\"/>\r\n\t\t<text name=\"finance_monitorSubscriptions\" text=\"Моніторинг підписок\"/>\r\n\t\t<text name=\"rl_ui_monitorFee\" text=\"Плата за моніторинг\"/>\r\n\t\t<text name=\"rl_ui_applyMonitor\" text=\"Застосувати монітор\"/>\r\n\t\t<text name=\"rl_ui_removeMonitor\" text=\"Видалити монітор\"/>\r\n\t\t<text name=\"rl_ui_input_food\" text=\"Їжа\"/>\r\n\t\t<text name=\"rl_ui_input_water\" text=\"Вода\"/>\r\n\t\t<text name=\"rl_ui_input_straw\" text=\"Солома\"/>\r\n\t\t<text name=\"rl_ui_output_milk\" text=\"Молоко\"/>\r\n\t\t<text name=\"rl_ui_output_manure\" text=\"Гній\"/>\r\n\t\t<text name=\"rl_ui_output_liquidManure\" text=\"Рідкий гній\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_eggs\" text=\"Яйця\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_wool\" text=\"Шерсть\"/>\r\n\t\t<text name=\"rl_ui_output_pallets_goatMilk\" text=\"Козяче молоко\"/>\r\n\t\t<text name=\"rl_ui_amountPerDay\" text=\"%.0fЛ / день\" tag=\"format\"/>\r\n\t\t<text name=\"rl_ui_feePerMonth\" text=\"%s / місяць\" tag=\"format\"/>\r\n\r\n\t\t<text name=\"rl_ui_animalType\" text=\"Тип\"/>\r\n\t\t<text name=\"rl_ui_amountMonitored\" text=\"Під контролем\"/>\r\n\t\t<text name=\"rl_ui_production\" text=\"Продукти\"/>\r\n\t\t<text name=\"rl_ui_applyAllMonitor\" text=\"Застосувати всі монітори\"/>\r\n\t\t<text name=\"rl_ui_removeAllMonitor\" text=\"Вилучити всі монітори\"/>\r\n\t\t<text name=\"rl_ui_fee\" text=\"Гонорар\"/>\r\n\r\n\t\t<text name=\"rl_ui_leftEarTag\" text=\"Бірка з лівим вухом\"/>\r\n\t\t<text name=\"rl_ui_rightEarTag\" text=\"Бірка для правого вуха\"/>\r\n\t\t<text name=\"rl_ui_backgroundColour\" text=\"Колір фону\"/>\r\n\t\t<text name=\"rl_ui_backgroundHue\" text=\"Відтінок фону\"/>\r\n\t\t<text name=\"rl_ui_backgroundRgb\" text=\"Фон RGB\"/>\r\n\t\t<text name=\"rl_ui_textColour\" text=\"Колір тексту\"/>\r\n\t\t<text name=\"rl_ui_textHue\" text=\"Відтінок тексту\"/>\r\n\t\t<text name=\"rl_ui_textRgb\" text=\"Текст RGB\"/>\r\n\r\n\t\t<text name=\"rl_ui_formatMonths\" text=\"%s місяці\"/>\r\n\t\t<text name=\"rl_ui_formatMonth\" text=\"%s місяць\"/>\r\n\t\t<text name=\"rl_ui_notPregnant\" text=\"Не вагітна\"/>\r\n\t\t<text name=\"rl_ui_any\" text=\"Будь-який\"/>\r\n\t\t<text name=\"rl_ui_pregnancy\" text=\"Вагітність\"/>\r\n\t\t<text name=\"rl_ui_productivity\" text=\"Вагітність\"/>\r\n\t\t<text name=\"rl_ui_selectAll\" text=\"Вибрати все\"/>\r\n\t\t<text name=\"rl_ui_selectNone\" text=\"Виберіть Ні\"/>\r\n\t\t<text name=\"rl_ui_filters\" text=\"Фільтри\"/>\r\n\t\t<text name=\"rl_ui_doesntHaveName\" text=\"Немає ім'я\"/>\r\n\t\t<text name=\"rl_ui_doesHaveName\" text=\"Має ім'я\"/>\r\n\r\n\r\n\r\n\t\t<text name=\"rl_ui_castrated\" text=\"Castrated\"/>\r\n\t\t<text name=\"rl_ui_castrate\" text=\"Castrate\"/>\r\n\t\t<text name=\"rl_ui_importance\" text=\"Importance\"/>\r\n\t\t<text name=\"rl_ui_type\" text=\"Type\"/>\r\n\t\t<text name=\"rl_ui_date\" text=\"Date\"/>\r\n\t\t<text name=\"rl_ui_message\" text=\"Message\"/>\r\n\t\t<text name=\"rl_ui_messages\" text=\"Messages\"/>\r\n\t\t<text name=\"rl_ui_unknownCauses\" text=\"unknown causes\"/>\r\n\t\t<text name=\"rl_ui_messageNumber\" text=\"%s-%s of %s\"/>\r\n\t\t<text name=\"rl_ui_deleteMessage\" text=\"Delete Message\"/>\r\n\t\t<text name=\"rl_ui_unreadMessages\" text=\"Husbandry '%s' has unread messages!\"/>\r\n\t\t<text name=\"rl_ui_herdsman\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_ui_budget\" text=\"Budget\"/>\r\n\t\t<text name=\"rl_ui_budgetType\" text=\"Budget Type\"/>\r\n\t\t<text name=\"rl_ui_fixed\" text=\"Fixed\"/>\r\n\t\t<text name=\"rl_ui_percentage\" text=\"Percentage\"/>\r\n\t\t<text name=\"rl_ui_maxAnimals\" text=\"Max Animals\"/>\r\n\t\t<text name=\"rl_ui_infinite\" text=\"Infinite\"/>\r\n\t\t<text name=\"rl_ui_herdsmanRecentlyBought\" text=\"Recent Herdsman Purchase\"/>\r\n\t\t<text name=\"rl_ui_previousWage\" text=\"Previous Wage\"/>\r\n\t\t<text name=\"rl_ui_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"finance_herdsmanWages\" text=\"Herdsman Wages\"/>\r\n\t\t<text name=\"rl_ui_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"finance_medicine\" text=\"Medicine\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase\" text=\"Inseminant Purchase\"/>\r\n\t\t<text name=\"finance_semenPurchase_github\" text=\"Semen Purchase\"/>\r\n\t\t<text name=\"rl_ui_noDiseases\" text=\"No Diseases\"/>\r\n\t\t<text name=\"rl_ui_onlyDiseases\" text=\"Only Diseases\"/>\r\n\t\t<text name=\"rl_ui_naming\" text=\"Naming\"/>\r\n\t\t<text name=\"rl_ui_alphabetical\" text=\"Alphabetical\"/>\r\n\t\t<text name=\"rl_ui_breed\" text=\"Breed\"/>\r\n\t\t<text name=\"rl_ui_dontMark\" text=\"Don't Mark\"/>\r\n\t\t<text name=\"rl_ui_mark\" text=\"Mark\"/>\r\n\t\t<text name=\"rl_ui_unmark\" text=\"Unmark\"/>\r\n\t\t<text name=\"rl_ui_favourite\" text=\"Favourite\"/>\r\n\t\t<text name=\"rl_ui_unFavourite\" text=\"Unfavourite\"/>\r\n\t\t<text name=\"rl_ui_quantity\" text=\"Quantity\"/>\r\n\t\t<text name=\"rl_ui_dewar\" text=\"Dewar\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful\" text=\"Artificial inseminant successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_successful_github\" text=\"Semen successfully purchased. You can pick it up at the store\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful\" text=\"Artificial inseminant could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_semenPurchase_unsuccessful_github\" text=\"Semen could not be purchased\"/>\r\n\t\t<text name=\"rl_ui_earTag\" text=\"Ear Tag\"/>\r\n\t\t<text name=\"rl_ui_species\" text=\"Species\"/>\r\n\t\t<text name=\"rl_ui_strawSingle\" text=\"Straw\"/>\r\n\t\t<text name=\"rl_ui_strawMultiple\" text=\"Straws\"/>\r\n\t\t<text name=\"rl_ui_artificialInsemination\" text=\"Artificial Insemination\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission\" text=\"You don't have to permission to trade animals or purchase inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoPermission_github\" text=\"You don't have to permission to trade animals or purchase semen.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney\" text=\"You don't have enough money to purchase this inseminant.\"/>\r\n\t\t<text name=\"rl_ui_semenPurchaseNoMoney_github\" text=\"You don't have enough money to purchase this semen.\"/>\r\n\t\t<text name=\"rl_ui_takeStraw\" text=\"Take Straw\"/>\r\n\t\t<text name=\"rl_ui_inseminateAnimal\" text=\"Inseminate %s\"/>\r\n\t\t<text name=\"rl_ui_inseminate\" text=\"Inseminate\"/>\r\n\t\t<text name=\"rl_ui_strawEmpty\" text=\"This straw is empty\"/>\r\n\t\t<text name=\"rl_ui_averageSuccessColon\" text=\"Average Success: \"/>\r\n\t\t<text name=\"rl_ui_averageSuccess\" text=\"Average Success\"/>\r\n\t\t<text name=\"rl_ui_success\" text=\"Success\"/>\r\n\t\t<text name=\"rl_ui_save\" text=\"Save\"/>\r\n\t\t<text name=\"rl_ui_load\" text=\"Load\"/>\r\n\t\t<text name=\"rl_ui_saveProfile\" text=\"Save Profile\"/>\r\n\t\t<text name=\"rl_ui_loadProfile\" text=\"Load Profile\"/>\r\n\r\n\t\t<text name=\"rl_ui_healthy\" text=\"Healthy\"/>\r\n\t\t<text name=\"rl_ui_hasDisease\" text=\"Has Disease\"/>\r\n\r\n\r\n\t\t<text name=\"rl_insemination_male\" text=\"Only females can be artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_pregnant\" text=\"This animal is already pregnant\"/>\r\n\t\t<text name=\"rl_insemination_animalType\" text=\"Animal must be of the same species as the father\"/>\r\n\t\t<text name=\"rl_insemination_inseminated\" text=\"This animal has already been artificially inseminated\"/>\r\n\t\t<text name=\"rl_insemination_recovering\" text=\"This animal is still recovering from its previous pregnancy\"/>\r\n\t\t<text name=\"rl_insemination_father\" text=\"Inbreeding is not permitted\"/>\r\n\t\t<text name=\"rl_insemination_young\" text=\"This animal is too young to be artificially inseminated\"/>\r\n\r\n\r\n\t\t<text name=\"rl_mark_aiManager_sell\" text=\"Herdsman marked for selling\"/>\r\n\t\t<text name=\"rl_mark_aiManager_castrate\" text=\"Herdsman marked for castrating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_disease\" text=\"Herdsman marked for treating\"/>\r\n\t\t<text name=\"rl_mark_aiManager_ai\" text=\"Herdsman marked for artificial insemination\"/>\r\n\t\t<text name=\"rl_mark_player\" text=\"Marked by player\"/>\r\n\t\t<text name=\"rl_ui_diseasedAnimals\" text=\"Diseased Animals\"/>\r\n\r\n\r\n\t\t<!-- AI - BUYING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_1\" text=\"The herdsman will not purchase animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_enabled_2\" text=\"The herdsman will purchase animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_1\" text=\"Purchasing budget is a fixed amount\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|type_2\" text=\"Purchasing budget is a percentage of your farm's money\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|fixed\" text=\"The herdsman will spend up to %s per day\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_budget|percentage\" text=\"The herdsman will spend up to %s of your farm's money per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_maxAnimals\" text=\"The herdsman will buy up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed\" text=\"The herdsman will only buy %s animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_breed_any\" text=\"The herdsman will buy any breed\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_1\" text=\"The herdsman will only purchase animals without any diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_diseases_2\" text=\"The herdsman will purchase animals regardless of diseases\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_1\" text=\"The herdsman will only purchase female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_2\" text=\"The herdsman will purchase female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_gender_3\" text=\"The herdsman will only purchase male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_equal\" text=\"The herdsman will only purchase animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_age_range\" text=\"The herdsman will only purchase animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_equal\" text=\"The herdsman will only purchase animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_quality_range\" text=\"The herdsman will only purchase animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_equal\" text=\"The herdsman will only purchase animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_fertility_range\" text=\"The herdsman will only purchase animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_equal\" text=\"The herdsman will only purchase animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_health_range\" text=\"The herdsman will only purchase animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_equal\" text=\"The herdsman will only purchase animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_productivity_range\" text=\"The herdsman will only purchase animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_equal\" text=\"The herdsman will only purchase animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_buy_metabolism_range\" text=\"The herdsman will only purchase animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - SELLING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_1\" text=\"The herdsman will not sell animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_enabled_2\" text=\"The herdsman will sell animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_maxAnimals\" text=\"The herdsman will sell up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_1\" text=\"The herdsman will not mark animals to be sold\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_mark_2\" text=\"The herdsman will mark animals to be sold\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_1\" text=\"The herdsman will sell animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_diseasesSecondary_2\" text=\"The herdsman will only sell animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_1\" text=\"The herdsman will only sell female animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_2\" text=\"The herdsman will sell female and male animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_gender_3\" text=\"The herdsman will only sell male animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_equal\" text=\"The herdsman will only sell animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_age_range\" text=\"The herdsman will only sell animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_equal\" text=\"The herdsman will only sell animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_quality_range\" text=\"The herdsman will only sell animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_equal\" text=\"The herdsman will only sell animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_fertility_range\" text=\"The herdsman will only sell animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_equal\" text=\"The herdsman will only sell animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_health_range\" text=\"The herdsman will only sell animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_equal\" text=\"The herdsman will only sell animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_productivity_range\" text=\"The herdsman will only sell animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_equal\" text=\"The herdsman will only sell animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_sell_metabolism_range\" text=\"The herdsman will only sell animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - CASTRATING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_1\" text=\"The herdsman will not castrate animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_enabled_2\" text=\"The herdsman will castrate animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_1\" text=\"The herdsman will not mark animals for castration\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_mark_2\" text=\"The herdsman will mark animals for castration\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_1\" text=\"The herdsman will castrate animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_diseasesSecondary_2\" text=\"The herdsman will only castrate animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_equal\" text=\"The herdsman will only castrate animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_age_range\" text=\"The herdsman will only castrate animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_equal\" text=\"The herdsman will only castrate animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_quality_range\" text=\"The herdsman will only castrate animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_equal\" text=\"The herdsman will only castrate animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_fertility_range\" text=\"The herdsman will only castrate animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_equal\" text=\"The herdsman will only castrate animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_health_range\" text=\"The herdsman will only castrate animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_equal\" text=\"The herdsman will only castrate animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_productivity_range\" text=\"The herdsman will only castrate animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_equal\" text=\"The herdsman will only castrate animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_castrate_metabolism_range\" text=\"The herdsman will only castrate animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- AI - NAMING -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_1\" text=\"The herdsman will not name animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_enabled_2\" text=\"The herdsman will name animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_1\" text=\"The herdsman will name animals randomly\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_naming_convention_2\" text=\"The herdsman will name animals alphabetically\"/>\r\n\r\n\r\n\t\t<!-- AI - AI -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_1\" text=\"The herdsman will not AI animals\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_enabled_2\" text=\"The herdsman will AI animals\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_maxAnimals\" text=\"The herdsman will AI up to %s animals per day\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_1\" text=\"The herdsman will not mark animals to be inseminated\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_mark_2\" text=\"The herdsman will mark animals to be inseminated\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_1\" text=\"The herdsman will AI animals regardless of diseases\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_diseasesSecondary_2\" text=\"The herdsman will only AI animals with a disease\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen\" text=\"The herdsman will use inseminant from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_github\" text=\"The herdsman will use semen from %s\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any\" text=\"The herdsman will use any viable inseminant\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_semen_any_github\" text=\"The herdsman will use any viable semen\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_equal\" text=\"The herdsman will only AI animals that are %s old\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_age_range\" text=\"The herdsman will only AI animals that are between %s and %s old\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_equal\" text=\"The herdsman will only AI animals with %s quality\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_quality_range\" text=\"The herdsman will only AI animals with quality between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_equal\" text=\"The herdsman will only AI animals with %s fertility\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_fertility_range\" text=\"The herdsman will only AI animals with fertility between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_equal\" text=\"The herdsman will only AI animals with %s health\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_health_range\" text=\"The herdsman will only AI animals with health between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_equal\" text=\"The herdsman will only AI animals with %s productivity\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_productivity_range\" text=\"The herdsman will only AI animals with productivity between %s and %s\"/>\r\n\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_equal\" text=\"The herdsman will only AI animals with %s metabolism\"/>\r\n\t\t<text name=\"rl_ui_herdsmanTooltip_ai_metabolism_range\" text=\"The herdsman will only AI animals with metabolism between %s and %s\"/>\r\n\r\n\r\n\t\t<!-- НАЛАШТУВАННЯ -->\r\n\t\t<text name=\"rl_settings\" text=\"Реалістичне тваринництво\"/>\r\n\t\t<text name=\"rl_settings_off\" text=\"Вимкнено\"/>\r\n\t\t<text name=\"rl_settings_on\" text=\"Увімкнено\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_label\" text=\"Видалення тварин\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_1\" text=\"Тварини не видалятимуться через вагітність, стан здоров’я, вік або нещасні випадки\"/>\r\n\t\t<text name=\"rl_settings_deathEnabled_tooltip_2\" text=\"Тварини будуть видалятися через вагітність, стан здоров’я, вік або нещасні випадки\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_label\" text=\"Ймовірність нещасних випадків\"/>\r\n\t\t<text name=\"rl_settings_accidentsChance_tooltip\" text=\"Змініть ймовірність видалення тварин через випадкові нещасні випадки\"/>\r\n\r\n\t\t<text name=\"rl_settings_foodScale_label\" text=\"Харчові ваги\"/>\r\n\t\t<text name=\"rl_settings_foodScale_tooltip\" text=\"Змінити кількість їжі, яку їдять тварини\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_label\" text=\"Максимальна кількість тварин у продавця\"/>\r\n\t\t<text name=\"rl_settings_maxDealerAnimals_tooltip\" text=\"Змінити максимальну кількість тварин, яку продавець тварин може мати в наявності для кожного типу тварин\"/>\r\n\r\n\t\t<text name=\"rl_settings_tagColour_label\" text=\"Змінити колір тегу\"/>\r\n\t\t<text name=\"rl_settings_tagColour_tooltip\" text=\"Змінити колір вушних бірок\"/>\r\n\t\t<text name=\"rl_settings_tagColour_text\" text=\"Змінити колір тегу\"/>\r\n\r\n\t\t<text name=\"rl_settings_exportCSV_label\" text=\"Експорт до CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_tooltip\" text=\"Експорт статистики в CSV\"/>\r\n\t\t<text name=\"rl_settings_exportCSV_text\" text=\"Експорт до CSV\"/>\r\n\r\n\t\t<text name=\"rl_settings_maxNumMessages_label\" text=\"Maximum Amount of Messages\"/>\r\n\t\t<text name=\"rl_settings_maxNumMessages_tooltip\" text=\"A higher amount will result in your save folder taking up more space. After this limit is reached, the earliest messages will be deleted.\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesEnabled_label\" text=\"Diseases Enabled\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_1\" text=\"Animals cannot catch or inherit diseases\"/>\r\n\t\t<text name=\"rl_settings_diseasesEnabled_tooltip_2\" text=\"Animals can catch or inherit diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_diseasesChance_label\" text=\"Disease Chance\"/>\r\n\t\t<text name=\"rl_settings_diseasesChance_tooltip\" text=\"Change the likelihood of animals contracting diseases\"/>\r\n\r\n\t\t<text name=\"rl_settings_useCustomAnimals_label\" text=\"Use Custom Animals\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_1\" text=\"Use RealisticLivestock animal models (requires restart)\"/>\r\n\t\t<text name=\"rl_settings_useCustomAnimals_tooltip_2\" text=\"Use custom animal models (experimental, requires restart, must be unzipped)\"/>\r\n\r\n\t\t<text name=\"rl_settings_animalsXML_label\" text=\"Set Animals XML Path\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_tooltip\" text=\"Set path to a custom animals XML file\"/>\r\n\t\t<text name=\"rl_settings_animalsXML_text\" text=\"Set Animals XML Path\"/>\r\n\r\n\r\n\r\n\t\t<!--  HELP  -->\r\n\r\n\r\n\t\t<text name=\"rl_help_monitors_title\" text=\"Монітори\"/>\r\n\t\t<text name=\"rl_help_monitors_1\" text=\"Для того, щоб бачити більшість статистичних даних тварини, вам потрібно прикріпити до неї мітку моніторингу, що можна зробити через меню тварини (де ви купуєте і продаєте тварин). Моніторингові мітки також візуально відображаються на тварині, на її лівому вусі поруч з ідентифікатором.\"/>\r\n\t\t<text name=\"rl_help_monitors_2\" text=\"Моніторинг міток дозволить вам отримати важливу інформацію про стан здоров'я, вагу, лактацію, продуктивність, а також про потреби в соломі, кормі та воді.\"/>\r\n\t\t<text name=\"rl_help_monitors_3\" text=\"Прикріплення бірки до тварини коштуватиме вам невелику щомісячну підписку в залежності від виду тварини. Якщо ви вирішите зняти бірку, вона буде видалена на початку наступного місяця.\"/>\r\n\r\n\t\t<text name=\"rl_help_pregnancy_title\" text=\"Вагітність\"/>\r\n\t\t<text name=\"rl_help_pregnancy_1\" text=\"Для того, щоб завагітніти, самкам потрібен щонайменше 1 самець. Обидві тварини повинні бути відповідного віку і стану здоров'я, а також належати до одного виду. Допускається розведення між різними породами (наприклад, голштинська корова і бик ангус).\"/>\r\n\t\t<text name=\"rl_help_pregnancy_2\" text=\"Інбридинг не допускається. Якщо самець і самка є прямими родичами, вони не будуть розмножуватися разом.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_3\" text=\"Шанс самки завагітніти залежить від фертильності як її, так і самця. Самка з вищою фертильністю також має значно вищі шанси на народження більшої кількості нащадків за один раз.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_4\" text=\"Як тільки самка завагітніє, вона почне виношувати своє потомство. Очікувану дату вагітності та кількість потомства можна переглянути, подивившись на тварину в загоні або натиснувши на неї в меню тварин.\"/>\r\n\t\t<text name=\"rl_help_pregnancy_5\" text=\"Коли вона досягне свого терміну, вона народить своїх дітей. Однак новонароджені мають певні шанси бути вилученими, так само як і мати, якщо вагітність протікає погано. Новонароджені, які з'являться на світ у переповненому загоні, будуть продані автоматично.\"/>\r\n\r\n\t\t<text name=\"rl_help_production_title\" text=\"Виробництво\"/>\r\n\t\t<text name=\"rl_help_production_1\" text=\"Корови будь-якої породи починають виробляти молоко тільки після пологів. Після пологів корова буде виробляти молоко в геометричній прогресії протягом 3 місяців, потім її продуктивність буде повільно знижуватися протягом наступних 6 місяців. Через 10 місяців після вагітності корова перестане виробляти молоко до наступної вагітності.\"/>\r\n\t\t<text name=\"rl_help_production_2\" text=\"Вівці будуть виробляти вовну в теплі місяці. У холодні місяці, при температурі нижче 12°C, вони не будуть виробляти вовну.\"/>\r\n\t\t<text name=\"rl_help_production_3\" text=\"На виробництво молока, вовни та яєць також впливає генетика тварини. Тварина з хорошою генетикою вироблятиме більше, тоді як тварина з поганою генетикою не вироблятиме багато взагалі.\"/>\r\n\r\n\t\t<text name=\"rl_help_weight_title\" text=\"Вага\"/>\r\n\t\t<text name=\"rl_help_weight_1\" text=\"Тварини мають певну вагу, яка залежить від того, скільки вони їдять і п'ють. Кожен вид і порода має свою середню вагу, яка впливає на вагу кожної тварини.\"/>\r\n\t\t<text name=\"rl_help_weight_2\" text=\"Вага збільшує цінність тварини, а низька вага впливає на ймовірність того, що її вилучать щомісяця.\"/>\r\n\r\n\t\t<text name=\"rl_help_genetics_title\" text=\"Генетика\"/>\r\n\t\t<text name=\"rl_help_genetics_1\" text=\"Кожна тварина має 4 різні генетичні цінності: метаболізм, фертильність, здоров'я та якість. Генетика змішується між матір'ю і батьком, а потім передається їхнім дітям.\"/>\r\n\t\t<text name=\"rl_help_genetics_2\" text=\"Метаболізм впливає на здатність тварини перетворювати їжу у вагу і впливає на кількість з'їденого.\"/>\r\n\t\t<text name=\"rl_help_genetics_3\" text=\"Фертильність впливає на шанс тварини завагітніти або завагітніти самкою, а також на кількість потомства, яке вона принесе.\"/>\r\n\t\t<text name=\"rl_help_genetics_4\" text=\"Стан здоров'я тварини впливає на її шанси бути вилученою щомісяця. Тварина з кращою генетикою здоров'я також матиме довшу тривалість життя.\"/>\r\n\t\t<text name=\"rl_help_genetics_5\" text=\"Якість впливає на вартість самої тварини, тварина з вищою якістю буде продаватися набагато дорожче.\"/>\r\n\t\t<text name=\"rl_help_genetics_6\" text=\"Велика рогата худоба, вівці та кури також мають виробничу генетику, яка впливає на кількість молока/яєць/вовни, яку вони виробляють.\"/>\r\n\r\n\r\n\r\n\t\t<!--  DISEASES  -->\r\n\r\n\r\n\t\t<text name=\"rl_ui_immune\" text=\"Immune\"/>\r\n\t\t<text name=\"rl_ui_startTreatment\" text=\"Start Treatment\"/>\r\n\t\t<text name=\"rl_ui_resumeTreatment\" text=\"Resume Treatment\"/>\r\n\t\t<text name=\"rl_ui_stopTreatment\" text=\"Stop Treatment\"/>\r\n\t\t<text name=\"rl_ui_duration\" text=\"Duration\"/>\r\n\t\t<text name=\"rl_ui_beingTreated\" text=\"Being treated\"/>\r\n\t\t<text name=\"rl_ui_notTreated\" text=\"Not treated\"/>\r\n\t\t<text name=\"rl_ui_carrier\" text=\"Carrier\"/>\r\n\r\n\t\t<text name=\"rl_diseases\" text=\"Diseases\"/>\r\n\t\t<text name=\"rl_disease\" text=\"Disease\"/>\r\n\r\n\t\t<text name=\"rl_disease_mastitis\" text=\"Mastitis\"/>\r\n\r\n\t\t<text name=\"rl_disease_cvm\" text=\"CVM\"/>\r\n\r\n\t\t<text name=\"rl_disease_footAndMouth\" text=\"Foot and Mouth\"/>\r\n\r\n\t\t<text name=\"rl_disease_ped\" text=\"Porcine Epidemic Diarrhoea\"/>\r\n\r\n\t\t<text name=\"rl_disease_avianFlu\" text=\"Avian Influenza\"/>\r\n\r\n\r\n\r\n\t\t<!--  MESSAGES  -->\r\n\r\n\r\n\t\t<text name=\"rl_messageTitle_pregnancy\" text=\"Pregnancy\"/>\r\n\t\t<text name=\"rl_messageTitle_death\" text=\"Removal\"/>\r\n\t\t<text name=\"rl_messageTitle_death_github\" text=\"Death\"/>\r\n\t\t<text name=\"rl_messageTitle_disease\" text=\"Disease\"/>\r\n\t\t<text name=\"rl_messageTitle_name\" text=\"Name\"/>\r\n\t\t<text name=\"rl_messageTitle_movement\" text=\"Movement\"/>\r\n\t\t<text name=\"rl_messageTitle_aiManager\" text=\"Herdsman\"/>\r\n\t\t<text name=\"rl_messageTitle_insemination\" text=\"Artificial Insemination\"/>\r\n\r\n\t\t<text name=\"rl_message_pregnancySingle\" text=\"Gave birth to 1 baby\"/>\r\n\t\t<text name=\"rl_message_pregnancyMultiple\" text=\"Gave birth to %s babies\"/>\r\n\t\t<text name=\"rl_message_pregnancySold\" text=\"%s babies were sold for %s due to overcrowding\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied\" text=\"%s babies were removed at birth\"/>\r\n\t\t<text name=\"rl_message_pregnancyDied_github\" text=\"%s babies died at birth\"/>\r\n\t\t<text name=\"rl_message_death\" text=\"Removed due to %s\"/>\r\n\t\t<text name=\"rl_message_death_github\" text=\"Died due to %s\"/>\r\n\t\t<text name=\"rl_message_diseaseContracted\" text=\"Contracted %s\"/>\r\n\t\t<text name=\"rl_message_diseaseCured\" text=\"Cured from %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_start\" text=\"Started treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_resume\" text=\"Resumed treatment for %s at %s\"/>\r\n\t\t<text name=\"rl_message_diseaseTreatment_stop\" text=\"Stopped treatment for %s\"/>\r\n\t\t<text name=\"rl_message_nameChange\" text=\"Name changed from '%s' to '%s'\"/>\r\n\t\t<text name=\"rl_message_nameAdded\" text=\"Given name '%s'\"/>\r\n\t\t<text name=\"rl_message_nameDeleted\" text=\"Name '%s' was removed\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_single\" text=\"1 animal was bought for %s\"/>\r\n\t\t<text name=\"rl_message_boughtAnimals_multiple\" text=\"%s animals were bought for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_single\" text=\"1 animal was sold for %s\"/>\r\n\t\t<text name=\"rl_message_soldAnimals_multiple\" text=\"%s animals were sold for %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_single\" text=\"1 animals was moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsTo_multiple\" text=\"%s animals were moved to %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_single\" text=\"1 animal was moved from %s\"/>\r\n\t\t<text name=\"rl_message_movedAnimalsFrom_multiple\" text=\"%s animals were moved from %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_single\" text=\"Herdsman bought 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_boughtAnimals_multiple\" text=\"Herdsman bought %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_single\" text=\"Herdsman sold 1 animal for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_soldAnimals_multiple\" text=\"Herdsman sold %s animals for %s\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_single\" text=\"Herdsman castrated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_castrated_multiple\" text=\"Herdsman castrated %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_single\" text=\"Herdsman named 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_named_multiple\" text=\"Herdsman named %s animals\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_single\" text=\"Herdsman marked 1 animal for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_sell_multiple\" text=\"Herdsman marked %s animals for selling\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_single\" text=\"Herdsman marked 1 animal for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_castrate_multiple\" text=\"Herdsman marked %s animals for castrating\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_single\" text=\"Herdsman marked 1 animal for treatment\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_disease_multiple\" text=\"Herdsman marked %s animals for treatment\"/>\r\n\t\t<text name=\"rl_message_insemination_success\" text=\"Insemination was successful\"/>\r\n\t\t<text name=\"rl_message_insemination_fail\" text=\"Insemination was unsuccessful\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_single\" text=\"Herdsman marked 1 animal for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_mark_ai_multiple\" text=\"Herdsman marked %s animals for AI\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_single\" text=\"Herdsman inseminated 1 animal\"/>\r\n\t\t<text name=\"rl_message_aiManager_ai_multiple\" text=\"Herdsman inseminated %s animals\"/>\r\n\r\n\r\n\r\n\t\t<!--  DEATHS  -->\r\n\r\n\r\n\t\t<text name=\"rl_death_pregnancy\" text=\"a bad pregnancy\"/>\r\n\t\t<text name=\"rl_death_health\" text=\"low health\"/>\r\n\t\t<text name=\"rl_death_age\" text=\"old age\"/>\r\n\t\t<text name=\"rl_death_accident\" text=\"an accident\"/>\r\n\t</texts>\r\n</l10n>\r\n"
  },
  {
    "path": "xml/animalNames.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\n<animalNames>\n\t\n\t<!-- BOTH GENDERS -->\n\t\n\t\n\t<name value=\"Admiral\"/>\n\t<name value=\"Apple\"/>\n\t<name value=\"Bossy\"/>\n\t<name value=\"Brownie\"/>\n\t<name value=\"Butterscotch\"/>\n\t<name value=\"Coco\"/>\n\t<name value=\"Choco\"/>\n\t<name value=\"Chance\"/>\n\t<name value=\"Charlie\"/>\n\t<name value=\"Crimson\"/>\n\t<name value=\"Dusty\"/>\n\t<name value=\"Dakota\"/>\n\t<name value=\"Dalton\"/>\n\t<name value=\"Ebony\"/>\n\t<name value=\"Eclipse\"/>\n\t<name value=\"Eco\"/>\n\t<name value=\"Emery\"/>\n\t<name value=\"Espresso\"/>\n\t<name value=\"Freckles\"/>\n\t<name value=\"Frosty\"/>\n\t<name value=\"Flare\"/>\n\t<name value=\"Flipper\"/>\n\t<name value=\"Flash\"/>\n\t<name value=\"Gizmo\"/>\n\t<name value=\"Groovy\"/>\n\t<name value=\"Gusty\"/>\n\t<name value=\"Hakka\"/>\n\t<name value=\"Illusion\"/>\n\t<name value=\"Indigo\"/>\n\t<name value=\"Inky\"/>\n\t<name value=\"Jupiter\"/>\n\t<name value=\"Jody\"/>\n\t<name value=\"Kismet\"/>\n\t<name value=\"Magic\"/>\n\t<name value=\"Midnight\"/>\n\t<name value=\"Neptune\"/>\n\t<name value=\"Nifty\"/>\n\t<name value=\"Oni\"/>\n\t<name value=\"Onyx\"/>\n\t<name value=\"Oreo\"/>\n\t<name value=\"Patches\"/>\n\t<name value=\"Prickles\"/>\n\t<name value=\"Quantum\"/>\n\t<name value=\"Quiver\"/>\n\t<name value=\"Royal\"/>\n\t<name value=\"Racer\"/>\n\t<name value=\"Ramsay\"/>\n\t<name value=\"Star\"/>\n\t<name value=\"Spirit\"/>\n\t<name value=\"Stormy\"/>\n\t<name value=\"Sam\"/>\n\t<name value=\"Shadow\"/>\n\t<name value=\"Shadowfax\"/>\n\t<name value=\"Shiver\"/>\n\t<name value=\"Silver\"/>\n\t<name value=\"Simba\"/>\n\t<name value=\"Smiff\"/>\n\t<name value=\"Sparky\"/>\n\t<name value=\"Speckles\"/>\n\t<name value=\"Snowball\"/>\n\t<name value=\"Spot\"/>\n\t<name value=\"Strider\"/>\n\t<name value=\"Sunny\"/>\n\t<name value=\"Tango\"/>\n\t<name value=\"Taylor\"/>\n\t<name value=\"Tempo\"/>\n\t<name value=\"Twister\"/>\n\t<name value=\"Trott\"/>\n\t<name value=\"Unagi\"/>\n\t<name value=\"Urko\"/>\n\t<name value=\"Velocity\"/>\n\t<name value=\"Virgo\"/>\n\t<name value=\"Whisper\"/>\n\t<name value=\"Willow\"/>\n\t<name value=\"Wild Eye\"/>\n\t<name value=\"Wings\"/>\n\t<name value=\"Yesterday\"/>\n\t<name value=\"Yago\"/>\n\t<name value=\"Zen\"/>\n\t<name value=\"Zeplin\"/>\n\t<name value=\"Zip\"/>\n\n\t\n\t<!-- FEMALE -->\n\t\n\t\n\t<name value=\"Amethyst\" gender=\"female\"/>\n\t<name value=\"Amber\" gender=\"female\"/>\n\t<name value=\"Amy\" gender=\"female\"/>\n\t<name value=\"Annabelle\" gender=\"female\"/>\n\t<name value=\"Athena\" gender=\"female\"/>\n\t<name value=\"Bella\" gender=\"female\"/>\n\t<name value=\"Belle\" gender=\"female\"/>\n\t<name value=\"Bertha\" gender=\"female\"/>\n\t<name value=\"Bessie\" gender=\"female\"/>\n\t<name value=\"Betty\" gender=\"female\"/>\n\t<name value=\"Bonnie\" gender=\"female\"/>\n\t<name value=\"Brownie\" gender=\"female\"/>\n\t<name value=\"Bubbles\" gender=\"female\"/>\n\t<name value=\"Buttercup\" gender=\"female\"/>\n\t<name value=\"Chloe\" gender=\"female\"/>\n\t<name value=\"Clarabelle\" gender=\"female\"/>\n\t<name value=\"Corizon\" gender=\"female\"/>\n\t<name value=\"Cricket\" gender=\"female\"/>\n\t<name value=\"Daisy\" gender=\"female\"/>\n\t<name value=\"Dolly\" gender=\"female\"/>\n\t<name value=\"Dot\" gender=\"female\"/>\n\t<name value=\"Dottie\" gender=\"female\"/>\n\t<name value=\"Dani\" gender=\"female\"/>\n\t<name value=\"Dixie\" gender=\"female\"/>\n\t<name value=\"Ella\" gender=\"female\"/>\n\t<name value=\"Elsie\" gender=\"female\"/>\n\t<name value=\"Ember\" gender=\"female\"/>\n\t<name value=\"Emma\" gender=\"female\"/>\n\t<name value=\"Epona\" gender=\"female\"/>\n\t<name value=\"Fantasia\" gender=\"female\"/>\n\t<name value=\"Faith\" gender=\"female\"/>\n\t<name value=\"Fay\" gender=\"female\"/>\n\t<name value=\"Foxy\" gender=\"female\"/>\n\t<name value=\"Gertie\" gender=\"female\"/>\n\t<name value=\"Gypsy\" gender=\"female\"/>\n\t<name value=\"Gracie\" gender=\"female\"/>\n\t<name value=\"Harley\" gender=\"female\"/>\n\t<name value=\"Henriette\" gender=\"female\"/>\n\t<name value=\"Honey\" gender=\"female\"/>\n\t<name value=\"Hope\" gender=\"female\"/>\n\t<name value=\"Hannah\" gender=\"female\"/>\n\t<name value=\"Kapusta\" gender=\"female\"/>\n\t<name value=\"Inca\" gender=\"female\"/>\n\t<name value=\"Inka\" gender=\"female\"/>\n\t<name value=\"Ivory\" gender=\"female\"/>\n\t<name value=\"Jasmine\" gender=\"female\"/>\n\t<name value=\"Jazz\" gender=\"female\"/>\n\t<name value=\"Kalypso\" gender=\"female\"/>\n\t<name value=\"Katelynn\" gender=\"female\"/>\n\t<name value=\"Keisha\" gender=\"female\"/>\n\t<name value=\"Krystal\" gender=\"female\"/>\n\t<name value=\"Luna\" gender=\"female\"/>\n\t<name value=\"Lux\" gender=\"female\"/>\n\t<name value=\"Lily\" gender=\"female\"/>\n\t<name value=\"Lady\" gender=\"female\"/>\n\t<name value=\"Lana\" gender=\"female\"/>\n\t<name value=\"Liberty\" gender=\"female\"/>\n\t<name value=\"Light\" gender=\"female\"/>\n\t<name value=\"Lulu\" gender=\"female\"/>\n\t<name value=\"Misty\" gender=\"female\"/>\n\t<name value=\"Maggie\" gender=\"female\"/>\n\t<name value=\"Marshmallow\" gender=\"female\"/>\n\t<name value=\"Melody\" gender=\"female\"/>\n\t<name value=\"Milky\" gender=\"female\"/>\n\t<name value=\"Millie\" gender=\"female\"/>\n\t<name value=\"Molly\" gender=\"female\"/>\n\t<name value=\"Moolinda\" gender=\"female\"/>\n\t<name value=\"Moolissa\" gender=\"female\"/>\n\t<name value=\"Muffin\" gender=\"female\"/>\n\t<name value=\"Mackenzie\" gender=\"female\"/>\n\t<name value=\"Miracle\" gender=\"female\"/>\n\t<name value=\"Nan\" gender=\"female\"/>\n\t<name value=\"Nellie\" gender=\"female\"/>\n\t<name value=\"Nevada\" gender=\"female\"/>\n\t<name value=\"Nirvana\" gender=\"female\"/>\n\t<name value=\"Ocean\" gender=\"female\"/>\n\t<name value=\"Opal\" gender=\"female\"/>\n\t<name value=\"Pandora\" gender=\"female\"/>\n\t<name value=\"Peach\" gender=\"female\"/>\n\t<name value=\"Penelope\" gender=\"female\"/>\n\t<name value=\"Penny\" gender=\"female\"/>\n\t<name value=\"Phoebe\" gender=\"female\"/>\n\t<name value=\"Princess\" gender=\"female\"/>\n\t<name value=\"Queen\" gender=\"female\"/>\n\t<name value=\"Quinn\" gender=\"female\"/>\n\t<name value=\"Ronja\" gender=\"female\"/>\n\t<name value=\"Rain\" gender=\"female\"/>\n\t<name value=\"Rosy\" gender=\"female\"/>\n\t<name value=\"Ruby\" gender=\"female\"/>\n\t<name value=\"Sadie\" gender=\"female\"/>\n\t<name value=\"Sally\" gender=\"female\"/>\n\t<name value=\"Snowflake\" gender=\"female\"/>\n\t<name value=\"Sprinkles\" gender=\"female\"/>\n\t<name value=\"Sugar\" gender=\"female\"/>\n\t<name value=\"Summer\" gender=\"female\"/>\n\t<name value=\"Sweetie\" gender=\"female\"/>\n\t<name value=\"Twilight\" gender=\"female\"/>\n\t<name value=\"Umbra\" gender=\"female\"/>\n\t<name value=\"Unity\" gender=\"female\"/>\n\t<name value=\"Ursula\" gender=\"female\"/>\n\t<name value=\"Utopia\" gender=\"female\"/>\n\t<name value=\"Uma\" gender=\"female\"/>\n\t<name value=\"Utara\" gender=\"female\"/>\n\t<name value=\"Vanilla\" gender=\"female\"/>\n\t<name value=\"Vanity\" gender=\"female\"/>\n\t<name value=\"Vega\" gender=\"female\"/>\n\t<name value=\"Velvet\" gender=\"female\"/>\n\t<name value=\"Venus\" gender=\"female\"/>\n\t<name value=\"Verona\" gender=\"female\"/>\n\t<name value=\"Xena\" gender=\"female\"/>\n\t<name value=\"Zia\" gender=\"female\"/>\n\t\n\t\n\t<!-- MALE -->\n\n\t\n\t<name value=\"Angus\" gender=\"male\"/>\n\t<name value=\"Apollo\" gender=\"male\"/>\n\t<name value=\"Applejack\" gender=\"male\"/>\n\t<name value=\"Apache\" gender=\"male\"/>\n\t<name value=\"Ben\" gender=\"male\"/>\n\t<name value=\"Biggie\" gender=\"male\"/>\n\t<name value=\"Blackjack\" gender=\"male\"/>\n\t<name value=\"Blaze\" gender=\"male\"/>\n\t<name value=\"Bruno\" gender=\"male\"/>\n\t<name value=\"Buddy\" gender=\"male\"/>\n\t<name value=\"Bullseye\" gender=\"male\"/>\n\t<name value=\"Bully\" gender=\"male\"/>\n\t<name value=\"Beast\" gender=\"male\"/>\n\t<name value=\"Bandit\" gender=\"male\"/>\n\t<name value=\"Bud\" gender=\"male\"/>\n\t<name value=\"Bob\" gender=\"male\"/>\n\t<name value=\"Bryan\" gender=\"male\"/>\n\t<name value=\"Buck\" gender=\"male\"/>\n\t<name value=\"Chapter\" gender=\"male\"/>\n\t<name value=\"Craig\" gender=\"male\"/>\n\t<name value=\"Cowboy\" gender=\"male\"/>\n\t<name value=\"Champ\" gender=\"male\"/>\n\t<name value=\"Chester\" gender=\"male\"/>\n\t<name value=\"Clover\" gender=\"male\"/>\n\t<name value=\"Colton\" gender=\"male\"/>\n\t<name value=\"Dallas\" gender=\"male\"/>\n\t<name value=\"Duke\" gender=\"male\"/>\n\t<name value=\"Diego\" gender=\"male\"/>\n\t<name value=\"Diesel\" gender=\"male\"/>\n\t<name value=\"Duke\" gender=\"male\"/>\n\t<name value=\"Earl\" gender=\"male\"/>\n\t<name value=\"Edward\" gender=\"male\"/>\n\t<name value=\"Elvis\" gender=\"male\"/>\n\t<name value=\"Edwin\" gender=\"male\"/>\n\t<name value=\"Edgar\" gender=\"male\"/>\n\t<name value=\"Excalibur\" gender=\"male\"/>\n\t<name value=\"Falcon\" gender=\"male\"/>\n\t<name value=\"Fabio\" gender=\"male\"/>\n\t<name value=\"Frank\" gender=\"male\"/>\n\t<name value=\"Franco\" gender=\"male\"/>\n\t<name value=\"Fred\" gender=\"male\"/>\n\t<name value=\"Garris\" gender=\"male\"/>\n\t<name value=\"Ghost\" gender=\"male\"/>\n\t<name value=\"Godfrey\" gender=\"male\"/>\n\t<name value=\"Guinness\" gender=\"male\"/>\n\t<name value=\"Gulliver\" gender=\"male\"/>\n\t<name value=\"Goldfinger\" gender=\"male\"/>\n\t<name value=\"Harrison\" gender=\"male\"/>\n\t<name value=\"Harry\" gender=\"male\"/>\n\t<name value=\"Hartley\" gender=\"male\"/>\n\t<name value=\"Harvey\" gender=\"male\"/>\n\t<name value=\"Herbie\" gender=\"male\"/>\n\t<name value=\"Hercules\" gender=\"male\"/>\n\t<name value=\"Houston\" gender=\"male\"/>\n\t<name value=\"Icarus\" gender=\"male\"/>\n\t<name value=\"Inferno\" gender=\"male\"/>\n\t<name value=\"Ishtar\" gender=\"male\"/>\n\t<name value=\"Iolanthe\" gender=\"male\"/>\n\t<name value=\"Jack\" gender=\"male\"/>\n\t<name value=\"Jake\" gender=\"male\"/>\n\t<name value=\"James\" gender=\"male\"/>\n\t<name value=\"Jacob\" gender=\"male\"/>\n\t<name value=\"Jester\" gender=\"male\"/>\n\t<name value=\"Jimbo\" gender=\"male\"/>\n\t<name value=\"Jimmy\" gender=\"male\"/>\n\t<name value=\"Joker\" gender=\"male\"/>\n\t<name value=\"Kenny\" gender=\"male\"/>\n\t<name value=\"King\" gender=\"male\"/>\n\t<name value=\"Kirby\" gender=\"male\"/>\n\t<name value=\"Knight\" gender=\"male\"/>\n\t<name value=\"Kramer\" gender=\"male\"/>\n\t<name value=\"Khan\" gender=\"male\"/>\n\t<name value=\"Leonardo\" gender=\"male\"/>\n\t<name value=\"Lincoln\" gender=\"male\"/>\n\t<name value=\"Lucky\" gender=\"male\"/>\n\t<name value=\"Maverick\" gender=\"male\"/>\n\t<name value=\"Max\" gender=\"male\"/>\n\t<name value=\"Mercury\" gender=\"male\"/>\n\t<name value=\"Milo\" gender=\"male\"/>\n\t<name value=\"Malcolm\" gender=\"male\"/>\n\t<name value=\"Moose\" gender=\"male\"/>\n\t<name value=\"Mufasa\" gender=\"male\"/>\n\t<name value=\"Napoleon\" gender=\"male\"/>\n\t<name value=\"Nate\" gender=\"male\"/>\n\t<name value=\"Nelson\" gender=\"male\"/>\n\t<name value=\"Nemo\" gender=\"male\"/>\n\t<name value=\"Nimbus\" gender=\"male\"/>\n\t<name value=\"Nitro\" gender=\"male\"/>\n\t<name value=\"Oblivion\" gender=\"male\"/>\n\t<name value=\"Odin\" gender=\"male\"/>\n\t<name value=\"Odyssey\" gender=\"male\"/>\n\t<name value=\"Oliver\" gender=\"male\"/>\n\t<name value=\"Ollie\" gender=\"male\"/>\n\t<name value=\"Olympus\" gender=\"male\"/>\n\t<name value=\"Orson\" gender=\"male\"/>\n\t<name value=\"Oscar\" gender=\"male\"/>\n\t<name value=\"Poncho\" gender=\"male\"/>\n\t<name value=\"Prince\" gender=\"male\"/>\n\t<name value=\"Pablo\" gender=\"male\"/>\n\t<name value=\"Paladin\" gender=\"male\"/>\n\t<name value=\"Phantom\" gender=\"male\"/>\n\t<name value=\"Pilgrim\" gender=\"male\"/>\n\t<name value=\"Remington\" gender=\"male\"/>\n\t<name value=\"Rex\" gender=\"male\"/>\n\t<name value=\"Ringo\" gender=\"male\"/>\n\t<name value=\"Robin\" gender=\"male\"/>\n\t<name value=\"Rogue\" gender=\"male\"/>\n\t<name value=\"Rudolph\" gender=\"male\"/>\n\t<name value=\"Romeo\" gender=\"male\"/>\n\t<name value=\"Rocky\" gender=\"male\"/>\n\t<name value=\"Ranger\" gender=\"male\"/>\n\t<name value=\"Rusty\" gender=\"male\"/>\n\t<name value=\"Rambo\" gender=\"male\"/>\n\t<name value=\"Rascal\" gender=\"male\"/>\n\t<name value=\"Roswel\" gender=\"male\"/>\n\t<name value=\"Ross\" gender=\"male\"/>\n\t<name value=\"Scout\" gender=\"male\"/>\n\t<name value=\"Santa\" gender=\"male\"/>\n\t<name value=\"Spartan\" gender=\"male\"/>\n\t<name value=\"Stallion\" gender=\"male\"/>\n\t<name value=\"Storm\" gender=\"male\"/>\n\t<name value=\"Tesla\" gender=\"male\"/>\n\t<name value=\"Toby\" gender=\"male\"/>\n\t<name value=\"Ted\" gender=\"male\"/>\n\t<name value=\"Temper\" gender=\"male\"/>\n\t<name value=\"Tornado\" gender=\"male\"/>\n\t<name value=\"Thor\" gender=\"male\"/>\n\t<name value=\"Thunder\" gender=\"male\"/>\n\t<name value=\"Todd\" gender=\"male\"/>\n\t<name value=\"Turbo\" gender=\"male\"/>\n\t<name value=\"Turk\" gender=\"male\"/>\n\t<name value=\"Trooper\" gender=\"male\"/>\n\t<name value=\"Trigger\" gender=\"male\"/>\n\t<name value=\"Ulysses\" gender=\"male\"/>\n\t<name value=\"Uther\" gender=\"male\"/>\n\t<name value=\"Vagabond\" gender=\"male\"/>\n\t<name value=\"Viking\" gender=\"male\"/>\n\t<name value=\"Waldo\" gender=\"male\"/>\n\t<name value=\"Watson\" gender=\"male\"/>\n\t<name value=\"Will\" gender=\"male\"/>\n\t<name value=\"Winston\" gender=\"male\"/>\n\t<name value=\"Wrangler\" gender=\"male\"/>\n\t<name value=\"William\" gender=\"male\"/>\n\t<name value=\"Xerxes\" gender=\"male\"/>\n\t<name value=\"Xiao\" gender=\"male\"/>\n\t<name value=\"Xavier\" gender=\"male\"/>\n\t<name value=\"Yankee\" gender=\"male\"/>\n\t<name value=\"Yoshiko\" gender=\"male\"/>\n\t<name value=\"Zack\" gender=\"male\"/>\n\t<name value=\"Zeke\" gender=\"male\"/>\n\t<name value=\"Zeus\" gender=\"male\"/>\n\n\t<description value=\"Spotty\"/>\n\t<description value=\"Beautiful\"/>\n\t<description value=\"Mean\"/>\n\t<description value=\"Big\"/>\n\t<description value=\"Massive\"/>\n\t<description value=\"Huge\"/>\n\t<description value=\"Wonderful\"/>\n\t<description value=\"Nice\"/>\n\t<description value=\"Lazy\"/>\n\t<description value=\"Sleepy\"/>\n\t<description value=\"Slow\"/>\n\t<description value=\"Fast\"/>\n\t<description value=\"Ugly\"/>\n\t<description value=\"Cute\"/>\n\t<description value=\"Small\"/>\n\t<description value=\"Tiny\"/>\n\t<description value=\"Strange\"/>\n\t<description value=\"Cheerful\"/>\n\t<description value=\"Loud\"/>\n\t<description value=\"Quiet\"/>\n\t<description value=\"Cheery\"/>\n\t<description value=\"Moody\"/>\n\t<description value=\"Spoiled\"/>\n\t<description value=\"Energetic\"/>\n\t<description value=\"Sporty\"/>\n\t<description value=\"Lovely\"/>\n\t<description value=\"Annoying\"/>\n\t<description value=\"Friendly\"/>\n\t<description value=\"Scary\"/>\n</animalNames>"
  },
  {
    "path": "xml/animals.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?>\r\n<animals>\r\n\t<animal type=\"COW\" groupTitle=\"$l10n_animal_group_cows\" statsBreeding=\"breedCowsCount\" clusterClass=\"AnimalCluster\" averageBuyAge=\"12\" maxBuyAge=\"72\">\r\n\t\t<configFilename>animals/domesticated/cow/animals.xml</configFilename>\r\n\t\t<navMeshAgent height=\"1.6\" radius=\"0.9\" maxClimbMeters=\"1\" maxSlope=\"20\"/>\r\n\t\t<pasture sqmPerAnimal=\"100\"/>\r\n\t\t<pregnancy average=\"1\" max=\"3\"/>\r\n\t\t<fertility>\r\n\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"12\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"12\" value=\"960\"/>\r\n\t\t\t<key ageMonth=\"24\" value=\"965\"/>\r\n\t\t\t<key ageMonth=\"48\" value=\"980\"/>\r\n\t\t\t<key ageMonth=\"60\" value=\"985\"/>\r\n\t\t\t<key ageMonth=\"84\" value=\"930\"/>\r\n\t\t\t<key ageMonth=\"132\" value=\"540\"/>\r\n\t\t\t<key ageMonth=\"132\" value=\"0\"/>\r\n\t\t</fertility>\r\n        <subType subType=\"COW_SWISS_BROWN\" fillTypeName=\"COW_SWISS_BROWN\" gender=\"female\" minWeight=\"40.0\" targetWeight=\"650.0\" maxWeight=\"1200.0\" breed=\"SWISS_BROWN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"5\" image=\"$dataS/character/animals/domesticated/cow/store_cowSwissBrownBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"9\" image=\"$dataS/character/animals/domesticated/cow/store_cowSwissBrownKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/cow/store_cowSwissBrown.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/cow/store_cowSwissBrown.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"12\" durationMonth=\"10\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"200\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2400\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"150\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2000\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"2400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"1400\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"95\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"55\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"100\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"275\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"345\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<milk fillType=\"MILK\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"180\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"180\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"255\"/>\r\n\t\t\t\t\t<key ageMonth=\"72\" value=\"255\"/>\r\n\t\t\t\t\t<key ageMonth=\"120\" value=\"110\"/>\r\n\t\t\t\t</milk>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"250\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"BULL_SWISS_BROWN\" fillTypeName=\"BULL_SWISS_BROWN\" gender=\"male\" minWeight=\"40.0\" targetWeight=\"850.0\" maxWeight=\"1400.0\" breed=\"SWISS_BROWN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"5\" image=\"$dataS/character/animals/domesticated/cow/store_cowSwissBrownBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"9\" image=\"$dataS/character/animals/domesticated/cow/store_cowSwissBrownKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/cow/store_cowSwissBrown.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/cow/store_cowSwissBrown.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction supported=\"false\" minAgeMonth=\"12\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"250\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2700\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"220\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"2800\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"1800\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"150\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"500\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"95\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"55\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"100\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"285\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"355\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"185\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"225\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"COW_HOLSTEIN\" fillTypeName=\"COW_HOLSTEIN\" gender=\"female\" minWeight=\"42.0\" targetWeight=\"575.0\" maxWeight=\"1200.0\" breed=\"HOLSTEIN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"6\" image=\"$dataS/character/animals/domesticated/cow/store_cowHolsteinBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"10\" image=\"$dataS/character/animals/domesticated/cow/store_cowHolsteinKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/cow/store_cowHolstein.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/cow/store_cowHolstein.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"12\" durationMonth=\"10\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"200\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2200\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"135\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1900\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"2000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"1100\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"95\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"45\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"120\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"90\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"255\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"330\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<milk fillType=\"MILK\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"195\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"195\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"330\"/>\r\n\t\t\t\t\t<key ageMonth=\"72\" value=\"330\"/>\r\n\t\t\t\t\t<key ageMonth=\"120\" value=\"180\"/>\r\n\t\t\t\t</milk>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"250\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"BULL_HOLSTEIN\" fillTypeName=\"BULL_HOLSTEIN\" gender=\"male\" minWeight=\"45.0\" targetWeight=\"650.0\" maxWeight=\"1400.0\" breed=\"HOLSTEIN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"6\" image=\"$dataS/character/animals/domesticated/cow/store_cowHolsteinBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"10\" image=\"$dataS/character/animals/domesticated/cow/store_cowHolsteinKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/cow/store_cowHolstein.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/cow/store_cowHolstein.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction supported=\"false\" minAgeMonth=\"12\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"235\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2500\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"200\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2250\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"2600\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"1500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"150\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"500\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"95\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"45\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"120\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"90\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"265\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"340\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"175\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"215\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"COW_ANGUS\" fillTypeName=\"COW_ANGUS\" gender=\"female\" minWeight=\"32.0\" targetWeight=\"700.0\" maxWeight=\"1200.0\" breed=\"ANGUS\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"7\" name=\"$l10n_animal_visual_baby\" image=\"$dataS/character/animals/domesticated/cow/store_cowAngusBaby.png\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" canBeBought=\"true\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"11\" name=\"$l10n_animal_visual_kid\" image=\"$dataS/character/animals/domesticated/cow/store_cowAngusKid.png\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" canBeBought=\"true\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"3\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowAngus.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"3\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowAngus.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"12\" durationMonth=\"10\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"275\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"3200\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"200\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2800\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"3800\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"2000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"65\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"180\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"80\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"310\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"440\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<milk fillType=\"MILK\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"100\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"100\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"160\"/>\r\n\t\t\t\t\t<key ageMonth=\"72\" value=\"160\"/>\r\n\t\t\t\t\t<key ageMonth=\"120\" value=\"70\"/>\r\n\t\t\t\t</milk>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"25\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"300\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"250\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"BULL_ANGUS\" fillTypeName=\"BULL_ANGUS\" gender=\"male\" minWeight=\"35.0\" targetWeight=\"900.0\" maxWeight=\"1400.0\" breed=\"ANGUS\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"7\" name=\"$l10n_animal_visual_baby\" image=\"$dataS/character/animals/domesticated/cow/store_cowAngusBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"11\" name=\"$l10n_animal_visual_kid\" image=\"$dataS/character/animals/domesticated/cow/store_cowAngusKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"3\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowAngus.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"3\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowAngus.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction supported=\"false\" minAgeMonth=\"12\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"3200\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"245\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"3200\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"4100\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"2300\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"150\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"500\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"65\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"180\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"80\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"320\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"450\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"25\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"275\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"225\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"COW_LIMOUSIN\" fillTypeName=\"COW_LIMOUSIN\" gender=\"female\" minWeight=\"36.0\" targetWeight=\"630.0\" maxWeight=\"1200.0\" breed=\"LIMOUSIN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"8\" name=\"$l10n_animal_visual_baby\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousinBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"12\" name=\"$l10n_animal_visual_kid\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousinKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"4\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousin.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"4\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousin.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"12\" durationMonth=\"10\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"320\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"3400\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"225\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2950\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"4000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"2200\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"70\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"85\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"350\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"480\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<milk fillType=\"MILK\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"90\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"90\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"140\"/>\r\n\t\t\t\t\t<key ageMonth=\"72\" value=\"140\"/>\r\n\t\t\t\t\t<key ageMonth=\"120\" value=\"50\"/>\r\n\t\t\t\t</milk>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"25\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"300\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"250\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"BULL_LIMOUSIN\" fillTypeName=\"BULL_LIMOUSIN\" gender=\"male\" minWeight=\"39.0\" targetWeight=\"675.0\" maxWeight=\"1400.0\" breed=\"LIMOUSIN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"8\" name=\"$l10n_animal_visual_baby\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousinBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"12\" name=\"$l10n_animal_visual_kid\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousinKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"4\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousin.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"4\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousin.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction supported=\"false\" minAgeMonth=\"12\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"350\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"3750\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"275\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"3450\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"4400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"2550\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"150\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"500\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"70\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"85\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"360\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"490\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"25\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"285\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"235\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"COW_HEREFORD\" fillTypeName=\"COW_HEREFORD\" gender=\"female\" minWeight=\"33.0\" targetWeight=\"675.0\" maxWeight=\"1200.0\" breed=\"HEREFORD\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"18\" name=\"$l10n_animal_visual_baby\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousinBaby.png\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" canBeBought=\"true\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"17\" name=\"$l10n_animal_visual_kid\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousinKid.png\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" canBeBought=\"true\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"16\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousin.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"16\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousin.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"12\" durationMonth=\"10\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"225\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2400\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"210\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2200\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"2800\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"1600\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"60\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"150\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"65\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"280\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"380\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<milk fillType=\"MILK\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"190\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"190\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"265\"/>\r\n\t\t\t\t\t<key ageMonth=\"72\" value=\"265\"/>\r\n\t\t\t\t\t<key ageMonth=\"120\" value=\"125\"/>\r\n\t\t\t\t</milk>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"225\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"33\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"195\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"BULL_HEREFORD\" fillTypeName=\"BULL_HEREFORD\" gender=\"male\" minWeight=\"35.0\" targetWeight=\"750.0\" maxWeight=\"1400.0\" breed=\"HEREFORD\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"18\" name=\"$l10n_animal_visual_baby\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousinBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"17\" name=\"$l10n_animal_visual_kid\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousinKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"16\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousin.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"16\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_cowLimousin.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction supported=\"false\" minAgeMonth=\"12\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"250\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2500\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"225\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"2400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"3000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"1800\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"150\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"500\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"65\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"160\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"70\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"300\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"420\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"22\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"250\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"36\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"210\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"COW_HIGHLAND_CATTLE\" fillTypeName=\"COW_HIGHLAND_CATTLE\" gender=\"female\" minWeight=\"35.0\" targetWeight=\"725.0\" maxWeight=\"1200.0\" statsBreeding=\"breedCowsCount\" breed=\"HIGHLAND\" requiredDLC=\"highlandsFishingPack\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"19\" name=\"$l10n_animal_visual_baby\" image=\"$dataS/character/animals/domesticated/cow/store_highlandCattleBaby.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"20\" name=\"$l10n_animal_visual_kid\" image=\"$dataS/character/animals/domesticated/cow/store_highlandCattleKid.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"21\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_highlandCattle.png\" canBeBought=\"false\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"21\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/cow/store_highlandCattle.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionCowReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"12\" durationMonth=\"10\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"3000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"230\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"3000\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"3500\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"2500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"140\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"80\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"550\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<milk fillType=\"MILK\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"100\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"100\"/>\r\n\t\t\t\t\t<key ageMonth=\"36\" value=\"160\"/>\r\n\t\t\t\t\t<key ageMonth=\"72\" value=\"160\"/>\r\n\t\t\t\t\t<key ageMonth=\"120\" value=\"70\"/>\r\n\t\t\t\t</milk>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"25\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"300\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"250\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"COW_WATERBUFFALO\" fillTypeName=\"COW_WATERBUFFALO\" gender=\"female\" statsBreeding=\"breedWaterBuffaloCount\" minWeight=\"35.0\" targetWeight=\"425.0\" maxWeight=\"1200.0\" breed=\"WATER_BUFFALO\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"13\" name=\"$l10n_animal_visual_baby\" image=\"$dataS/character/animals/domesticated/waterBuffalo/store_waterBuffaloBaby.png\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" canBeBought=\"true\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"14\" name=\"$l10n_animal_visual_kid\" image=\"$dataS/character/animals/domesticated/waterBuffalo/store_waterBuffaloKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"15\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/waterBuffalo/store_waterBuffalo.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"15\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/waterBuffalo/store_waterBuffalo.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloMilk</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"12\" durationMonth=\"10\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"200\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1500\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"150\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1500\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"1000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"95\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"140\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"350\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<milk fillType=\"BUFFALOMILK\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"30\"/>\r\n\t\t\t\t</milk>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"25\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"300\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"250\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"BULL_WATERBUFFALO\" fillTypeName=\"BULL_WATERBUFFALO\" gender=\"male\" statsBreeding=\"breedWaterBuffaloCount\" minWeight=\"36.0\" targetWeight=\"500.0\" maxWeight=\"1400.0\" breed=\"WATER_BUFFALO\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"13\" name=\"$l10n_animal_visual_baby\" image=\"$dataS/character/animals/domesticated/waterBuffalo/store_waterBuffaloBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"14\" name=\"$l10n_animal_visual_kid\" image=\"$dataS/character/animals/domesticated/waterBuffalo/store_waterBuffaloKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" marker=\"0|0|0|4\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"15\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/waterBuffalo/store_waterBuffalo.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"18\" visualAnimalIndex=\"15\" name=\"$l10n_animal_visual_adult\" image=\"$dataS/character/animals/domesticated/waterBuffalo/store_waterBuffalo.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\" noseRing=\"0|0|0|0|0|0|0|0|0|7\" bumId=\"0|0|0|6\" marker=\"0|0|0|7\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBuffaloFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBullReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"12\" supported=\"false\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"250\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1800\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"200\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1750\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"2000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"1250\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"150\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"500\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"95\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"140\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"45\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"375\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"30\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"315\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"47\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"260\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t</animal>\r\n\t<animal type=\"PIG\" groupTitle=\"$l10n_animal_group_pigs\" statsBreeding=\"breedPigsCount\" clusterClass=\"AnimalCluster\" averageBuyAge=\"8\" maxBuyAge=\"60\">\r\n\t\t<configFilename>animals/domesticated/pigs/animals.xml</configFilename>\r\n\t\t<navMeshAgent height=\"1\" radius=\"0.6\" maxClimbMeters=\"0.8\" maxSlope=\"15\"/>\r\n\t\t<pasture sqmPerAnimal=\"9.4\"/>\r\n\t\t<pregnancy average=\"12\" max=\"16\"/>\r\n\t\t<fertility>\r\n\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"6\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"6\" value=\"920\"/>\r\n\t\t\t<key ageMonth=\"12\" value=\"940\"/>\r\n\t\t\t<key ageMonth=\"36\" value=\"960\"/>\r\n\t\t\t<key ageMonth=\"60\" value=\"880\"/>\r\n\t\t\t<key ageMonth=\"80\" value=\"780\"/>\r\n\t\t\t<key ageMonth=\"96\" value=\"540\"/>\r\n\t\t\t<key ageMonth=\"96\" value=\"0\"/>\r\n\t\t</fertility>\r\n\t\t<subType subType=\"PIG_LANDRACE\" fillTypeName=\"PIG_LANDRACE\" gender=\"female\" minWeight=\"1.36\" targetWeight=\"165.0\" maxWeight=\"1050.0\" breed=\"LANDRACE\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/pig/store_pigLandraceBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/pig/store_pigLandraceKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"3\" image=\"$dataS/character/animals/domesticated/pig/store_pigLandrace.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|0|1|0|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|0|1|0|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|0|2|0|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"6\" durationMonth=\"4\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"55\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"1100\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"400\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1400\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"150\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"20\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"8\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"35\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"75\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"55\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"100\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"45\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"35\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"85\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"BOAR_LANDRACE\" fillTypeName=\"BOAR_LANDRACE\" gender=\"male\" minWeight=\"1.4\" targetWeight=\"205.0\" maxWeight=\"1200.0\" breed=\"LANDRACE\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/pig/store_pigLandraceBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/pig/store_pigLandraceKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"3\" image=\"$dataS/character/animals/domesticated/pig/store_pigLandrace.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|0|1|0|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|0|1|0|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|0|2|0|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"8\" supported=\"false\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"65\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"1400\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"475\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1650\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"125\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"250\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"20\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"8\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"35\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"80\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"55\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"110\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"18\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"48\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"38\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"88\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"PIG_BLACK_PIED\" fillTypeName=\"PIG_BLACK_PIED\" gender=\"female\" minWeight=\"1.65\" targetWeight=\"180.0\" maxWeight=\"1050.0\" breed=\"BLACK_PIED\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"4\" image=\"$dataS/character/animals/domesticated/pig/store_pigBlackPiedBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"5\" image=\"$dataS/character/animals/domesticated/pig/store_pigBlackPiedKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"6\" image=\"$dataS/character/animals/domesticated/pig/store_pigBlackPied.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|0|1|0|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|0|1|0|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|0|2|0|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"6\" durationMonth=\"4\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"45\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"1000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"35\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"375\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1200\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"150\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"20\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"6\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"31\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"68\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"12\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"48\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"92\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"12\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"40\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"33\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"79\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"BOAR_BLACK_PIED\" fillTypeName=\"BOAR_BLACK_PIED\" gender=\"male\" minWeight=\"1.75\" targetWeight=\"250.0\" maxWeight=\"1200.0\" breed=\"BLACK_PIED\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"4\" image=\"$dataS/character/animals/domesticated/pig/store_pigBlackPiedBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"5\" image=\"$dataS/character/animals/domesticated/pig/store_pigBlackPiedKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"6\" image=\"$dataS/character/animals/domesticated/pig/store_pigBlackPied.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|0|1|0|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|0|1|0|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|0|2|0|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"8\" supported=\"false\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"55\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"1200\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"45\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"450\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"125\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"250\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"20\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"8\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"34\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"72\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"55\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"96\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"14\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"44\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"36\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"83\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"PIG_BERKSHIRE\" fillTypeName=\"PIG_BERKSHIRE\" gender=\"female\" minWeight=\"1.6\" targetWeight=\"140.0\" maxWeight=\"1050.0\" breed=\"BERKSHIRE\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"7\" image=\"$dataS/character/animals/domesticated/pig/store_pigBerkshireBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"8\" image=\"$dataS/character/animals/domesticated/pig/store_pigBerkshireKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"9\" image=\"$dataS/character/animals/domesticated/pig/store_pigBerkshire.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|0|1|0|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|0|1|0|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|0|2|0|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionPigReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"6\" durationMonth=\"4\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"65\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"1200\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"45\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"450\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1600\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"150\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"20\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"39\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"80\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"18\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"65\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"120\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"18\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"50\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"37\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"91\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"BOAR_BERKSHIRE\" fillTypeName=\"BOAR_BERKSHIRE\" gender=\"male\" minWeight=\"1.7\" targetWeight=\"180.0\" maxWeight=\"1200.0\" breed=\"BERKSHIRE\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"7\" image=\"$dataS/character/animals/domesticated/pig/store_pigBerkshireBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"8\" image=\"$dataS/character/animals/domesticated/pig/store_pigBerkshireKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"9\" image=\"$dataS/character/animals/domesticated/pig/store_pigBerkshire.png\" canBeBought=\"false\" monitor=\"0|0|0|0|0|0|0|0|0|0|1|0|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|0|1|0|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|0|2|0|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionBoarReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"8\" supported=\"false\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"75\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"1500\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"60\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"525\"/>\r\n\t\t\t\t<key ageMonth=\"24\" value=\"1850\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"125\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"250\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"20\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"13\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"44\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"85\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"68\"/>\r\n\t\t\t\t\t<key ageMonth=\"24\" value=\"130\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"21\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"55\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<liquidManure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"95\"/>\r\n\t\t\t\t</liquidManure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t</animal>\r\n\t<animal type=\"SHEEP\" groupTitle=\"$l10n_animal_group_sheepsAndGoats\" statsBreeding=\"breedSheepCount\" clusterClass=\"AnimalCluster\" averageBuyAge=\"12\" maxBuyAge=\"48\">\r\n\t\t<configFilename>animals/domesticated/sheep/animals.xml</configFilename>\r\n\t\t<navMeshAgent height=\"1.4\" radius=\"0.75\" maxClimbMeters=\"1.3\" maxSlope=\"25\"/>\r\n\t\t<pasture sqmPerAnimal=\"75\"/>\r\n\t\t<pregnancy average=\"2\" max=\"3\"/>\r\n\t\t<fertility>\r\n\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"8\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"8\" value=\"700\"/>\r\n\t\t\t<key ageMonth=\"18\" value=\"750\"/>\r\n\t\t\t<key ageMonth=\"36\" value=\"800\"/>\r\n\t\t\t<key ageMonth=\"72\" value=\"920\"/>\r\n\t\t\t<key ageMonth=\"84\" value=\"660\"/>\r\n\t\t\t<key ageMonth=\"120\" value=\"130\"/>\r\n\t\t\t<key ageMonth=\"120\" value=\"0\"/>\r\n\t\t</fertility>\r\n\t\t<subType subType=\"SHEEP_LANDRACE\" fillTypeName=\"SHEEP_LANDRACE\" gender=\"female\" minWeight=\"4.4\" targetWeight=\"45.0\" maxWeight=\"135.0\" breed=\"LANDRACE\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepLandraceBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepLandraceKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"8\" visualAnimalIndex=\"3\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepLandrace.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"8\" durationMonth=\"5\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"600\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"40\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"550\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"150\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"38\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"60\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"4\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"40\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"100\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"WOOL\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"85\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"RAM_LANDRACE\" fillTypeName=\"RAM_LANDRACE\" gender=\"male\" minWeight=\"4.7\" targetWeight=\"60.0\" maxWeight=\"150.0\" breed=\"LANDRACE\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepLandraceBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepLandraceKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"8\" visualAnimalIndex=\"3\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepLandrace.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"5\" supported=\"false\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"60\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"800\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"675\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"125\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"42\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"70\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"4\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"44\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"110\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"WOOL\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"15\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"85\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"SHEEP_STEINSCHAF\" fillTypeName=\"SHEEP_STEINSCHAF\" gender=\"female\" minWeight=\"4.8\" targetWeight=\"50.0\" maxWeight=\"135.0\" breed=\"STEINSCHAF\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"4\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSteinschafBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"5\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSteinschafKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"8\" visualAnimalIndex=\"6\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSteinschaf.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"8\" durationMonth=\"5\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"90\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"950\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"80\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"900\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"150\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"4\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"45\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"70\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"7\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"110\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"WOOL\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"12\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"70\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"RAM_STEINSCHAF\" fillTypeName=\"RAM_STEINSCHAF\" gender=\"male\" minWeight=\"5.3\" targetWeight=\"67.5\" maxWeight=\"150.0\" breed=\"STEINSCHAF\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"4\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSteinschafBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"5\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSteinschafKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"8\" visualAnimalIndex=\"6\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSteinschaf.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"5\" supported=\"false\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"125\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1200\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1050\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"125\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"4\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"51\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"76\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"7\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"56\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"120\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"WOOL\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"12\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"70\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"SHEEP_SWISS_MOUNTAIN\" fillTypeName=\"SHEEP_SWISS_MOUNTAIN\" gender=\"female\" minWeight=\"5.8\" targetWeight=\"80.0\" maxWeight=\"135.0\" breed=\"SWISS_MOUNTAIN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"7\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSwissMountainBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"8\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSwissMountainKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"8\" visualAnimalIndex=\"9\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSwissMountain.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"8\" durationMonth=\"5\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"115\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1100\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1050\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"150\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"85\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"60\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"120\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"WOOL\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"8\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"55\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"RAM_SWISS_MOUNTAIN\" fillTypeName=\"RAM_SWISS_MOUNTAIN\" gender=\"male\" minWeight=\"6.5\" targetWeight=\"105.0\" maxWeight=\"150.0\" breed=\"SWISS_MOUNTAIN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"7\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSwissMountainBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"8\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSwissMountainKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"8\" visualAnimalIndex=\"9\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepSwissMountain.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"5\" supported=\"false\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"145\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1350\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"120\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1200\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"125\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"56\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"89\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"65\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"130\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"WOOL\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"8\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"55\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"SHEEP_BLACK_WELSH\" fillTypeName=\"SHEEP_BLACK_WELSH\" gender=\"female\" minWeight=\"4.2\" targetWeight=\"42.0\" maxWeight=\"135.0\" breed=\"BLACK_WELSH\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"10\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepBlackWelshBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"11\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepBlackWelshKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"8\" visualAnimalIndex=\"12\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepBlackWelsh.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"8\" durationMonth=\"5\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"45\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"575\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"35\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"520\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"150\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"36\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"54\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"37\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"88\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"WOOL\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"95\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"RAM_BLACK_WELSH\" fillTypeName=\"RAM_BLACK_WELSH\" gender=\"male\" minWeight=\"4.6\" targetWeight=\"57.5\" maxWeight=\"150.0\" breed=\"BLACK_WELSH\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"10\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepBlackWelshBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"11\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepBlackWelshKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"8\" visualAnimalIndex=\"12\" image=\"$dataS/character/animals/domesticated/sheep/store_sheepBlackWelsh.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"5\" supported=\"false\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"55\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"650\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"45\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"600\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"125\"/>\r\n\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"39\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"58\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"41\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"93\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"WOOL\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"95\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"GOAT\" fillTypeName=\"GOAT\" statsBreeding=\"breedGoatsCount\" gender=\"female\" minWeight=\"3.75\" targetWeight=\"30.0\" maxWeight=\"90.0\" breed=\"GOAT\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"13\" image=\"$dataS/character/animals/domesticated/goat/store_goatBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionGoatProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionGoatFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionGoatReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"14\" image=\"$dataS/character/animals/domesticated/goat/store_goatKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionGoatProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionGoatFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionSheepYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionGoatReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"15\" image=\"$dataS/character/animals/domesticated/goat/store_goat.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionGoatProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionGoatFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionGoatReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"16\" durationMonth=\"5\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"200\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1500\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"100\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"30\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"50\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"2\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"50\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"GOATMILK\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"25\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"RAM_GOAT\" fillTypeName=\"RAM_GOAT\" statsBreeding=\"breedGoatsCount\" gender=\"male\" minWeight=\"4.0\" targetWeight=\"35.0\" maxWeight=\"115.0\" breed=\"GOAT\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"13\" image=\"$dataS/character/animals/domesticated/goat/store_goatBaby.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"3\" visualAnimalIndex=\"14\" image=\"$dataS/character/animals/domesticated/goat/store_goatKid.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"12\" visualAnimalIndex=\"15\" image=\"$dataS/character/animals/domesticated/goat/store_goat.png\" canBeBought=\"true\" monitor=\"0|0|0|0|0|0|0|0|0|1|0|1\" earTagLeft=\"0|0|0|0|0|0|0|0|0|1|0|0\" earTagRight=\"0|0|0|0|0|0|0|0|0|2|0|0\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionRamReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"5\" supported=\"false\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"225\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1750\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"150\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"1500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"30\"/>\r\n\t\t\t\t<key ageMonth=\"8\" value=\"125\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"40\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"2\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"23\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"54\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"5\" value=\"16\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"35\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t</animal>\r\n\t<animal type=\"HORSE\" groupTitle=\"$l10n_animal_group_horses\" statsBreeding=\"breedHorsesCount\" clusterClass=\"AnimalClusterHorse\" averageBuyAge=\"24\" maxBuyAge=\"240\">\r\n\t\t<configFilename>$dataS/character/animals/domesticated/horse/animals.xml</configFilename>\r\n\t\t<navMeshAgent height=\"2\" radius=\"1\" maxClimbMeters=\"1.5\" maxSlope=\"20\"/>\r\n\t\t<pasture sqmPerAnimal=\"100\"/>\r\n\t\t<pregnancy average=\"1\" max=\"3\"/>\r\n\t\t<fertility>\r\n\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"22\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"22\" value=\"950\"/>\r\n\t\t\t<key ageMonth=\"84\" value=\"920\"/>\r\n\t\t\t<key ageMonth=\"132\" value=\"860\"/>\r\n\t\t\t<key ageMonth=\"160\" value=\"760\"/>\r\n\t\t\t<key ageMonth=\"200\" value=\"540\"/>\r\n\t\t\t<key ageMonth=\"264\" value=\"150\"/>\r\n\t\t\t<key ageMonth=\"264\" value=\"0\"/>\r\n\t\t</fertility>\r\n\t\t<subType subType=\"HORSE_GRAY\" fillTypeName=\"HORSE_GRAY\" gender=\"female\" minWeight=\"45\" targetWeight=\"500.0\" maxWeight=\"900.0\" breed=\"GRAY\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/horse/store_horseGray.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"22\" durationMonth=\"11\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"5500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"STALLION_GRAY\" fillTypeName=\"STALLION_GRAY\" gender=\"male\" minWeight=\"48\" targetWeight=\"575.0\" maxWeight=\"1000.0\" breed=\"GRAY\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/horse/store_horseGray.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"36\" supported=\"false\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"650\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"6000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"6000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"HORSE_PINTO\" fillTypeName=\"HORSE_PINTO\" gender=\"female\" minWeight=\"45\" targetWeight=\"500.0\" maxWeight=\"900.0\" breed=\"PINTO\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/horse/store_horsePinto.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"22\" durationMonth=\"11\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"5500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"STALLION_PINTO\" fillTypeName=\"STALLION_PINTO\" gender=\"male\" minWeight=\"48\" targetWeight=\"575.0\" maxWeight=\"1000.0\" breed=\"PINTO\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/horse/store_horsePinto.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"36\" supported=\"false\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"650\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"6000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"6000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"HORSE_PALOMINO\" fillTypeName=\"HORSE_PALOMINO\" gender=\"female\" minWeight=\"45\" targetWeight=\"500.0\" maxWeight=\"900.0\" breed=\"PALOMINO\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"3\" image=\"$dataS/character/animals/domesticated/horse/store_horsePalomino.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"22\" durationMonth=\"11\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"5500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"STALLION_PALOMINO\" fillTypeName=\"STALLION_PALOMINO\" gender=\"male\" minWeight=\"48\" targetWeight=\"575.0\" maxWeight=\"1000.0\" breed=\"PALOMINO\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"3\" image=\"$dataS/character/animals/domesticated/horse/store_horsePalomino.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"36\" supported=\"false\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"650\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"6000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"6000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"HORSE_CHESTNUT\" fillTypeName=\"HORSE_CHESTNUT\" gender=\"female\" minWeight=\"45\" targetWeight=\"500.0\" maxWeight=\"900.0\" breed=\"CHESTNUT\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"4\" image=\"$dataS/character/animals/domesticated/horse/store_horseChestnut.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"22\" durationMonth=\"11\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"5500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"STALLION_CHESTNUT\" fillTypeName=\"STALLION_CHESTNUT\" gender=\"male\" minWeight=\"48\" targetWeight=\"575.0\" maxWeight=\"1000.0\" breed=\"CHESTNUT\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"4\" image=\"$dataS/character/animals/domesticated/horse/store_horseChestnut.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"36\" supported=\"false\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"650\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"6000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"6000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"HORSE_BAY\" fillTypeName=\"HORSE_BAY\" gender=\"female\" minWeight=\"45\" targetWeight=\"500.0\" maxWeight=\"900.0\" breed=\"BAY\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"5\" image=\"$dataS/character/animals/domesticated/horse/store_horseBay.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"22\" durationMonth=\"11\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"5500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"STALLION_BAY\" fillTypeName=\"STALLION_BAY\" gender=\"male\" minWeight=\"48\" targetWeight=\"575.0\" maxWeight=\"1000.0\" breed=\"BAY\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"5\" image=\"$dataS/character/animals/domesticated/horse/store_horseBay.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"36\" supported=\"false\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"650\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"6000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"6000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"HORSE_BLACK\" fillTypeName=\"HORSE_BLACK\" gender=\"female\" minWeight=\"45\" targetWeight=\"500.0\" maxWeight=\"900.0\" breed=\"BLACK\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"6\" image=\"$dataS/character/animals/domesticated/horse/store_horseBlack.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"22\" durationMonth=\"11\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"5500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"STALLION_BLACK\" fillTypeName=\"STALLION_BLACK\" gender=\"male\" minWeight=\"48\" targetWeight=\"575.0\" maxWeight=\"1000.0\" breed=\"BLACK\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"6\" image=\"$dataS/character/animals/domesticated/horse/store_horseBlack.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"36\" supported=\"false\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"650\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"6000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"6000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"HORSE_SEAL_BROWN\" fillTypeName=\"HORSE_SEAL_BROWN\" gender=\"female\" minWeight=\"45\" targetWeight=\"500.0\" maxWeight=\"900.0\" breed=\"SEAL_BROWN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"7\" image=\"$dataS/character/animals/domesticated/horse/store_horseSealBrown.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"22\" durationMonth=\"11\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"5500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"STALLION_SEAL_BROWN\" fillTypeName=\"STALLION_SEAL_BROWN\" gender=\"male\" minWeight=\"48\" targetWeight=\"575.0\" maxWeight=\"1000.0\" breed=\"SEAL_BROWN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"7\" image=\"$dataS/character/animals/domesticated/horse/store_horseSealBrown.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"36\" supported=\"false\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"650\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"6000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"6000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"HORSE_DUN\" fillTypeName=\"HORSE_DUN\" gender=\"female\" minWeight=\"45\" targetWeight=\"500.0\" maxWeight=\"900.0\" breed=\"DUN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"8\" image=\"$dataS/character/animals/domesticated/horse/store_horseDun.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"22\" durationMonth=\"11\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"400\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5000\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"5500\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"STALLION_DUN\" fillTypeName=\"STALLION_DUN\" gender=\"male\" minWeight=\"48\" targetWeight=\"575.0\" maxWeight=\"1000.0\" breed=\"DUN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"8\" image=\"$dataS/character/animals/domesticated/horse/store_horseDun.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionWater</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionHorseRiding</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionStallionReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"36\" supported=\"false\"/>\r\n\t\t\t<health increasePerHour=\"10\" decreasePerHour=\"25\" thresholdFactor=\"0.45\"/>\r\n\t\t\t<rideable filename=\"$dataS/character/animals/domesticated/horse/horse.xml\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"650\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"6000\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"500\"/>\r\n\t\t\t\t<key ageMonth=\"36\" value=\"5400\"/>\r\n\t\t\t\t<key ageMonth=\"60\" value=\"6000\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"300\"/>\r\n\t\t\t\t<key ageMonth=\"12\" value=\"600\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"80\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<water>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"10\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"50\"/>\r\n\t\t\t\t</water>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"50\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"400\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"20\"/>\r\n\t\t\t\t\t<key ageMonth=\"18\" value=\"200\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t</animal>\r\n\t<animal type=\"CHICKEN\" groupTitle=\"$l10n_animal_group_chickens\" statsBreeding=\"breedChickenCount\" clusterClass=\"AnimalCluster\" averageBuyAge=\"6\" maxBuyAge=\"24\">\r\n\t\t<configFilename>$dataS/character/animals/domesticated/chicken/animals.xml</configFilename>\r\n\t\t<navMeshAgent height=\"0.6\" radius=\"0.2\" maxClimbMeters=\"2\" maxSlope=\"35\"/>\r\n\t\t<pasture sqmPerAnimal=\"4.6\"/>\r\n\t\t<pregnancy average=\"5\" max=\"12\"/>\r\n\t\t<fertility>\r\n\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"6\" value=\"0\"/>\r\n\t\t\t<key ageMonth=\"6\" value=\"600\"/>\r\n\t\t\t<key ageMonth=\"12\" value=\"560\"/>\r\n\t\t\t<key ageMonth=\"24\" value=\"500\"/>\r\n\t\t\t<key ageMonth=\"36\" value=\"420\"/>\r\n\t\t\t<key ageMonth=\"60\" value=\"300\"/>\r\n\t\t\t<key ageMonth=\"84\" value=\"160\"/>\r\n\t\t\t<key ageMonth=\"120\" value=\"400\"/>\r\n\t\t\t<key ageMonth=\"120\" value=\"0\"/>\r\n\t\t</fertility>\r\n\t\t<subType subType=\"CHICKEN\" fillTypeName=\"CHICKEN\" gender=\"female\" minWeight=\"0.04\" targetWeight=\"3.25\" maxWeight=\"4.5\" breed=\"CHICKEN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"3\" image=\"$dataS/character/animals/domesticated/chicken/store_chickenChick.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"1\" image=\"$dataS/character/animals/domesticated/chicken/store_chickenHen.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenProfit</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionMature</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction minAgeMonth=\"6\" durationMonth=\"2\" minHealthFactor=\"0.75\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"30\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"2\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"25\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"1\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"5\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"1\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"7\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"1\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"7\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"2\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"6\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"12\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t\t<pallets fillType=\"EGG\">\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"0\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"1\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"48\" value=\"5\"/>\r\n\t\t\t\t\t<key ageMonth=\"60\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"72\" value=\"0\"/>\r\n\t\t\t\t</pallets>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t\t<subType subType=\"CHICKEN_ROOSTER\" fillTypeName=\"CHICKEN_ROOSTER\" gender=\"male\" minWeight=\"0.045\" targetWeight=\"4.25\" maxWeight=\"5.5\" breed=\"CHICKEN\">\r\n\t\t\t<visuals>\r\n\t\t\t\t<visual minAge=\"0\" visualAnimalIndex=\"3\" image=\"$dataS/character/animals/domesticated/chicken/store_chickenChick.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenRooster</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenFeed</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenYoung</description>\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenReproduction</description>\r\n\t\t\t\t</visual>\r\n\t\t\t\t<visual minAge=\"6\" visualAnimalIndex=\"2\" image=\"$dataS/character/animals/domesticated/chicken/store_chickenRooster.png\" canBeBought=\"true\">\r\n\t\t\t\t\t<description>$l10n_animal_descriptionChickenRooster</description>\r\n\t\t\t\t</visual>\r\n\t\t\t</visuals>\r\n\t\t\t<reproduction supported=\"false\" minAgeMonth=\"6\"/>\r\n\t\t\t<buyPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"3\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"30\"/>\r\n\t\t\t</buyPrice>\r\n\t\t\t<sellPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"2\"/>\r\n\t\t\t\t<key ageMonth=\"6\" value=\"25\"/>\r\n\t\t\t</sellPrice>\r\n\t\t\t<transportPrice>\r\n\t\t\t\t<key ageMonth=\"0\" value=\"1\"/>\r\n\t\t\t</transportPrice>\r\n\t\t\t<input>\r\n\t\t\t\t<straw>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"1\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"7\"/>\r\n\t\t\t\t</straw>\r\n\t\t\t\t<food>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"1\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"3\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"5\"/>\r\n\t\t\t\t</food>\r\n\t\t\t</input>\r\n\t\t\t<output>\r\n\t\t\t\t<manure>\r\n\t\t\t\t\t<key ageMonth=\"0\" value=\"2\"/>\r\n\t\t\t\t\t<key ageMonth=\"6\" value=\"6\"/>\r\n\t\t\t\t\t<key ageMonth=\"12\" value=\"12\"/>\r\n\t\t\t\t</manure>\r\n\t\t\t</output>\r\n\t\t</subType>\r\n\t</animal>\r\n</animals>\r\n"
  },
  {
    "path": "xml/diseases.xml",
    "content": "<diseases>\r\n\r\n\t<disease title=\"mastitis\" animals=\"COW SHEEP\" value=\"0.85\" transmission=\"0.05\" immunity=\"12\" recovery=\"3\">\r\n\t\t<prerequisites>\r\n\t\t\t<prerequisite path=\"isLactating\" value=\"true\" valueType=\"Bool\"/>\r\n\t\t</prerequisites>\r\n\t\t<probability>\r\n\t\t\t<key age=\"0\" value=\"0\"/>\r\n\t\t\t<key age=\"12\" value=\"0.005\"/>\r\n\t\t</probability>\r\n\t\t<fatality>\r\n\t\t\t<key time=\"0\" value=\"0\"/>\r\n\t\t</fatality>\r\n\t\t<output>\r\n\t\t\t<fillType type=\"milk\" modifier=\"0\"/>\r\n\t\t\t<fillType type=\"pallets\" modifier=\"0\"/>\r\n\t\t</output>\r\n\t\t<treatment cost=\"200\" duration=\"1\"/>\r\n\t</disease>\r\n\r\n\t<disease title=\"cvm\" animals=\"COW\" value=\"0.75\">\r\n\t\t<probability>\r\n\t\t\t<key age=\"0\" value=\"0\"/>\r\n\t\t</probability>\r\n\t\t<fatality>\r\n\t\t\t<key time=\"0\" value=\"0.95\"/>\r\n\t\t\t<key time=\"1\" value=\"1\"/>\r\n\t\t</fatality>\r\n\t\t<carrier>\r\n\t\t\t<output>\r\n\t\t\t\t<fillType type=\"milk\" modifier=\"1.5\"/>\r\n\t\t\t</output>\r\n\t\t</carrier>\r\n\t\t<genetic recessive=\"true\" saleChance=\"0.005\"/>\r\n\t</disease>\r\n\t\r\n\t<disease title=\"footAndMouth\" animals=\"COW SHEEP PIG\" value=\"0.5\" transmission=\"0.1\" immunity=\"24\">\r\n\t\t<probability>\r\n\t\t\t<key age=\"0\" value=\"0\"/>\r\n\t\t\t<key age=\"6\" value=\"0.00075\"/>\r\n\t\t</probability>\r\n\t\t<fatality>\r\n\t\t\t<key time=\"0\" value=\"0.2\"/>\r\n\t\t\t<key time=\"6\" value=\"0.12\"/>\r\n\t\t\t<key time=\"18\" value=\"0.035\"/>\r\n\t\t</fatality>\r\n\t\t<output>\r\n\t\t\t<fillType type=\"milk\" modifier=\"0.35\"/>\r\n\t\t\t<fillType type=\"pallets\" modifier=\"0.9\"/>\r\n\t\t</output>\r\n\t\t<treatment cost=\"250\" duration=\"3\"/>\r\n\t</disease>\r\n\t\r\n\t<disease title=\"ped\" animals=\"PIG\" value=\"0.65\" transmission=\"0.075\" immunity=\"12\" recovery=\"3\">\r\n\t\t<probability>\r\n\t\t\t<key age=\"0\" value=\"0.125\"/>\r\n\t\t\t<key age=\"6\" value=\"0.05\"/>\r\n\t\t\t<key age=\"18\" value=\"0.01\"/>\r\n\t\t\t<key age=\"24\" value=\"0.001\"/>\r\n\t\t</probability>\r\n\t\t<fatality>\r\n\t\t\t<key time=\"0\" value=\"0.85\"/>\r\n\t\t\t<key time=\"1\" value=\"0.075\"/>\r\n\t\t\t<key time=\"2\" value=\"0.00025\"/>\r\n\t\t</fatality>\r\n\t\t<output>\r\n\t\t\t<fillType type=\"liquidManure\" modifier=\"4\"/>\r\n\t\t\t<fillType type=\"manure\" modifier=\"0.25\"/>\r\n\t\t</output>\r\n\t\t<treatment cost=\"150\" duration=\"1\"/>\r\n\t</disease>\r\n\t\r\n\t<disease title=\"avianFlu\" animals=\"CHICKEN\" value=\"0.25\" transmission=\"0.2\" immunity=\"24\" recovery=\"1\">\r\n\t\t<probability>\r\n\t\t\t<key age=\"0\" value=\"0.005\"/>\r\n\t\t</probability>\r\n\t\t<fatality>\r\n\t\t\t<key time=\"0\" value=\"0.65\"/>\r\n\t\t\t<key time=\"3\" value=\"0.15\"/>\r\n\t\t</fatality>\r\n\t\t<output>\r\n\t\t\t<fillType type=\"pallets\" modifier=\"0\"/>\r\n\t\t</output>\r\n\t</disease>\r\n\t\r\n</diseases>"
  },
  {
    "path": "xml/fillTypes.xml",
    "content": "<map xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"$data/shared/xml/schema/fillTypes.xsd\">\r\n\t<fillTypes>\r\n\r\n\t\t<!-- COWS -->\r\n\t\t\r\n\t\t<fillType name=\"BULL_SWISS_BROWN\" title=\"$l10n_fillType_bull_swiss_brown\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"750.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"4000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_cow.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"BULL_HOLSTEIN\" title=\"$l10n_fillType_bull_holstein\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"750.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"4000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_cow.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"BULL_ANGUS\" title=\"$l10n_fillType_bull_angus\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"750.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"5000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_cow.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"BULL_LIMOUSIN\" title=\"$l10n_fillType_bull_limousin\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"750.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"5000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_cow.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"COW_HEREFORD\" title=\"$l10n_fillType_cow_hereford\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"600.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"5000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_cow.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"BULL_HEREFORD\" title=\"$l10n_fillType_bull_hereford\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"750.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"5000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_cow.png\"/>\r\n\t\t</fillType>\r\n\r\n\t\t<!-- WATER BUFFALOS -->\r\n\r\n\t\t<fillType name=\"BULL_WATERBUFFALO\" title=\"$l10n_fillType_bull_waterbuffalo\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"750.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"5000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_cow.png\"/>\r\n\t\t</fillType>\r\n\t\t\r\n\t\t<!-- PIGS -->\r\n\r\n\t\t<fillType name=\"BOAR_LANDRACE\" title=\"$l10n_fillType_boar_landrace\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"150.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"3000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_pig.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"BOAR_BLACK_PIED\" title=\"$l10n_fillType_boar_black_pied\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"150.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"3000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_pig.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"BOAR_BERKSHIRE\" title=\"$l10n_fillType_boar_berkshire\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"150.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"3000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_pig.png\"/>\r\n\t\t</fillType>\r\n\r\n\t\t<!-- SHEEP -->\r\n\r\n\t\t<fillType name=\"RAM_LANDRACE\" title=\"$l10n_fillType_ram_landrace\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"150.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"4000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_sheep.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"RAM_STEINSCHAF\" title=\"$l10n_fillType_ram_steinschaf\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"150.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"4000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_sheep.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"RAM_SWISS_MOUNTAIN\" title=\"$l10n_fillType_ram_swiss_mountain\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"150.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"4000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_sheep.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"RAM_BLACK_WELSH\" title=\"$l10n_fillType_ram_black_welsh\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"150.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"4000\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_sheep.png\"/>\r\n\t\t</fillType>\r\n\t\t\r\n\t\t<!-- GOATS -->\r\n\t\t\r\n\t\t<fillType name=\"RAM_GOAT\" title=\"$l10n_fillType_ram_goat\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"5.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"0\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_goat.png\"/>\r\n\t\t</fillType>\r\n\t\t\r\n\t\t<!-- HORSES -->\r\n\r\n\t\t<fillType name=\"STALLION_GRAY\" title=\"$l10n_fillType_stallion_gray\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"600.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"0\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_horse.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"STALLION_PINTO\" title=\"$l10n_fillType_stallion_pinto\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"600.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"0\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_horse.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"STALLION_PALOMINO\" title=\"$l10n_fillType_stallion_palomino\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"600.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"0\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_horse.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"STALLION_CHESTNUT\" title=\"$l10n_fillType_stallion_chestnut\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"600.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"0\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_horse.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"STALLION_BAY\" title=\"$l10n_fillType_stallion_bay\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"600.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"0\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_horse.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"STALLION_BLACK\" title=\"$l10n_fillType_stallion_black\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"600.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"0\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_horse.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"STALLION_SEAL_BROWN\" title=\"$l10n_fillType_stallion_seal_brown\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"600.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"0\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_horse.png\"/>\r\n\t\t</fillType>\r\n\t\t<fillType name=\"STALLION_DUN\" title=\"$l10n_fillType_stallion_dun\" showOnPriceTable=\"false\">\r\n\t\t\t<physics massPerLiter=\"600.0\" maxPhysicalSurfaceAngle=\"0\"/>\r\n\t\t\t<economy pricePerLiter=\"0\"/>\r\n\t\t\t<image hud=\"$dataS/menu/hud/fillTypes/hud_fill_horse.png\"/>\r\n\t\t</fillType>\r\n\t\t\r\n\t</fillTypes>\r\n\t<fillTypeCategories>\r\n\t\t<fillTypeCategory name=\"ANIMAL\">COW_ANGUS COW_HOLSTEIN COW_LIMOUSIN COW_SWISS_BROWN BULL_SWISS_BROWN BULL_ANGUS BULL_HOLSTEIN BULL_LIMOUSIN COW_WATERBUFFALO BULL_WATERBUFFALO SHEEP_LANDRACE SHEEP_STEINSCHAF SHEEP_SWISS_MOUNTAIN SHEEP_BLACK_WELSH RAM_LANDRACE RAM_STEINSCHAF RAM_SWISS_MOUNTAIN RAM_BLACK_WELSH PIG_LANDRACE PIG_BERKSHIRE PIG_BLACK_PIED BOAR_LANDRACE BOAR_BERKSHIRE BOAR_BLACK_PIED CHICKEN CHICKEN_ROOSTER GOAT RAM_GOAT HORSE_GRAY HORSE_PINTO HORSE_PALOMINO HORSE_CHESTNUT HORSE_BAY HORSE_BLACK HORSE_SEAL_BROWN HORSE_DUN STALLION_GRAY STALLION_PINTO STALLION_PALOMINO STALLION_CHESTNUT STALLION_BAY STALLION_BLACK STALLION_SEAL_BROWN STALLION_DUN</fillTypeCategory>\r\n\t</fillTypeCategories>\r\n</map>"
  },
  {
    "path": "xml/handTools.xml",
    "content": "<handTools>\r\n\t<types>\r\n\t\t<type name=\"aiStraw\" parent=\"base\" xmlFile=\"objects/straw/straw.xml\">\r\n\t\t    <specialization name=\"aiStraw\"/>\r\n\t\t</type>\r\n\t</types>\r\n\t<specializations>\r\n\t\t<specialization name=\"aiStraw\" className=\"HandToolAIStraw\" filename=\"src/handTools/specializations/HandToolAIStraw.lua\"/>\r\n\t</specializations>\r\n</handTools>"
  }
]