horoscopen.

Plaats	Ja	Naam of omschrijving van de geboorteplaats

Lengte	Ja	De lengte van de geboorteplaats.
					Formaat ggg.mm.ss, voer voor minuten en seconden altijd twee getallen in,
					bijvoorbeeld 12.01.09. Tussen de waarden voor graden, minuten en seconden tik je een punt.

					Selecteer de knop O voor oosterlengte. W is westerlengte.

Breedte	Ja	De breedte van de geboorteplaats.
					Formaat gg.mm.ss, voer voor minuten en seconden altijd twee getallen in,
					bijvoorbeeld 52.08.10.  Tussen de waarden voor graden, minuten en seconden tik je een punt.

					Selecteer de knop N voor noorderbreedte. Z is zuiderbreedte.

Datum	Ja	De datum, eerst het jaar, dan de maand en de dag.
					Het formaat is jjjj.mm.dd. Gebruik altijd twee posities voor de maand en de dag en kort jaartallen niet af.
					Als je 98 intikt berekent RadixPro niet de horoscoop voor 1998 maar voor 98 NC.
					Tussen de waarden voor jaar, maand en dag tik je een punt.

					Met de knoppen Greg. en Jul. kies je voor Gregoriaanse of Juliaanse kalender.
					De Gregoriaanse kalender is momenteel standaard.

Tijd	Ja	Voor de tijd moet je achtereenvolgens uren, minuten en seconden invoeren.
					Plaats tussen uren en minuten en tussen minuten en seconden een dubbele punt.
					Het formaat is hh:mm:ss, voer voor minuten en seoncden twee waarden, bijvoorbeeld 8:03:05.
					De seconden mag je weglaten, RadixPro vult dan automatisch 0 seconden in.

					De tijd moet je opgeven in 24 uurs notatie (dus geen AM of PM).

					Als er zomertijd is plaats je een vinkje bij Zomertijd

Tijdzone	Ja, of afwijkende tijdzone	Selecteer een tijdzone in de lijst.
					Je krijgt de lijst met alle tijdzones te zien door op het neerwaartse pijltje rechts van het invoerveld te klikken.
					Als de tijdzone niet voorkomt, bijvoorbeeld omdat het om plaatseljke tijd gaat, kies je voor Afwijkende tijdzone.

Afwijkende tijdzone	Ja, of tijdzone
				    Klik het controlevakje aan als je een eigen tijdzone wilt opgeven.
				    Dit kan nodig zijn als je een oude horoscoopmwilt berekenen waarvan de tijd nog als plaatselijke tijd is opgegeven.

Zone specificatie	Als afwijkende tijdzone is ingevuld
				    Geef


nsform: scale(90%);
  }
  40% {
    opacity: 1;
    transform: scale(105%);
  }
  100% {
    opacity: 1;
    transform: scale(100%);
  }
}

@keyframes hoverFadeBigIn {
  0% {
    opacity: 0;
    scale: 0.9;
  }
  40% {
    opacity: 1;
    scale: 1.05;
  }
  100% {
    opacity: 1;
    scale: 1;
  }
}
@font-face {
  font-family: 'covalent-icons';
  src:
    url('./covalent-icons.ttf?ho7355') format('truetype'),
    url('./covalent-icons.woff?ho7355') format('woff'),
    url('./covalent-icons.svg?ho7355#covalent-icons') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}

/* Support mdc icon font variable */
.covalent-icon,
.covalent-icons,
[covalent-icon],
[covalent-icons],
[iconFont='covalent-icons'] {
  --mdc-icon-font: 'covalent-icons';
}

[class^='cov-'],
[class*=' cov-'] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'covalent-icons' !important;
  speak: never;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;

  /* Enable Ligatures ================ */
  letter-spacing: 0;
  -webkit-font-feature-settings: 'liga';
  -moz-font-feature-settings: 'liga=1';
  -moz-font-feature-settings: 'liga';
  -ms-font-feature-settings: 'liga' 1;
  font-feature-settings: 'liga';
  -webkit-font-variant-ligatures: discretionary-ligatures;
  font-variant-ligatures: discretionary-ligatures;

  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.cov-ai_assistant:before {
  content: '\ea41';
}
.cov-embedding_model:before {
  content: '\ea40';
}
.cov-slack:before {
  content: '\e9e5';
  color: #59627b;
}
.cov-disconnect_outlined:before {
  content: '\e9e4';
}
.cov-product_consumption_outlined:before {
  content: '\ea3e';
}
.cov-product_consumption:before {
  content: '\ea3f';
}
.cov-advanced_sql_outlined:before {
  content: '\e9d9';
}
.cov-alias_arrow_outlined:before {
  content: '\e9da';
}
.cov-api_outlined:before {
  content: '\e9e0';
}
.cov-application_outlined:before {
  content: '\e9e1';
}
.cov-auto_refresh_off_outlined:before {
  content: '\e9f4';
}
.cov-auto_refresh_off:before {
  content: '\e9f5';
}
.cov-auto_refresh_on_outlined:before {
  content: '\e9f6';
}
.cov-auto_refresh_on:before {
  content: '\e9f7';
}
.cov-autorefresh_pause_outlined:before {
  content: '\e9f8';
}
.cov-autorefresh_pause:


// dark olive bags contain 3 faded blue bags, 4 dotted black bags.
// vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
// faded blue bags contain no other bags.
// dotted black bags contain no other bags.
// `.trim();

const rules = input.split("\n");

function getSize(bag = "shiny gold bag"): number{
  console.log(bag)
  const line = rules.find(x => x.startsWith(bag))!;
  const contains = line.split("contain ")[1];
  if(contains === "no other bags.")
    return 1;
  return 1 + contains.slice(0, -1).split(", ").map(x => +x.split(" ")[0] * getSize(x.split(" ").slice(1).join(" "))).reduce((a, b) => a + b, 0);
}

console.log(
  getSize() - 1
)

import * as React from "react";

export interface ShowEditPodProps {
  /** Enable/disable the border on the Pod. */
  border?: boolean;
  /** Controls which direction the form buttons align */
  buttonAlign?: string;
  /** Set to false to hide the cancel button */
  cancel?: boolean;
  /** Supply custom text for the cancel button */
  cancelText?: string;
  /** This component supports children. */
  children?: React.ReactNode;
  /** Classes to apply to the component. */
  className?: string;
  /** Supply custom text for the delete button */
  deleteText?: string;
  /** Define fields to be rendered in the edit state */
  editFields?: React.ReactNode;
  /** Allows developers to control the editing state manually. */
  editing?: boolean;
  /** Hide delete button in view mode. */
  hideDeleteButtonInViewMode?: boolean;
  /** Sets soft delete state. */
  softDelete?: boolean;
  /** A callback triggered when the form is cancelled */
  onCancel?: (ev: React.MouseEvent<HTMLElement>) => void;
  /** A callback triggered when the delete action is clicked. */
  onDelete?: (
    ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>
  ) => void;
  /** A callback triggered when the undo action is clicked. */
  onUndo?: (
    ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>
  ) => void;
  /** Callback when edit button is clicked. */
  onEdit?: (
    ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>
  ) => void;
  // Props passed to Form
  /** A callback triggered after clicking the save button */
  onSave?: (ev: React.FormEvent<HTMLFormElement>) => void;
  /** Define a custom transition between show and edit states */
  transitionName?: string;
  /** Pod theme variant. */
  variant?: string;
  /** Supply custom text for the save button */
  saveText?: string;
  /** Can inform if the form is in a saving state (disables the save button) */
  saving?: boolean;
  /** Title to be displayed */
  title?: React.ReactNode;
}

declare function ShowEditPod(props: ShowEditPodProps): JSX.Element;

export default ShowEditPod;
export class DateEx extends Date {

    public toMySQLDate = (): string => {
        return `${this.getFullYear()}-${(""+(this.getMonth() + 1)).padStart(2, '0')}-${(""+this.getDate()).padStart(2, '0')} ${(""+this.getHours()).padStart(2, '0')}:${(""+this.getMinutes()).padStart(2, '0')}:${(""+this.getSeconds()).padStart(2, '0')}`;
    }

    public isBefore = (target: DateEx) => {
        if (typeof target === 'string') { target = new DateEx(target); }
        return this.getTime() < target.getTime();
    }

    public isAfter = (target: DateEx) => {
        if (typeof target === 'string') { target = new DateEx(target); }
        return this.getTime() > target.getTime();
    }

    public clone = () => {
        return new DateEx(


갈퀴 Elite GreenOrange",
  [21674] = "아웃랜드 바위갈퀴 Elite GreenGreen",
  [21675] = "아웃랜드 바위갈퀴 Elite BrownYellow",
  [21676] = "아웃랜드 바위갈퀴 Elite BrownWhite",
  [21677] = "아웃랜드 바위갈퀴 Elite BrownRed",
  [21678] = "아웃랜드 바위갈퀴 Elite BlueWhite",
  [21679] = "아웃랜드 바위갈퀴 Elite BlueGreen",
  [21680] = "아웃랜드 바위갈퀴 Elite BlueBrown",
  [21681] = "아웃랜드 바위갈퀴 Elite BlueBlue",
  [21682] = "인간 성직자",
  [21683] = "인간 창조술사",
  [21684] = "국왕 레인",
  [21685] = "비통의 오로노크",
  [21686] = "오로노크의 아들 보라크",
  [21687] = "오로노크의 아들 그롬토르",
  [21688] = "오로노크의 탈것",
  [21689] = "갈퀴송곳니 광포어 시체",
  [21690] = "R-3D0",
  [21691] = "토쉴리",
  [21692] = "캔지스",
  [21694] = "수렁대군주",
  [21695] = "굽이치는 파도 정령",
  [21696] = "쇄도하는 증기 정령",
  [21697] = "무한한 시간의 군주",
  [21698] = "무한의 시간파괴자",
  [21699] = "마이에브 섀도송",
  [21700] = "아카마",
  [21701] = "잿빛혓바닥 결사단원",
  [21702] = "에테리움 생명술사",
  [21703] = "타락한 불의 토템",
  [21704] = "타락한 대지의 토템",
  [21705] = "타락한 바람의 토템",
  [21706] = "타락한 불의 정령",
  [21707] = "타락한 바람의 정령",
  [21708] = "타락한 대지의 정령",
  [21709] = "에이케넨",
  [21710] = "우일라루",
  [21711] = "할룸",
  [21712] = "Infinite Chrono-Lord (1)",
  [21713] =


leKey: 'Unidentified'\n};\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar translateToKey = {\n  '8': 'Backspace',\n  '9': 'Tab',\n  '12': 'Clear',\n  '13': 'Enter',\n  '16': 'Shift',\n  '17': 'Control',\n  '18': 'Alt',\n  '19': 'Pause',\n  '20': 'CapsLock',\n  '27': 'Escape',\n  '32': ' ',\n  '33': 'PageUp',\n  '34': 'PageDown',\n  '35': 'End',\n  '36': 'Home',\n  '37': 'ArrowLeft',\n  '38': 'ArrowUp',\n  '39': 'ArrowRight',\n  '40': 'ArrowDown',\n  '45': 'Insert',\n  '46': 'Delete',\n  '112': 'F1',\n  '113': 'F2',\n  '114': 'F3',\n  '115': 'F4',\n  '116': 'F5',\n  '117': 'F6',\n  '118': 'F7',\n  '119': 'F8',\n  '120': 'F9',\n  '121': 'F10',\n  '122': 'F11',\n  '123': 'F12',\n  '144': 'NumLock',\n  '145': 'ScrollLock',\n  '224': 'Meta'\n};\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\n\nfunction getEventKey(nativeEvent) {\n  if (nativeEvent.key) {\n    // Normalize inconsistent values reported by browsers due to\n    // implementations of a working draft specification.\n    // FireFox implements `key` but returns `MozPrintableKey` for all\n    // printable characters (normalized to `Unidentified`), ignore it.\n    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n\n    if (key !== 'Unidentified') {\n      return key;\n    }\n  } // Browser does not implement `key`, polyfill as much of it as we can.\n\n\n  if (nativeEvent.type === 'keypress') {\n    var charCode = getEventCharCode(nativeEvent); // The enter-key is technically both printable and non-printable and can\n    // thus be captured by `keypress`, no other non-printable key should.\n\n    return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n  }\n\n  if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n    // While user keyboard layout determines the actual meaning of each\n    // `keyCode` value, almost all function keys have a universal value.\n    return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n  }\n\n  return '';\n}\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\n\nvar modifierKeyToProp = {\n  Alt: 'altKey',\n  Control: 'ctrlKey',\n  Meta: 'metaKey',\n  Shift: 'shiftKey'\n}; // Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support\n// getModifierState. If getModifierState is not supported, we map it to a set of\n// modifier keys exposed by the event. In this case, Lock-keys are not supported.\n\nfunction modifierStateGetter(keyArg) {\n  var syntheticEvent = this;\n  var nativeEvent = syntheticEvent.nativeEvent;\n\n  if (nativeEvent.getModifierState) {\n    return nativeEvent.getModifierState(keyArg);\n  }\n\n  var keyProp = modifierKeyToProp[keyArg];\n  return keyProp ? !!native


%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td


1.9 2.93-10.46 3.3-14 3.3a42.43 42.43 0 01-10-1.06v-1.68A40.59 40.59 0 0018 19c4.85 0 12.8-.79 13.91-3.62h-9.68a3.68 3.68 0 01-2.73-1.23H18a42.12 42.12 0 01-10-1.04V11a40.59 40.59 0 0010 1.14h.59a3.61 3.61 0 01.46-2.29l3.46-6c-1.6-.15-3.17-.21-4.51-.21-5.14 0-13.79.88-14 4.15v19.7c0 2.16 3.64 3.3 7.63 3.84l2.84 3 .59.62h17a3 3 0 003-3v-8.02A3 3 0 0032.09 21ZM8 26.08V24.4a25.79 25.79 0 003.46.7l-1.24 1.44c-.76-.12-1.51-.27-2.22-.46ZM33.09 32a1 1 0 01-1 1H15.92l-4.52-4.77L15.92 23h16.17a1 1 0 011 1Z"/><path fill="currentColor" d="m26.85 1.14-5.72 9.91a1.27 1.27 0 001.1 1.95h11.45a1.27 1.27 0 001.1-1.91l-5.72-9.95a1.28 1.28 0 00-2.21 0Z"/></svg>';
  static const String control_lun_solid_badged =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="36" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 36 36"><path fill="currentColor" d="M16.11 27a1 1 0 101 1 1 1 0 00-1-1Z"/><path fill="currentColor" d="M32.09 21H32v-3.68c-1.9 2.93-10.46 3.3-14 3.3a42.43 42.43 0 01-10-1.06v-1.68A40.59 40.59 0 0018 19c5 0 13.2-.82 14-3.82v-2a7.34 7.34 0 01-4.12 0 39.47 39.47 0 01-9.88 1 42.12 42.12 0 01-10-1.07V11a40.59 40.59 0 0010 1.14 47.76 47.76 0 007.09-.52 7.45 7.45 0 01-2.29-7.7c-1.7-.17-3.38-.24-4.8-.24-5.14 0-13.79.88-14 4.15v19.7c0 2.16 3.64 3.3 7.63 3.84l2.84 3 .59.62h17a3 3 0 003-3v-8.06A3 3 0 0032.09 21ZM8 26.08V24.4a25.79 25.79 0 003.46.7l-1.24 1.44c-.76-.12-1.51-.27-2.22-.46ZM33.09 32a1 1 0 01-1 1H15.92l-4.52-4.77L15.92 23h16.17a1 1 0 011 1Z"/><circle cx="30" cy="6" r="5" fill="currentColor"/></svg>';
  static const String copy_line =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="36" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 36 36"><path fill="currentColor" d="M29.5 7h-19A1.5 1.5 0 009 8.5v24a1.5 1.5 0


/*
 * arch/arm/mach-kirkwood/openrd_client-setup.c
 *
 * Marvell OpenRD Base Client Setup
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
 */

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/mtd/partitions.h>
#include <linux/ata_platform.h>
#include <linux/mv643xx_eth.h>
#include <linux/gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <mach/kirkwood.h>
#include <plat/mvsdio.h>
#include "common.h"
#include "mpp.h"

static struct mtd_partition openrd_client_nand_parts[] = {
	{
		.name = "u-boot",
		.offset = 0,
		.size = SZ_1M
	}, {
		.name = "uImage",
		.offset = MTDPART_OFS_NXTBLK,
		.size = SZ_4M
	}, {
		.name = "root",
		.offset = MTDPART_OFS_NXTBLK,
		.size = MTDPART_SIZ_FULL
	},
};

static struct mv643xx_eth_platform_data openrd_client_ge00_data = {
	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
};

static struct mv643xx_eth_platform_data openrd_client_ge01_data = {
	.phy_addr	= MV643XX_ETH_PHY_ADDR(24),
};

static struct mv_sata_platform_data openrd_client_sata_data = {
	.n_ports	= 2,
};

static struct mvsdio_platform_data openrd_client_mvsdio_data = {
	.gpio_card_detect = 29,	/* MPP29 used as SD card detect */
};

static unsigned int openrd_client_mpp_config[] __initdata = {
	MPP29_GPIO,
	0
};

static void __init openrd_client_init(void)
{
	/*
	 * Basic setup. Needs to be called early.
	 */
	kirkwood_init();
	kirkwood_mpp_conf(openrd_client_mpp_config);

	kirkwood_uart0_init();
	kirkwood_uart1_init();
	kirkwood_nand_init(ARRAY_AND_SIZE(openrd_client_nand_parts), 25);

	kirkwood_ehci_init();

	/* initialize gbe0 and gbe1 */
	kirkwood_ge00_init(&openrd_client_ge00_data);
	kirkwood_ge01_init(&openrd_client_ge01_data);

	kirkwood_sata_init(&openrd_client_sata_data);
	kirkwood_sdio_init(&openrd_client_mvsdio_data);

	kirkwood_i2c_init();
}

static int __init openrd_client_pci_init(void)
{
if (machine_is_openrd_client())
		kirkwood_pcie_init();

	return 0;
}
subsys_initcall(openrd_client_pci_init);

MACHINE_START(OPENRD_CLIENT, "Marvell OpenRD Client Board")
	/* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */
	.phys_io	= KIRKWOOD_REGS_PHYS_BASE,
	.io_pg_offst	= ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
	.boot_params	= 0x00000100,
	.init_machine	= openrd_client_init,
	.map_io		= kirkwood_map_io,
	.init_irq	= kirkwood_init_irq,
	.timer		= &kirkwood_timer,
MACHINE_END


self.commander:CountMissions(mtype,true)
local limit=self:GetMissionLimit(mtype)
text=text..string.format("  - %s: %d [Running=%d/%d]\n",mtype,n,N,limit)
end
end
text=text..string.format("Strategic Zones: %d\n",Nzones)
for _,_stratzone in pairs(self.zonequeue)do
local stratzone=_stratzone
local owner=stratzone.opszone:GetOwnerName()
text=text..string.format("  - %s: %s - %s [I=%d, P=%d]\n",stratzone.opszone:GetName(),owner,stratzone.opszone:GetState(),stratzone.importance or 0,stratzone.prio or 0)
end
local Ntransports=#self.commander.transportqueue
if Ntransports>0 then
text=text..string.format("Transports: %d\n",Ntransports)
for _,_transport in pairs(self.commander.transportqueue)do
local transport=_transport
text=text..string.format(" - %s",transport:GetState())
end
end
MESSAGE:New(text,60,nil,true):ToCoalition(self.coalition)
if self.verbose>=4 then
self:I(self.lid..text)
end
end
end
function CHIEF:CheckTargetQueue()
local Ntargets=#self.targetqueue
if Ntargets==0 then
return nil
end
local NoLimit=self:_CheckMissionLimit("Total")
if NoLimit==false then
return nil
end
local function _sort(a,b)
local taskA=a
local taskB=b
return(taskA.prio<taskB.prio)or(taskA.prio==taskB.prio and taskA.threatlevel0>taskB.threatlevel0)
end
table.sort(self.targetqueue,_sort)
local vip=math.huge
for _,_target in pairs(self.targetqueue)do
local target=_target
if target:IsAlive()and target.importance and target.importance<vip then
vip=target.importance
end
end
for _,_target in pairs(self.targetqueue)do
local target=_target
local isAlive=target:IsAlive()
local isImportant=(target.importance==nil or target.importance<=vip)
local threatlevel=target:GetThreatLevelMax()
local isThreat=threatlevel>=self.threatLevelMin and threatlevel<=self.threatLevelMax
if target.category==TARGET.Category.AIRBASE or target.category==TARGET.Category.ZONE or target.Category==TARGET.Category.COORDINATE then
isThreat=true
end
local text=string.format("Target %s: Alive=%s, Threat=%s, Important=%s",target:GetName(),tostring(isAlive),tostring(isThreat),tostring(isImportant))
if target.mission then
text=text..string.format(", Mission \"%s\" (%s) [%s]",target.mission:GetName(),target.mission:GetState(),target.mission:GetType())
if target.mission:IsOver()then
text=text..string.format(" - DONE ==> removing mission")
target.mission=nil
end
else
text=text..string.format(", NO mission yet")
end
self:T2(self.lid..text)
if isAlive and isThreat and isImportant and not target.mission then
local valid=false
if self.strategy==CHIEF.Strategy.PASSIVE then
valid=false
elseif self.strategy==CHIEF.Strategy.DEFENSIVE then
if self:CheckTargetInZones(target,self.borderzoneset)then
valid=true
end
elseif self.strategy==CHIEF.Strategy.OFFENSIVE then
if self:CheckTargetInZones(target,self.borderzoneset)or self:CheckTargetInZones(target,self.yellowzoneset)then
valid=true
end
elseif


_name": "Carmine",
    "last_name": "Pedlow",
    "email": "cpedlowl@icio.us",
    "gender": "Male",
    "fav_color": "Yellow"
  },
  {
    "id": "da5930d4-a45f-4b50-b22d-8c3ebb30456c",
    "first_name": "Yasmin",
    "last_name": "Selliman",
    "email": "ysellimanm@bigcartel.com",
    "gender": "Female",
    "fav_color": "Maroon"
  },
  {
    "id": "3ab9ba43-6c2e-456a-bdd7-01ceb86fcb98",
    "first_name": "Garret",
    "last_name": "Mulholland",
    "email": "gmulhollandn@fema.gov",
    "gender": "Male",
    "fav_color": "Khaki"
  },
  {
    "id": "b54ea67e-8aec-42b9-be87-3046944ee852",
    "first_name": "Pasquale",
    "last_name": "Mears",
    "email": "pmearso@whitehouse.gov",
    "gender": "Male",
    "fav_color": "Blue"
  },
  {
    "id": "81d74462-22b8-45e2-a4a8-9a6af8d23901",
    "first_name": "Liva",
    "last_name": "O'Carran",
    "email": "locarranp@latimes.com",
    "gender": "Female",
    "fav_color": "Blue"
  },
  {
    "id": "892a1ac1-47bd-4d6c-8713-636101417cc7",
    "first_name": "Bertha",
    "last_name": "Hanster",
    "email": "bhansterq@gmpg.org",
    "gender": "Female",
    "fav_color": "Aquamarine"
  },
  {
    "id": "3c708b09-f89e-43e0-b84d-395256ba614f",
    "first_name": "Jarrett",
    "last_name": "Doche",
    "email": "jdocher@parallels.com",
    "gender": "Male",
    "fav_color": "Red"
  },
  {
    "id": "91c479c6-7c1a-4c06-9f6f-7333c602be5a",
    "first_name": "Henryetta",
    "last_name": "Horley",
    "email": "hhorleys@moonfruit.com",
    "gender": "Female",
    "fav_color": "Goldenrod"
  },
  {
    "id": "89c60783-604a-4144-b6d2-c38f1200729e",
    "first_name": "Gerti",
    "last_name": "Limrick",
    "email": "glimrickt@yelp.com",
    "gender": "Female",
    "fav_color": "Pink"
  },
  {
    "id": "8addfade-4fec-49c7-a63a-0c8239b7251f",
    "first_name": "Jolyn",
    "last_name": "Mockford",
    "email": "jmockfordu@drupal.org",
    "gender": "Female",
    "fav_color": "Violet"
  },
  {
    "id": "a09cb2cc-6cc6-454d-ae36-98a5a85c3a98",
    "first_name": "Charlean",
    "last_name": "Stopher",
    "email": "cstopherv@slideshare.net",
    "gender": "Fe


ER be called manually. Leave routing, and calling of the canActivate, canDeactivate, etc. classes
						to the Angular 2 router.
	*/
	canDeactivate(component: CreateValueChartComponent, route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {

		let purpose: CreatePurpose = parseInt(route.params['purpose']);

		// Immediately allow navigation away from component if:
		//	(1) The CreatePurpose is not NewValueChart;
		//	(2) the destination is the ValueChartViewer;
		if ( this.destination.indexOf('ValueCharts/') !== -1 // We are going to the ValueChart Viewer
			|| purpose !== CreatePurpose.NewValueChart) {	// We were not creating a new ValueChart
			return Observable.from([true]);
		} else {
			// Otherwise, open the navigation model and ask the user for instructions.
			return component.openNavigationModal();
		}
	}

	/*
		@returns {boolean} - Whether navigation to activated route (always '/create/:purpose/:step') will be permitted or not.
		@description 	Used by the Angular router to determine whether the current user will be permitted to navigate within the creation workflow.
						This method should NEVER be called manually. Leave routing, and calling of the canActivate, canDeactivate, etc. classes
						to the Angular 2 router.
	*/
	canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Promise<boolean> {
		// Allow navigation if we are coming into the component from outside of the creation workflow.
		if (window.location.pathname.indexOf('/create/') === -1 || (this.source !== undefined && this.source.indexOf('/create/') === -1)) {
			return true;
		}
		else {
			let previousStep = this.creationStepsService.getPreviousStep(this.creationStepsService.step);
			let nextStep = this.creationStepsService.getNextStep(this.creationStepsService.step);

			// Navigating to previous step
			if (this.destination !== undefined && this.destination.indexOf(previousStep) !== -1) {
				return this.creationStepsService.previous();
			}
			// Navigating to next step
			else if (this.destination !== undefined && this.destination.indexOf(nextStep) !== -1) {
				return this.creationStepsService.next();
			}
			// Invalid route, cancel. The create workflow is not designed to allow users to skip over steps.
			// (This might happen if the user selects a link from browsing history.
			//  Return to this later - we should show page not found or something to that effect.)
			else {
				history.forward();
				return false;
			}
		}
	}
}
import path from 'path'

import {file, getFiles, BaseProperties} from './file'

export const PAGES_DIRECTORY = path.join(process.cwd(), '_content', 'pages')

export interface PageProperties extends BaseProperties {
  /** The posts slug, used for linking */
  slug: string
  slugString: string
  href: string
}

interface PageFrontmatter {
  title: string
  content: string
}

const pageProperties = (filePath: string): PageProperties => {
  const slug = path.basename(filePath).replace('.mdx', '')

  return {
    slug,
    slugString: ['page', slug].join('-'),
    href: `/${slug}`,
    bundleDirectory: `/img/pages/${slug}/`
  }
}

export const getPages = getFiles<PageFrontmatter, PageProperties>({
  directory: PAGES_DIRECTORY,
  getProperties: pageProperties,
  defaultQueryParams: {
    limit: 5,
    orderBy: 'slug',
    order: 'ASC',
    skip: 0
  },
  getFilePath: dir => path.join(PAGES_DIRECTORY, dir)
})

export const getPage = (filePath: string) => {
  return file<PageFrontmatter, PageProperties>(
    filePath,
    pageProperties(filePath)
  )
}

export const getPageBySlug = (slug: string) => {
  const filePath


import pandas as pd
import random as rd
from sklearn.metrics import confusion_matrix
import math

lut=dict()
label_attribute="PlayTennis"
labels=["No","Yes"]

df=pd.read_csv("C:\\Users\\adith\\OneDrive\\Desktop\\ML\\data\\tennis.csv")
print(df)
total=len(df)

attribute_name=df.columns.tolist()
attribute_name.remove(label_attribute)
ldf=df.pivot_table(index=[label_attribute],columns=[label_attribute],aggfunc='size')
print(ldf)
lut[label_attribute]=ldf

for attribute in attribute_name:
    lut[attribute]=df.pivot_table(index=["PlayTennis"],columns=[attribute],aggfunc='size')
    lut[attribute].fillna(0,inplace=True)

target=list()
prediction=list()

for index,row in df.iterrows():
    if rd.random()>0.5:
        result=list()
        for label in labels:
            posteriorProb=math.log(lut[label_attribute][label][label]/total)
            for attribute in attribute_name:
                value=row[attribute]
                posteriorProb=posteriorProb+math.log(lut[attribute][value][label]/lut[label_attribute][label][label]+1)

            result.append(posteriorProb)

        target.append(row[label_attribute])
        print(result)
        maxindex=result.index(max(result))
        prediction.append(labels[maxindex])

print(confusion_matrix(target,prediction))
print(target)
print(prediction)


.Op == ssa.OpMIPSMOVWreg || a.Op == ssa.OpMIPSMOVWnop {
			a = a.Args[0]
		}
		if a.Op == ssa.OpLoadReg {
			t := a.Type
			switch {
			case v.Op == ssa.OpMIPSMOVBreg && t.Size() == 1 && t.IsSigned(),
				v.Op == ssa.OpMIPSMOVBUreg && t.Size() == 1 && !t.IsSigned(),
				v.Op == ssa.OpMIPSMOVHreg && t.Size() == 2 && t.IsSigned(),
				v.Op == ssa.OpMIPSMOVHUreg && t.Size() == 2 && !t.IsSigned():
				// arg is a proper-typed load, already zero/sign-extended, don't extend again
				if v.Reg() == v.Args[0].Reg() {
					return
				}
				p := s.Prog(mips.AMOVW)
				p.From.Type = obj.TYPE_REG
				p.From.Reg = v.Args[0].Reg()
				p.To.Type = obj.TYPE_REG
				p.To.Reg = v.Reg()
				return
			default:
			}
		}
		fallthrough
	case ssa.OpMIPSMOVWF,
		ssa.OpMIPSMOVWD,
		ssa.OpMIPSTRUNCFW,
		ssa.OpMIPSTRUNCDW,
		ssa.OpMIPSMOVFD,
		ssa.OpMIPSMOVDF,
		ssa.OpMIPSNEGF,
		ssa.OpMIPSNEGD,
		ssa.OpMIPSSQRTD,
		ssa.OpMIPSCLZ:
		p := s.Prog(v.Op.Asm())
		p.From.Type = obj.TYPE_REG
		p.From.Reg = v.Args[0].Reg()
		p.To.Type = obj.TYPE_REG
		p.To.Reg = v.Reg()
	case ssa.OpMIPSNEG:
		// SUB from REGZERO
		p := s.Prog(mips.ASUBU)
		p.From.Type = obj.TYPE_REG
		p.From.Reg = v.Args[0].Reg()
		p.Reg = mips.REGZERO
		p.To.Type = obj.TYPE_REG
		p.To.Reg = v.Reg()
	case ssa.OpMIPSLoweredZero:
		// SUBU	$4, R1
		// MOVW	R0, 4(R1)
		// ADDU	$4, R1
		// BNE	Rarg1, R1, -2(PC)
		// arg1 is the address of the last element to zero
		var sz int64
		var mov obj.As
		switch {
		case v.AuxInt%4 == 0:
			sz = 4
			mov = mips.AMOVW
		case v.AuxInt%2 == 0:
			sz = 2
			mov = mips.AMOVH
		default:
			sz = 1
			mov = mips.AMOVB
		}
		p := s.Prog(mips.ASUBU)
		p.From.Type = obj.TYPE_CONST
		p.From.Offset = sz
		p.To.Type = obj.TYPE_REG
		p.To.Reg = mips.REG_R1
		p2 := s.Prog(mov)
		p2.From.Type = obj.TYPE_REG
		p2.From.Reg = mips.REGZERO
		p2.To.Type = obj.TYPE_MEM
		p2.To.Reg = mips.REG_R1
		p2.To.Offset = sz
		p3 := s.Prog(mips.AADDU)
		p3.From.Type = obj.TYPE_CONST
		p3.From.Offset = sz
		p3.To.Type = obj.TYPE_REG
		p3.To.Reg = mips.REG_


<View>(R.id.tv_progress) as TextView
        val title = view.findViewById<View>(R.id.title) as TextView
        val progressBar = view.findViewById<View>(R.id.progressbar) as ProgressBar
        progressBar.max = 100
        progressBar.progress = 0
        tv_Progress.text = "0%"
        title.text = "正在下载"
        activity?.let {
            val dialog = android.app.AlertDialog.Builder(it)
                .setView(view)
                .setNegativeButton("取消", null)
                .setPositiveButton("重试") { arg0, arg1 -> }
                .create()
            dialog.show()
            dialog.setCanceledOnTouchOutside(false)
            val params = dialog.window.attributes
            if (params != null) {
                params.width = (activity?.windowManager?.defaultDisplay?.width ?:  params.width * 6/5 ) * 5 / 6
            }
            //	params.height = 200 ;
            dialog.window.attributes = params
            val negativeButton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE)
            val positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE)
            negativeButton.visibility = View.GONE
            positiveButton.visibility = View.GONE
            LogUtil.e("zh", "getApk , ")
            //		String url = "https://raw.githubusercontent.com/JustRight815/XPlan/master/apk/app-debug.apk";
            //		String url = "http://cn.bing.com/az/hprichbg/rb/TartumaaEstonia_ZH-CN13968964399_720x1280.jpg";
            val url = "http://app.2345.cn/appsoft/80202.apk"
            val callback = object : IDownLoadCallback() {

                override fun onStart(totalBytes: Long) {
                    super.onStart(totalBytes)
                    LogUtil.e("zh", "onStart , $totalBytes")
                }

                override fun onCancel() {
                    super.onCancel()
                    LogUtil.e("zh", "onCancel , ")
                    title.text = "已取消下载"
                }

                override fun onFinish(downloadFile: File) {
                    LogUtil.e("zh", "onFinish , " + downloadFile.path)
                    title.text = "下载成功"
                    progressBar.progress = 100
                    tv_Progress.text = 100.toString() + "%"
                    autoInstallApk(downloadFile)
                    dialog.dismiss()
                }

                override fun onProgress(currentBytes: Long, totalBytes: Long) {
                    LogUtil.e("zh", "doDownload onProgress:$currentBytes/$totalBytes")
                    var currentProgress = (currentBytes.toFloat() / totalBytes * 100).toInt()
                    LogUtil.e("zh", "doDownload currentProgress:$currentProgress")
                    if (currentProgress > 100) {
                        currentProgress = 100
                    }
                    title.text = "正在下载"
                    progressBar.progress = currentProgress
                    tv_Progress.text = currentProgress.toString() + "%"
                }

                override fun onFailure(error_msg: String) {
                    LogUtil.e("zh", "onFailure , $error_msg")
                    title.text = "下载失败！"
                    negativeButton?.visibility = View.VISIBLE
                    //						positiveButton.setVisi


(tableName, rowKey, mutations);
 * }
 * }

 */
@Generated("by gapic-generator-java")
package com.google.cloud.bigtable.data.v2;

import javax.annotation.Generated;
/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.doubleclicksearch.model;

/**
 * A conversion containing data relevant to DoubleClick Search.
 *
 *
 This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Search Ads 360 API. For a detailed explanation see:
 * https://developers.google.com/api-client-library/java/google-http-java-client/json
 *

 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class Conversion extends com.google.api.client.json.GenericJson {

  /**
   * DS ad group ID.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long adGroupId;

  /**
   * DS ad ID.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long adId;

  /**
   * DS advertiser ID.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long advertiserId;

  /**
   * DS agency ID.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long agencyId;

  /**
   * Available to advertisers only after contacting DoubleClick Search customer support.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String attributionModel;

  /**
   * DS campaign ID.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long campaignId;

  /**
   * Sales channel for the product. Acceptable values are: - "local": a physical store  - "online":
   * an online store
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String channel;

  /**
   * DS click ID for the conversion.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String clickId;

  /**
   * For offline conversions, advertisers provide this ID. Advertisers can specify any ID that is
   * meaningful to them. Each conversion in a request must specify a unique ID, and the combination
   * of ID and timestamp must be unique amongst all conversions within the advertiser. For online
   * conversions, DS copies the dsConve


args.err, test.args.targets...)
// 			if err := checkFunc(test.want, gotSame); err != nil {
// 				tt.Errorf("error = %v", err)
// 			}
// 		})
// 	}
// }
//
// func Test_is(t *testing.T) {
// 	type args struct {
// 		err              error
// 		target           error
// 		targetComparable bool
// 	}
// 	type want struct {
// 		wantSame bool
// 	}
// 	type test struct {
// 		name       string
// 		args       args
// 		want       want
// 		checkFunc  func(want, bool) error
// 		beforeFunc func(*testing.T, args)
// 		afterFunc  func(*testing.T, args)
// 	}
// 	defaultCheckFunc := func(w want, gotSame bool) error {
// 		if !reflect.DeepEqual(gotSame, w.wantSame) {
// 			return Errorf("got: \"%#v\",\n\t\t\t\twant: \"%#v\"", gotSame, w.wantSame)
// 		}
// 		return nil
// 	}
// 	tests := []test{
// 		// TODO test cases
// 		/*
// 		   {
// 		       name: "test_case_1",
// 		       args: args {
// 		           err:nil,
// 		           target:nil,
// 		           targetComparable:false,
// 		       },
// 		       want: want{},
// 		       checkFunc: defaultCheckFunc,
// 		       beforeFunc: func(t *testing.T, args args) {
// 		           t.Helper()
// 		       },
// 		       afterFunc: func(t *testing.T, args args) {
// 		           t.Helper()
// 		       },
// 		   },
// 		*/
//
// 		// TODO test cases
// 		/*
// 		   func() test {
// 		       return test {
// 		           name: "test_case_2",
// 		           args: args {
// 		           err:nil,
// 		           target:nil,
// 		           targetComparable:false,
// 		           },
// 		           want: want{},
// 		           checkFunc: defaultCheckFunc,
// 		           beforeFunc: func(t *testing.T, args args) {
// 		               t.Helper()
// 		           },
// 		           afterFunc: func(t *testing.T, args args) {
// 		               t.Helper()
// 		           },
// 		       }
// 		   }(),
// 		*/
// 	}
//
// 	for _, tc := range tests {
// 		test := tc
// 		t.Run(test.name, func(tt *testing.T) {
// 			tt.Parallel()
// 			defer goleak.VerifyNone(tt, goleak.IgnoreCurrent())
// 			if test.beforeFunc != nil {
// 				test.beforeFunc(tt, test.args)
// 			}
// 			if test.afterFunc != nil {
// 				defer test.afterFunc(tt, test.args)
// 			}
// 			checkFunc := test.checkFunc
// 			if test.checkFunc == nil {
// 				checkFunc = defaultCheckFunc
// 			}
//
// 			gotSame := is(test.args.err, test.args.target, test.args.targetComparable)
// 			if err := checkFunc(test.want, gotSame); err != nil {
// 				tt.Errorf("error = %v", err)
// 			}
// 		})
// 	}
// }
//
// func TestUnwr


_Tau = 0.0017,
		work_time = 999999
	},
	mass = 2050,
	model = "agm-86",
	name = "AGM_86C",
	play_booster_animation = {
		val = 0
	},
	scheme = "sat_cruise_missile",
	seeker = {
		can_update_target_pos = 1,
		coalition = 2,
		coalition_rnd_coeff = 5
	},
	shape_table_data = { {
			file = "agm-86",
			fire = { 0, 1 },
			index = "Redac


5, -11.049421000, 2, 5,
"SLE 31.XXXX", 6.9282845, -11.730305500, 2, 3,
"SLE 78YY.8MZ", 8.456749, -11.988760000, 2, 4,
"PAN 00.XX", 9.015792, -79.557717500, 4, 5,
"PAN J0.XX", 8.989629, -79.510580500, 4, 5,
"PAN 12.XXX", 8.991305, -79.829269500, 3, 4,
"PAN 000.XX", 8.400214, -82.489818625, 3, 4,
"PAN 200.XX", 9.390524, -79.914231500, 3, 4,
"PAN 300.XX", 9.390524, -79.826781500, 3, 4,
"PAN 400.XX", 8.147424, -81.026718625, 3, 4,
"PAN 500.XX", 9.479524, -82.554831500, 3, 6,
"PAN 600.XX", 8.050724, -81.361018625, 3, 4,
"PAN 700.XX", 8.321424, -82.892918625, 3, 6,
"PAN 800.XX", 8.547024, -82.644131500, 3, 4,
"PAN 900.XX", 8.860524, -82.912331500, 3, 6,
"PAN B00.XX", 8.550724, -80.401131500, 3, 4,
"PAN C00.XX", 9.210724, -79.141131500, 3, 4,
"PAN D00.XX", 9.441224, -78.605031500, 3, 6,
"PAN F00.XX", 8.453224, -80.316018625, 3, 4,
"PAN G00.XX", 7.980724, -80.821018625, 3, 4,
"PAN H00.XX", 7.796024, -80.307618625, 4, 5,
"PAN J00.XX", 9.591924, -79.685844375, 3, 4,
"PAN K00.XX", 8.286124, -80.579918625, 3, 4,
"PAN L00.XX", 7.999324, -80.478518625, 3, 4,
"PAN M00.XX", 8.600724, -82.461131500, 3, 4,
"PAN N00.XX", 8.370624, -80.585818625, 3, 4,
"PAN P00.XX", 8.349524, -81.238718625, 3, 4,
"PAN Q00.XX", 8.788024, -79.919831500, 3, 4,
"PAN R00.XX", 8.030724, -81.081018625, 3, 4,
"PAN S00.XX", 8.091024, -80.945618625, 4, 5,
"PAN T00.XX", 7.878324, -80.320418625, 3, 4,
"PAN V00.XX", 8.276424, -81.886818625, 3, 4,
"PAN W00.XX", 8.816024, -82.470231500, 3, 4,
"PAN X00.XX", 8.541824, -79.956331500, 3, 4,
"PAN Y00.XX", 8.620724, -79.911131500, 3, 4,
"PAN Z00.XX", 8.835824, -79.578031500, 4, 5,
"PAN 012.XXX", 9.575491, -83.025324500, 2, 5,
"PAN 112.XXX", 9.084451, -83.025324500, 2, 5,
"PAN 212.XXX", 8.593411, -83.0256


	if (partialTopIndex <= lineStart && lineStart <= partialBottomIndex) {
				top = Math.max(0, getLinePixel(lineStart));
			}
			if (partialTopIndex <= lineEnd && lineEnd <= partialBottomIndex) {
				bottom = getLinePixel(lineEnd + 1);
			}
			if (!(wasFixedLineHeight && isFixedLineHeight()) && bottom != expectedBottom) {
				bottom = clientAreaHeight;
			}
			super.redraw(0, top, clientAreaWidth, bottom - top, false);
		}
	}
	int oldColumnX = columnX;
	setCaretLocations();
	columnX = oldColumnX;
	doMouseLinkCursor();
}

/**
 *
 * @param referenceRanges former ranges, sorted by order and without overlapping, typically returned {@link #getRanges(int, int)}
 * @param newRanges former ranges, sorted by order and without overlapping
 */
private SortedSet<Integer> computeModifiedLines(int[] referenceRanges, StyleRange[] referenceStyles, int[] newRanges, StyleRange[] newStyles) {
	if (referenceStyles == null) {
		referenceStyles = new StyleRange[0];
	}
	if (referenceRanges == null) {
		referenceRanges = createRanges(referenceStyles);
	}
	if (newStyles == null) {
		newStyles = new StyleRange[0];
	}
	if (newRanges == null) {
		newRanges = createRanges(newStyles);
	}
	if (referenceRanges.length != 2 * referenceStyles.length) {
		throw new IllegalArgumentException();
	}
	if (newRanges.length != 2 * newStyles.length) {
		throw new IllegalArgumentException();
	}
	SortedSet<Integer> res = new TreeSet<>();
	int referenceRangeIndex = 0;
	int newRangeIndex = 0;
	StyleRange defaultStyle = new StyleRange();
	defaultStyle.foreground = this.foreground;
	defaultStyle.background = this.background;
	defaultStyle.font = getFont();
	int currentOffset = referenceRanges.length > 0 ? referenceRanges[0] : Integer.MAX_VALUE;
	if (newRanges.length > 0) {
		currentOffset = Math.min(currentOffset, newRanges[0]);
	}
	while (currentOffset < content.getCharCount() && (referenceRangeIndex < referenceStyles.length || newRangeIndex < newRanges.length)) {
		int nextMilestoneOffset = Integer.MAX_VALUE; // next new range start/end after current offset

		while (referenceRangeIndex < referenceStyles.length && endRangeOffset(referenceRanges, referenceRangeIndex) <= currentOffset) {
			referenceRangeIndex++;
		}
		StyleRange referenceStyleAtCurrentOffset = defaultStyle;
		if (isInRange(referenceRanges, referenceRangeIndex, currentOffset)) { // has styling
			referenceStyleAtCurrentOffset = referenceStyles[referenceRangeIndex];
			nextMilestoneOffset =  endRangeOffset(referenceRanges, referenceRangeIndex);
		} else if (referenceRangeIndex < referenceStyles.length) { // no range, default styling
			nextMilestoneOffset = referenceRanges[2 * referenceRangeIndex]; // beginning of next range
		}

		while (newRangeIndex < newStyles.length && endRangeOffset(newRanges, newRangeIndex) <= currentOffset) {
			newRangeIndex++;
		}
		StyleRange newStyleAtCurrentOffset = defaultStyle;
		if (isInRange(newRanges, newRangeIndex, currentOffset)) {
			newStyleAtCurrentOffset = newStyles[newRangeIndex];
			nextMilestoneOffset = Math.min(nextMilestoneOffset, endRangeOffset(newRanges, newRangeIndex));
		} else if (newRangeIndex < newStyles.length) {
			nextMilestoneOffset = Math.min(nextMilestoneOffset, newRanges[2 * newRangeIndex]);
		}

		if (!referenceStyleAtCurrentOffset.similarTo(newStyleAtCurrentOffset)) {
			int fromLine = getLineAtOf


font-family: Georgia,serif;
}

.post .caption,
.post small {
  font-style: italic;
  color: #969696;
}

.post-body p {
  font-size: 1.05em;
  margin: 1.1em 0;
  line-height: 1.5;
  width: 100%;
}

.post-body ul {
  list-style: none;
  padding: .4em 2.4em;
}

.post-body li {
  padding: 0 0 0.8em;
  line-height: 1.4em;
  position: relative;
}

.post-body li:before {
  color: #ea4142;
  font-size: 1em;
  font-style: normal;
  display: inline-block;
  margin-right: .5em;
  position: absolute;
  left: -1.25em;
  width: .75em;
}

.post-body ul, .post-body ol {
  padding: 0 0 0 2.4em;
  margin: 0.8em 0 0 0;
}

.post-body li li:last-child {
  padding-bottom: 0;
}

.post-body li p:first-of-type {
  margin-top: 0;
}

.post-body ul li:before,
.post-body ol ul li:before {
  content: "•";
  display: inline-block;
  font-size: 1.2em;
}

.post-body ol {
  counter-reset: ol;
  list-style: none;
}

.post-body ol li:before,
.post-body ul ol li:before {
  counter-increment: ol;
  content: counter(ol) ". ";
  font-style: italic;
  font-size: 14px;
}

.post-body ul.checklist li:before,
.post-body ol.checklist li:before {
  content: "\2713";
}

.post-body pre {
  background: #f1f1f1;
  line-height: 1.6;
  position: relative;
  overflow: auto;
  padding: 1em 4.1em 1em 1.5em;
}

.post-body pre code {
  padding: 0;
}

code {
  background: #f1f1f1;
  font-size: 1.1em;
  border-radius: 3px;
  padding: 0 .35em;
}

@media( min-width: 50em ) {
  .nav {
    float: left;
    width: 25%;
  }
  .nav + .post-body {
    float: right;
    width: 70%;
  }
  .nav ul ul {
    display: block;
    background: #F7F7F7;
    padding: .3em 0;
  }

  .nav ul ul a {
    text-decoration: none;
    display: block;
    padding: .5em;
    color: #3b3b3b;
    font-size: 1em;
    padding-left: .9em;
  }
}

/* Column Styles */

.col-condensed {
  clear: both;
  padding: 7.4074074%;
}

.col-condensed:after {
  content: "";


           []string{"", ""},
		erasWide:               []string{"Ariŋuu Yeesu", "Atooŋe Yeesu"},
		timezones:              map[string]string{"ACDT": "ACDT", "ACST": "ACST", "ACWDT": "ACWDT", "ACWST": "ACWST", "ADT": "ADT", "AEDT": "AEDT", "AEST": "AEST", "AKDT": "AKDT", "AKST": "AKST", "ARST": "ARST", "ART": "ART", "AST": "AST", "AWDT": "AWDT", "AWST": "AWST", "BOT": "BOT", "BT": "BT", "CAT": "CAT", "CDT": "CDT", "CHADT": "CHADT", "CHAST": "CHAST", "CLST": "CLST", "CLT": "CLT", "COST": "COST", "COT": "COT", "CST": "CST", "ChST": "ChST", "EAT": "EAT", "ECT": "ECT", "EDT": "EDT", "EST": "EST", "GFT": "GFT", "GMT": "GMT", "GST": "GST", "GYT": "GYT", "HADT": "HADT", "HAST": "HAST", "HAT": "HAT", "HECU": "HECU", "HEEG": "HEEG", "HENOMX": "HENOMX", "HEOG": "HEOG", "HEPM": "HEPM", "HEPMX": "HEPMX", "HKST": "HKST", "HKT": "HKT", "HNCU": "HNCU", "HNEG": "HNEG", "HNNOMX": "HNNOMX", "HNOG": "HNOG", "HNPM": "HNPM", "HNPMX": "HNPMX", "HNT": "HNT", "IST": "IST", "JDT": "JDT", "JST": "JST", "LHDT": "LHDT", "LHST": "LHST", "MDT": "MDT", "MESZ": "MESZ", "MEZ": "MEZ", "MST": "MST", "MYT": "MYT", "NZDT": "NZDT", "NZST": "NZST", "OESZ": "OESZ", "OEZ": "OEZ", "PDT": "PDT", "PST": "PST", "SAST": "SAST", "SGT": "SGT", "SRT": "SRT", "TMST": "TMST", "TMT": "TMT", "UYST": "UYST", "UYT": "UYT", "VET": "VET", "WARST": "WARST", "WART": "WART", "WAST": "WAST", "WAT": "WAT", "WESZ": "WESZ", "WEZ": "WEZ", "WIB": "WIB", "WIT": "WIT", "WITA": "WITA", "∅∅∅": "∅∅∅"},
	}
}

// Locale returns the current translators string locale
func (dyo *dyo) Locale() string {
	return dyo.locale
}

// PluralsCardinal returns the list of cardinal plural rules associated with 'dyo'
func (dyo *dyo) PluralsCardinal() []locales.PluralRule {
	return dyo.pluralsCardinal
}

// PluralsOrdinal returns the list of ordinal plural rules associated with 'dyo'
func (dyo *dyo) PluralsOrdinal() []locales.PluralRule {
	return dyo.pluralsOrdinal
}

// PluralsRange returns the list of range plural rules associated with 'dyo'
func (dyo *dyo) PluralsRange() []


return exc_energies_by_model

def parse_turbo_exstates_re(text):
    results = dict()
    exc_ens_str = "excitation_energies_"
    model_re = re.compile(exc_ens_str + r"(\w+?)_")
    blocks = text.strip().split("$")
    for block in blocks:
        if not block.startswith(exc_ens_str):
            continue
        model_line, *exc_lines = block.strip().split("\n")
        mobj = model_re.search(model_line)
        model = mobj.group(1)
        exc_lines = [line.strip().split() for line in exc_lines]
        assert all([len(line) == 2 for line in exc_lines])
        exc_ens = np.array([exc_en for _, exc_en in exc_lines], dtype=float)
        results[model] = exc_ens
    return results


3D%22%2327ae60%22%20d%3D%22M171.362%2098.256l12.636%2012.726-58.938%2059.479-31.319-31.589%2012.636-12.727%2018.683%2018.774%2046.302-46.663%22%2F%3E%3C%2Fsvg%3E');
  background-color: transparent;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 32px 32px;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 0;
  opacity: 0.8;
  cursor: pointer;
}

#solver-button:focus,
#solver-button:hover {
  opacity: 1;
}

#solver-button:focus {
  outline: none;
}

#solver-button:focus-visible {
  background-color: rgba(216, 216, 216, 0.8);
}

#solver-button.working {
  background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2244%22%20height%3D%2244%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20stroke%3D%22%23727272%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%20stroke-width%3D%225%22%3E%3Ccircle%20cx%3D%2222%22%20cy%3D%2222%22%20r%3D%221%22%3E%3Canimate%20attributeName%3D%22r%22%20begin%3D%220s%22%20dur%3D%221.8s%22%20values%3D%221%3B%2020%22%20calcMode%3D%22spline%22%20keyTimes%3D%220%3B%201%22%20keySplines%3D%220.165%2C%200.84%2C%200.44%2C%201%22%20repeatCount%3D%22indefinite%22%2F%3E%3Canimate%20attributeName%3D%22stroke-opacity%22%20begin%3D%220s%22%20dur%3D%221.8s%22%20values%3D%221%3B%200%22%20calcMode%3D%22spline%22%20keyTimes%3D%220%3B%201%22%20keySplines%3D%220.3%2C%200.61%2C%200.355%2C%201%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fcircle%3E%3Ccircle%20cx%3D%2222%22%20cy%3D%2222%22%20r%3D%221%22%3E%3Canimate%20attributeName%3D%22r%22%20begin%3D%22-0.9s%22%20dur%3D%221.8s%22%20values%3D%221%3B%2020%22%20calcMode%3D%22spline%22%20keyTimes%3D%220%3B%201%22%20keySplines%3D%220.165%2C%200.84%2C%200.44%2C%201%22%20repeatCount%3D%22indefinite%22%2F%3E%3Canimate%20attributeName%3D%22stroke-opacity%22%20begin%3D%22-0.9s%22%20dur%3D%221.8s%22%20values%3D%221%3B%200%22%20calcMode%3D%22spline%22%20keyTimes%3D%220%3B%201%22%20keySplines%3D%220.3%2C%200.61%2C%200.355%2C%201%22%20repeatCount%3D%22indefinite%22%2F%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E') !important;
  opacity: 1;
}
/*
 * Base structure
 */

/* Move down content because we have a fixed navbar tha


ask:0x0 bank_mask:0x0

// GFX9:   v_sat_pk_u8_i16_dpp v5, v1 row_ror:15 row_mask:0x0 bank_mask:0x0 ; encoding: [0xfa,0x9e,0x0a,0x7e,0x01,0x2f,0x01,0x00]
// NOSICI: error
// NOVI:   error
v_sat_pk_u8_i16_dpp v5, v1 row_ror:15 row_mask:0x0 bank_mask:0x0

// NOSICI: error:
// NOVI: error:
// GFX9: v_screen_partition_4se_b32_dpp v5, v1 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0 bound_ctrl:0 ; encoding: [0xfa,0x6e,0x0a,0x7e,0x01,0xe4,0x08,0x00]
v_screen_partition_4se_b32_dpp v5, v1 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0 bound_ctrl:0

//===----------------------------------------------------------------------===//
// Check VOP2 opcodes
//===----------------------------------------------------------------------===//
// ToDo: VOP2bInst instructions: v_add_u32, v_sub_u32 ... (vcc and ApplyMnemonic in AsmMatcherEmitter.cpp)

// NOSICI: error:
// VI9: v_mac_f32_dpp v0, v0, v0  row_shl:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x00,0x00,0x2c,0x00,0x01,0x01,0xff]
v_mac_f32 v0, v0, v0 row_shl:1

// NOSICI: error:
// VI9: v_mac_f32_dpp v0, v0, v0  row_shr:15 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x00,0x00,0x2c,0x00,0x1f,0x01,0xff]
v_mac_f32 v0, v0, v0 row_shr:0xf

// NOSICI: error:
// VI9: v_mac_f32_dpp v0, v0, v0  quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0xf bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x2c,0x00,0x4d,0x08,0xaf]
v_mac_f32 v0, v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bound_ctrl:0

// NOSICI: error:
// VI9: v_add_f32_dpp v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x09,0xa1]
v_add_f32 v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0

// NOSICI: error:
// VI9: v_min_f32_dpp v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x14,0x00


fp+-332)] = f3;
	f5 = f5+f6;
	f1 = f1-f14;
	f0 = f0+f2;
	f2 = f8+f10;
	f6 = f11+f12;
	f5 = f5+f1;
	heapFloat[(r3+1)] = f7;
	f0 = f0+f4;
	f1 = f2+f1;
	f2 = f6+f9;
	heapFloat[(r3+2)] = f5;
	heap32[(r3+3)] = 0;
	if(f0 <f3) //_LBB247_13
{
	heapFloat[(fp+-332)] = f0;
	f4 = f0;
}
else{
	f4 = f3;
}
	if(f2 <f7) //_LBB247_16
{
	heapFloat[(r3+1)] = f2;
	f6 = f2;
}
else{
	f6 = f7;
}
	if(f1 <f5) //_LBB247_19
{
	heapFloat[(r3+2)] = f1;
	f8 = f1;
}
else{
	f8 = f5;
}
	r4 = sp + -1344;
	r7 = r4 >> 2;
	heapFloat[(fp+-336)] = f3;
	heapFloat[(r7+1)] = f7;
	heapFloat[(r7+2)] = f5;
	heap32[(r7+3)] = 0;
	if(f3 <f0) //_LBB247_22
{
	heapFloat[(fp+-336)] = f0;
	f3 = f0;
}
	if(f7 <f2) //_LBB247_25
{
	heapFloat[(r7+1)] = f2;
	f7 = f2;
}
	if(f5 <f1) //_LBB247_28
{
	heapFloat[(r7+2)] = f1;
	f5 = f1;
}
	f0 = heapFloat[(fp+-324)];
	f0 = f4+f0;
	r5 = r5 >> 2;
	heapFloat[(fp+-332)] = f0;
	f0 = heapFloat[(r5+1)];
	f0 = f6+f0;
	heapFloat[(r3+1)] = f0;
	f0 = heapFloat[(r5+2)];
	f0 = f8+f0;
	heapFloat[(r3+2)] = f0;
	f0 = heapFloat[(fp+-328)];
	f0 = f3+f0;
	r3 = r6 >> 2;
	heapFloat[(fp+-336)] = f0;
	f0 = heapFloat[(r3+1)];
	f0 = f7+f0;
	heapFloat[(r7+1)] = f0;
	f0 = heapFloat[(r3+2)];
	f0 = f5+f0;
	heapFloat[(r7+2)] = f0;
	r1 = heap32[(r1)];
	r1 = r1 >> 2;
	r1 = heap32[(r1+15)];
	heap32[(g0)] = r0;
	heap32[(g0+1)] = r9;
	heap32[(g0+2)] = r2;
	heap32[(g0+3)] = r4;
	__FUNCTION_TABLE__[(r1)>>2](i7);
	return;
}
else{
	r2 = r7 >> 2;
	r9 = r4 >> 2;
	f0 = heapFloat[(r2+12)];
	f0 = -f0;
	f1 = heapFloat[(r2)];
	f2 = heapFloat[(r9+12)];
	f3 = heapFloat[(r2+4)];
	f4 = heapFloat[(r2+13)];
	f5 = heapFloat[(r9+13)];
	f6


* Iterates over all neighboring coordinates, starting to the top going clockwise.
     */
    * nbhd() {
        let nbhdOffsets: Array<[number, number]> = [
            [0, -2], [1, -1], [1, 1], [0, 2], [-1, 1], [-1, -1]]
        for (let [x, y] of nbhdOffsets) {
            yield new GridPoint(this.x + x, this.y + y)
        }
    }
    /**
     * Iterates all cells with a distance of at least 2, with no particular order.
     */
    * bigNbhd() {
        let bigNbhdOffsets: Array<[number, number]> = [
            [-1, -1], [0, -2], [1, -1], [1, 1], [0, 2], [-1, 1], [0, 4],
            [1, 3], [2, 2], [2, 0], [2, -2], [1, -3], [0, -4], [-1, -3],
            [-2, -2], [-2, 0], [-2, 2], [-1, 3]]
        for (let [x, y] of bigNbhdOffsets) {
            yield new GridPoint(this.x + x, this.y + y)
        }
    }
    /**
     * Creates a new GridPoint, shifted by the offset
     * @param param0 Offset in x and y direction.
     */
    plus([x, y]: [number, number]): GridPoint {
        return new GridPoint(this.x + x, this.y + y)
    }
}

class Grid {
    content: GridMap<Cell | PassiveHint>;
    constructor(levelData: ParsedLevel) {
        this.content = new GridMap();

        levelData.grid.forEach((row, i) => {
            row.forEach((cell, j) => {
                if (isParsedCell(cell)) {
                    this.content.set(new GridPoint(j, i), new Cell(cell.revealed, cell.mine, cell.hint))
                } else if (isParsedPassiveHint(cell)) {
                    this.content.set(new GridPoint(j, i), new PassiveHint(cell.direction, cell.hint))
                }
            })
        })

        this.makeCaptions();
    }
    get hiddenMineCount(): number {
        let count = 0
        for (var [_, cell] of this.content) {
            if (!isPassiveHint(cell) && !cell.revealed && cell.mine) {
                count += 1
            }
        }
        return count
    }
    /**
     * Calculates pixel bounds which contain the centers of all cells.
     * The centers of row count hints are shifted to avoid big gaps
     * at the margins.
     */
    makeBoundingPoints(): { x: BoundingInterval, y: BoundingInterval } {
        let x = new BoundingInterval();
        let y = new BoundingInterval();
        for (var [point, cell] of this.content) {
            if (isPassiveHint(cell)) {
                let offset = cell.boundingCenterOffset
                x.add(point.pixel.x + offset.x);
                y.add(point.pixel.y + offset.y);
            } else {
                x.add(point.pixel.x);
                y.add(point.pixel.y);
            }
        }
        return { x, y };
    }
    /**
     * This calculates the transformation which fits the level into a given frame.
     * It returns [Zoom factor, offset to center]
     * @param width Width of the frame in pixels.
     * @param height Height of the frame in pixels.
     */
    fitIntoFrame(width: number, height: number): ZoomTrafo {
        let bounds = this.makeBoundingPoints();
        let xPadding = 2;
        let yPadding = Math.sqrt(3);
        // scale factor
        let xScale = width / (bounds.x.length + xPadding);
        let yScale = height /


allwing_006.wmo'
    ModelA[74395] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_007.wmo'
    ModelA[74394] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_008.wmo'
    ModelA[74393] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_009.wmo'
    ModelA[74392] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_010.wmo'
    ModelA[74391] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane.wmo'
    ModelA[74390] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_000.wmo'
    ModelA[74389] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_001.wmo'
    ModelA[74388] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_002.wmo'
    ModelA[74387] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_003.wmo'
    ModelA[74386] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_004.wmo'
    ModelA[74385] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_005.wmo'
    ModelA[74384] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_006.wmo'
    ModelA[74383] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_007.wmo'
    ModelA[74382] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_008.wmo'
    ModelA[74381] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_009.wmo'
    ModelA[74380] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Arcane_010.wmo'
    ModelA[74379] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Factory.wmo'
    ModelA[74378] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Factory_000.wmo'
    ModelA[74377] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Factory_001.wmo'
    ModelA[74376] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Factory_002.wmo'
    ModelA[74375] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Factory_003.wmo'
    ModelA[74374] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Factory_004.wmo'
    ModelA[74373] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Factory_005.wmo'
    ModelA[74372] = 'World\\wmo\\Dungeon\\OL_TempestKeep\\TK_Exterior_smallwing_Factory_006.wmo'
    ModelA[74371] = 'World


9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z"/></svg>';
  static const String github =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="496" height="512" preserveAspectRatio="xMidYMid meet" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.


) = output(25) + change(15)
        // 40*G + ri*H = (25*G + rc*H) + (15*G + ro*H)
        // k:rand_nonce
        // r:blind_factor
        static secp256k1_context *ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY | SECP256K1_CONTEXT_SIGN);
        // sender
        unsigned char rs[32];
        unsigned char ks[32];
        memset(rs, 14, 1);
        // receiver
        unsigned char rr[32];
        memset(rr, 11, 1);
        unsigned char kr[32];

        //step 1
        // sender calculate (pkrs=rs*G, pkks=ks*G)
        secp256k1_pubkey pkks;
        secp256k1_pubkey pkrs;
        secp256k1_ec_pubkey_create(ctx, &pkrs, rs);
        secp256k1_ec_pubkey_create(ctx, &pkks, ks);

        // step 2
        // receiver calculate (pkrr=rr*G, pkkr=kr*g, Sr(schnorr sign)=kr+e*rr)
        secp256k1_pubkey pkkr;
        secp256k1_pubkey pkrr;
        secp256k1_schnorrsig sigReceiver;
        secp256k1_ec_pubkey_create(ctx, &pkkr, kr);
        secp256k1_ec_pubkey_create(ctx, &pkrr, rr);
        unsigned char msg[] = "schnorr sig message: fee|ledger_index";
        memcpy(msg, &pkks.data, sizeof(pkks.data));
        //msg = msg + pkks+pkkr + pkrs+pkrr
log << "msg:" << msg;
        secp256k1_schnorrsig_sign(ctx, &sigReceiver, NULL, msg, kr, NULL, NULL);

        // step 3
        // verify
        expect(secp256k1_schnorrsig_verify(ctx, &sigReceiver, msg, &pkkr) == 1, "");
        // sign
        secp256k1_schnorrsig sigSender;
        secp256k1_schnorrsig_sign(ctx, &sigSender, NULL, msg, ks, NULL, NULL);

        // step 4
        // calc ss*G+sr*G
        secp256k1_pubkey pkss;
        secp256k1_pubkey pksr;
        secp256k1_pubkey sssrpk;
        secp256k1_ec_pubkey_create(ctx, &pkss, sigReceiver.data);
        secp256k1_ec_pubkey_create(ctx, &pksr, sigSender.data);
        const secp256k1_pubkey* sssrpks[2] = {&pkss, &pksr};
        expect(secp256k1_ec_pubkey_combine(ctx, &sssrpk, sssrpks, 2) == 1);
        // calc (ks+kr)*G
        secp256k1_pubkey kskrpk;
        const secp256k1_pubkey* kskrpks[2] = {&pkkr, &pkks};
        expect(secp256k1_ec_pubkey_combine(ctx, &kskrpk, kskrpks, 2) == 1);
        // calc e*25*G

        // verify ss*G + sr*G == ks*G + kr*G + e*(25*G)
        //    sssrpk + neg kskrpk ?=
        expect(secp256k1_ec_pubkey_negate(ctx, &kskrpk) == 1);
        expect(secp256k1_ec_pubkey_tweak_add(ctx, &sssrpk, kskrpk.data) == 1);
        //     calc commitment(public data on-chain)
        secp256k1_pedersen_commitment commit1;
        secp256k1_pedersen_commitment commit2;
        secp256k1_pedersen_commitment commit3;
        uint64_t v1 = 40; // src
        uint64_t v2 = 15; // change
        uint64_t v3 = 25; // dst
        unsigned char blind1[32] = {20};  // src
        unsigned char blind2[32] = {34};


           Self::Global => sys::DiscordLobbySearchDistance_Global,
            Self::Local => sys::DiscordLobbySearchDistance_Local,
        }
    }
}
// Sequentializer re-orders the equations in the nodes' body
//
// This is done in four steps:
//
// 1. Generating the direct dependencies for each equation (find_dep_XXX)
//    This is done by adding all the Ident in the left side of each equations to the dependencies
//    We represent the graph using a HashMap<String, Vec<String>>
//      keys: Varname
//      values: List of var that the key depends on (children in a Graph)
//
// 2. Propagating the dependencies (propagate)
//    We explore the children of each variable and add their own dependecies to the current Variable
//    We use a queue of what remains to be explored and keep track of what variable we already visited
//    so as to not loop endlessly.
//
// 3. Checking the satisfiability of the ordering
//    The only way we could not be able to order the equations is the circular dependency
//    We can detect those easily by finding the cycles in the graph.
//    Thanks to propagation we just need to check that no variable depends on itself to be computed.
//
// 4. Re-ordering using the dependencies (order)
//    We construct the Node's body incrementally
//    Each loop turn we check wether or not all the dependecies of each equation has been met.
//    If it has we can append this equation to the body
//    We repeat this until all the equations are placed in the body.

use std::collections::HashMap;
use std::collections::VecDeque;
use crate::nast::*;

fn find_dep_atom(a: &Atom) -> Vec<String> {
	match a {
		Atom::Ident(s) => vec!{s.to_string()},
		Atom::Const(_) => vec!{},
	}
}

fn find_dep_bexpr(e: &Bexpr) -> Vec<String> {
	match e {
		Bexpr::Unop(_, e) => find_dep_bexpr(e),
		Bexpr::Binop(_, exprs) => {
			let (e1, e2): &(Bexpr, Bexpr) = &*exprs;
			let mut v1 = find_dep_bexpr(e1);
			v1.append(&mut find_dep_bexpr(e2));
			v1
		},
		Bexpr::If(exprs) => {
			let (e1, e2, e3): &(Bexpr, Bexpr, Bexpr) = &*exprs;
			let mut v1 = find_dep_bexpr(e1);
			v1.append(&mut find_dep_bexpr(e2));
			v1.append(&mut find_dep_bexpr(e3));
			v1
		},
		Bexpr::Tuple(vexpr) => { // may be improved in some cases (ie: Tuple = Tuple)
			let v = vexpr.iter().map(find_dep_bexpr);
			v.into_iter().flatten().collect()
		},
		Bexpr::Atom(a) => find_dep_atom(a),
	}
}

// Finds the direct dependencies to compute the equation
fn find_dep_eq(e: &Equation) -> Vec<String> {
	match &e.body {
		Expr::Bexpr(be) => find_dep_bexpr(&be),
		Expr::Call{name:_, args} => {
			let v = args.iter().map(find_dep_bexpr);
			v.into_iter().flatten().collect()
		},
		Expr::Fby(vexpr1, vexpr2) => {
			if vexpr1.len() != vexpr2.len() {
				panic!("Expected same tuple size on fby")
			}
			let v = vexpr1.iter().map(find_dep_atom);
			v.into_iter().flatten().collect()
		},
	}
}

// propagates the dependencies for each equation
fn propagate(deps: &HashMap<String, Vec<String>>)


FA90010 */  sw    $t1, 0x10($sp)
/* B7E668 801074C8 0C00084C */  jal   osSyncPrintf
/* B7E66C 801074CC AFAA0018 */   sw    $t2, 0x18($sp)
/* B7E670 801074D0 10000052 */  b     .L8010761C
/* B7E674 801074D4 8FBF0024 */   lw    $ra, 0x24($sp)
/* B7E678 801074D8 94620008 */  lhu   $v0, 8($v1)
.L801074DC:
/* B7E67C 801074DC 24630008 */  addiu $v1, $v1, 8
/* B7E680 801074E0 1482FFE8 */  bne   $a0, $v0, .L80107484
/* B7E684 801074E4 00000000 */   nop
/* B7E688 801074E8 10000027 */  b     .L80107588
/* B7E68C 801074EC 00000000 */   nop
.L801074F0:
/* B7E690 801074F0 24010001 */  li    $at, 1
/* B7E694 801074F4 14410004 */  bne   $v0, $at, .L80107508
/* B7E698 801074F8 3C088015 */   lui   $t0, %hi(D_801538F8)
/* B7E69C 801074FC 3C088015 */  lui   $t0, %hi(D_801538F4) # $t0, 0x8015
/* B7E6A0 80107500 10000002 */  b     .L8010750C
/* B7E6A4 80107504 8D0838F4 */   lw    $t0, %lo(D_801538F4)($t0)
.L80107508:
/* B7E6A8 80107508 8D0838F8 */  lw    $t0, %lo(D_801538F8)($t0)
.L8010750C:
/* B7E6AC 8010750C 94620000 */  lhu   $v0, ($v1)
/* B7E6B0 80107510 3404FFFF */  li    $a0, 65535
/* B7E6B4 80107514 8C6B0004 */  lw    $t3, 4($v1)
/* B7E6B8 80107518 1082001B */  beq   $a0, $v0, .L80107588
/* B7E6BC 8010751C 00C02825 */   move  $a1, $a2
.L80107520:
/* B7E6C0 80107520 54A20015 */  bnel  $a1, $v0, .L80107578
/* B7E6C4 80107524 94620008 */   lhu   $v0, 8($v1)
/* B7E6C8 80107528 8FA20040 */  lw    $v0, 0x40($sp)
/* B7E6CC 8010752C 906F0002 */  lbu   $t7, 2($v1)
/* B7E6D0 80107530 8D090000 */  lw    $t1, ($t0)
/* B7E6D4 80107534 3C048015 */  lui   $a0, %hi(D_80153DEC) # $a0, 0x8015
/* B7E6D8 80107538 A04F2208 */  sb    $t7, 0x2208($v0)
/* B7E6DC 8010753C 8D0A0004 */  lw    $t2, 4($t0)
/* B7E6E0 80107540 012B3023 */  subu  $a2, $t1, $t3
/* B7E6E4 80107544 AC462200 */  sw    $a2, 0x2200($v0)
/* B7E6E8 801075


: [[@LINE-1]]:{{[0-9]+}}:

// --------------------------------------------------------------------------//
// Invalid vector list

st1h { }, p0, [x0]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector register expected
// CHECK-NEXT: st1h { }, p0, [x0]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

st1h { z1.h, z2.h }, p0, [x0]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
// CHECK-NEXT: st1h { z1.h, z2.h }, p0, [x0]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

st1h { v0.8h }, p0, [x0]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
// CHECK-NEXT: st1h { v0.8h }, p0, [x0]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

// --------------------------------------------------------------------------//
// Invalid scalar + scalar addressing modes

st1h z0.h, p0, [x0, x0]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: register must be x0..x30 with required shift 'lsl #1'
// CHECK-NEXT: st1h z0.h, p0, [x0, x0]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

st1h z0.h, p0, [x0, xzr]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: register must be x0..x30 with required shift 'lsl #1'
// CHECK-NEXT: st1h z0.h, p0, [x0, xzr]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

st1h z0.h, p0, [x0, x0, lsl #2]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: register must be x0..x30 with required shift 'lsl #1'
// CHECK-NEXT: st1h z0.h, p0, [x0, x0, lsl #2]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

st1h z0.h, p0, [x0, w0]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: register must be x0..x30 with required shift 'lsl #1'
// CHECK-NEXT: st1h z0.h, p0, [x0, w0]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

st1h z0.h, p0, [x0, w0, uxtw]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: register must be x0..x30 with required shift 'lsl #1'
// CHECK-NEXT: st1h z0.h, p0, [x0, w0, uxtw]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

// --------------------------------------------------------------------------//
// Invalid scalar + vector addressing modes

st1h z0.d, p0, [x0, z0.h]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)'
// CHECK-NEXT: st1h z0.d, p0, [x0, z0.h]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

st1h z0.d, p0, [x0, z0.s]
// CHECK: [[@


oint number.
         * @returns {number} Returns the random number.
         * @example
         *
         * _.random(0, 5);
         * // => an integer between 0 and 5
         *
         * _.random(5);
         * // => also an integer between 0 and 5
         *
         * _.random(5, true);
         * // => a floating-point number between 0 and 5
         *
         * _.random(1.2, 5.2);
         * // => a floating-point number between 1.2 and 5.2
         */
        random(max?: number, floating?: boolean): number;
        /**
         * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
         *
         * @static
         * @memberOf _
         * @category String
         * @returns {string} Returns the camel cased string.
         * @example
         *
         * _.camelCase('Foo Bar');
         * // => 'fooBar'
         *
         * _.camelCase('--foo-bar');
         * // => 'fooBar'
         *
         * _.camelCase('__foo_bar__');
         * // => 'fooBar'
         */
        /**
         * Capitalizes the first character of `string`.
         *
         * @static
         * @memberOf _
         * @category String
         * @returns {string} Returns the capitalized string.
         * @example
         *
         * _.capitalize('fred');
         * // => 'Fred'
         */
        /**
         * Deburrs `string` by converting [latin-1 supplementary letters](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
         * to basic latin letters and removing [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
         *
         * @static
         * @memberOf _
         * @category String
         * @returns {string} Returns the deburred string.
         * @example
         *
         * _.deburr('déjà vu');
         * // => 'deja vu'
         */
        /**
         * Checks if `string` ends with the given target string.
         *
         * @static
         * @memberOf _
         * @category String
         * @param {string} [target] The string to search for.
         * @param {number} [position=string.length] The position to search from.
         * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`.
         * @example
         *
         * _.endsWith('abc', 'c');
         * // => true
         *
         * _.endsWith('abc', 'b');
         * // => false
         *
         * _.endsWith('abc', 'b', 2);
         * // => true
         */
        endsWith(target?: string, position?: number): boolean;
        /**
         * Converts the characters "&", "<", ">", '"', "'", and "\`", in `string` to
         * their corresponding HTML entities.
         *
         * **Note:** No other characters are escaped. To escape additional characters
         * use a third-party library like [_he_](https://mths.be/he).
         *
         * Though the ">" character is escaped for symmetry, characters like
         * ">" and "/" don't need escaping in HTML and have no special meaning
         * unless they're part of a tag or unquoted attribute value.
         * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
         * (under "semi-related fun fact") for more details.
         *
         * Backticks are escaped because in Internet Explorer < 9, they can break out
         * of attribute values or HTML comments. See [#59](https://html5sec.org/#59),
         * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108


t4W-X0"
                                    }
                                },
                                "vct": "http://localhost:22222/draft13/identity_credential",
                                "display": [],
                                "family_name": "Doe",
                                "birthdate": "1940-01-01"
                            },
                            "undisclosedPayload": {
                                "given_name": "John",
                                "email": "johndoe@example.com",
                                "phone_number": "+1-202-555-0101",
                                "address": {
                                    "street_address": "123 Main St",
                                    "locality": "Anytown",
                                    "region": "Anystate",
                                    "country": "US"
                                },
                                "is_over_18": true,
                                "is_over_21": true,
                                "is_over_65": true,
                                "id": "urn:uuid:f4411ed9-d3eb-4c5d-971a-ffb2872b616d",
                                "iat": 1752648454,
                                "nbf": 1752648454,
                                "exp": 1784184454,
                                "iss": "http://localhost:22222/draft13",
                                "cnf": {
                                    "jwk": {
                                        "kty": "EC",
                                        "crv": "P-256",
                                        "kid": "pE7QRzzJ3utoKynTja7JyeAzcQefzZO24rEdWwkGtT0",
                                        "x": "oRIMe5XVIcJGDSW10r19w5jym8W-btkxChzecsuXUhc",
                                        "y": "XQrS0p2BJf_WXIcn-RAdFoX17DJsefpED3Ct4t4W-X0"
                                    }
                                },
                                "vct": "http://localhost:22222/draft13/identity_credential",
                                "display": [],
                                "_sd": [
                                    "WCsMVa1lmRPnDMEIumJH5R2w07KzNlEyf-qbm-lvReA",
                                    "vyCkk8nkNZcSNBqzLyhSzDp1AuwnS911ukrFgmFZPFI"
                                ]
                            },
                            "disclosures": {
                                "WCsMVa1lmRPnDMEIumJH5R2w07KzNlEyf-qbm-lvReA": {
                                    "disclosure": "WyJjdFdidkpYeGJmbVRzMlJ3UFBXZ2d3IiwiZmFtaWx5X25hbWUiLCJEb2UiXQ",
                                    "salt": "ctWbvJXxbfmTs2RwPPWggw",
                                    "key": "family_name",
                                    "value": "Doe"
                                },
                                "vyCkk8nkNZcSNBqzLyhSzDp1AuwnS911ukrFgmFZPFI": {
                                    "dis


rm-field{
    margin: 0 0 0 0;
    font:normal 12px tahoma, arial, helvetica, sans-serif;
}

/* ---- text fields ---- */
.x-form-text, textarea.x-form-field{
    padding:1px 3px;
    background:#fff url(../images/default/form/text-bg.gif) repeat-x 0 0;
    border:1px solid #B5B8C8;
}
textarea.x-form-field {
    padding:2px 3px;
}
.x-form-text {
    height:22px;
    line-height:18px;
    vertical-align:middle;
}
.ext-ie .x-form-text {
    margin:-1px 0; /* ie bogus margin bug */
    height:22px; /* ie quirks */
    line-height:18px;
}
.ext-ie textarea.x-form-field {
    margin:-1px 0; /* ie bogus margin bug */
}
.ext-strict .x-form-text {
    height:18px;
}
.ext-safari .x-form-text {
    height:20px; /* safari always same size */
    padding:0 3px; /* remove extra top/bottom padding */
}
.ext-safari.ext-mac textarea.x-form-field {
    margin-bottom:-2px; /* another bogus margin bug, safari/mac only */
}
.ext-gecko .x-form-text {
    padding-top:2px; /* FF won't center the text vertically */
    padding-bottom:0;
}
textarea {
    resize: none;  /* Disable browser resizable textarea */
}

/* select boxes */

.x-form-select-one {
    height:20px;
    line-height:18px;
    vertical-align:middle;
    background-color:#fff; /* opera */
    border: 1px solid #B5B8C8;
}

/* multi select boxes */

/* --- TODO --- */

/* checkboxes */

/* --- TODO --- */

/* radios */

/* --- TODO --- */

/* wrapped fields and triggers */

.x-form-field-wrap {
    position:relative;
    zoom:1;
    white-space: nowrap;
}

.x-editor .x-form-check-wrap {
    background:#fff;
}
.x-form-field-wrap .x-form-trigger{
    width:17px;
    height:21px;
    border:0;
    background:transparent url(../images/default/form/trigger.gif) no-repeat 0 0;
    cursor:pointer;
    border-bottom: 1px solid #B5B8C8;
    position:absolute;
    top:0;
}
.ext-safari .x-form-field-wrap .x-form-trigger{
    height:21px; /* safari doesn't allow height adjustments to the fields, so adjust trigger */
}

.x-form-field-wrap .x-form-date-trigger{
    background-image: url(../images/default/form/date-trigger.gif);
    cursor:pointer;
}
.x-form-field-wrap .x-form-clear-trigger{
    background-image: url(../images/default/form/clear-trigger.gif);
    cursor:pointer;
}
.x-form-field-wrap .x-form-search-trigger{
    background-image: url(../images/default/form/search-trigger.gif);
    cursor:pointer;
}

.x-form-field-wrap .x-form-twin-triggers{

}
.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{
    position:static;
    top:auto;
    vertical-align:top;
}

.x-form-field-


-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256c-44.2 0-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80s-35.8-80-80-80zM528 448c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z"],"trash-arrow-up":[448,512,["trash-restore"],"f829","M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z"],"arrow-down-up-lock":[640,512,[],"e4b0","M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-


 new(delegate: Arc<T>) -> Self {
        IoDelegate {
            delegate,
            methods: Default::default(),
        }
    }

    pub fn add_method<F, I>(&mut self, name: &str, method: F)
    where
        F: Fn(Arc<T>, PeerId, Vec<u8>) -> I,
        F: Send + Sync + 'static,
        I: Future<Output = Result<Vec<u8>>> + Send + Unpin + 'static,
    {
        self.methods.insert(
            name.into(),
            Arc::new(DelegateAsyncMethod {
                delegate: self.delegate.clone(),
                closure: method,
            }),
        );
    }
}

impl<T> IntoIterator for IoDelegate<T>
where
    T: Send + Sync + 'static,
{
    type Item = (String, Arc<dyn RpcMethod>);
    type IntoIter = std::collections::hash_map::IntoIter<String, Arc<dyn RpcMethod>>;

    fn into_iter(self) -> Self::IntoIter {
        self.methods.into_iter()
    }
}
<reponame>ArcticLampyrid/libmdns
pub fn main() {
    let mut builder = env_logger::Builder::new();
    builder.parse_filters("libmdns=debug");
    builder.init();

    let responder = libmdns::Responder::new().unwrap();
    let _svc = responder.register(
        "_http._tcp".to_owned(),
        "libmdns Web Server".to_owned(),
        80,
        &["path=/"],
    );

    loop {
        ::std::thread::sleep(::std::time::Duration::from_secs(10));
    }
}
use anyhow::{self, Context};
use log::debug;
use nix::fcntl::{self, OFlag};
use nix::sys::stat::{self, FileStat, Mode, SFlag};
use smol::blocking;
use std::ffi::OsString;
use std::os::unix::io::RawFd;
use std::path::Path;
use std::time::{Duration, SystemTime, UNIX_EPOCH};

use super::super::protocol::{FuseAttr, INum};

#[derive(Clone, Copy, Debug)]
pub struct FileAttr {
    /// Inode number
    pub ino: INum,
    /// Size in bytes
    pub size: u64,
    /// Size in blocks
    pub blocks: u64,
    /// Time of last access
    pub atime: SystemTime,
    /// Time of last modification
    pub mtime: SystemTime,
    /// Time of last change
    pub ctime: SystemTime,
    /// Time of creation (macOS only)
    pub crtime: SystemTime,
    /// Kind of file (directory, file, pipe, etc)
    pub kind: SFlag,
    /// Permissions
    pub perm: u16,
    /// Number of hard links
    pub nlink: u32,
    /// User id
    pub uid: u32,
    /// Group id
    pub gid: u32,
    /// Rdev
    pub rdev: u32,
    /// Flags (macOS only, see chflags(2))
    pub flags: u32,
}

pub fn parse_oflag(flags: u32) -> OFlag {
    debug_assert!(
        flags < std::i32::MAX as u32,
        "helper_parse_oflag() found flags={} overflow, larger than u16::MAX",
        flags,
    );
    let oflags = OFlag::from_bits_truncate(flags as i32);
    debug!("helper_parse_oflag() read file flags={:?}", oflags);
    oflags
}

pub fn parse_mode(mode: u32) -> Mode {
    debug_assert!(
        mode < std::u16::MAX as u32,
        "helper_parse_mode() found mode={} overflow, larger than u16::MAX",
        mode,


Film Director. Believer.","World's leading luxury magazine from @WSJ. December/January issue on stands 12/9. Instagram: @wsjmag","Dukung Selalu Kebenaran","multi-genre.","is you a natural blondie like Goku?","Filmmaker, New Yorker, Woman","Ma ville, B\u00e9ziers. Ma passion, l'ASBH. Mon m\u00e9tier, voir la vie en bleue. ;)\nJe RT pour partager et aider \u00e0 comprendre. RT ne signifie pas que je suis en accord.","83 berges \u00e0 l'\u00e9tat-civil mais clair et lucide dans ma t\u00eate. Pour le reste, je ne vis plus que pour la libert\u00e9, libert\u00e9 ch\u00e9rie pour tous et chacun !","A young film, television, and video game enthusiast.","Persigo una utop\u00eda pero esta se me aleja cada vez que me acerco","Unha v\u00edbora de car\u00e1cter incisivo.","\"Peut-\u00eatre serait-ce un bienfait pour un vieux peuple de savoir plus facilement oublier; l'homme, avant tout, a besoin de s'adapter au neuf.\" L'\u00e9trange d\u00e9faite","Per diventare giovani, veramente giovani ci vuole tempo. Pablo Picasso","++++ Hier twittert die Online-Redaktion der Stuttgarter Zeitung. ++++ FB http://stzlinx.de/fb Google+ http://stzlinx.de/plus \r\nImpressum http://stzlinx.de/imp","My name is Pete McDonald and I am a budding novelist seeking inspiration for my next creative endeavor.","Stagiaire web \u00e0 @libe, pass\u00e9e par @lobs, pigiste le @PETITBULLETIN St-Etienne. Journaliste-SR \u00e0 @Le_Progres Haute-Loire. Dipl\u00f4m\u00e9e @iscpaLyon","be me see me","feminist. mamma. science editor. living with stage IV cancer and a bad attitude. clinging like Odysseus to the shaggy underbelly of the middle class.","Responsable Communication & Hors les Murs contemporains Jeanne Bucher Jaeger - Directeur Hors les Murs YIA ART FAIR 2014 & 2015 (http://www.yia-artfair.com)","libert\u00e9 \u00e9galit\u00e9 fraternit\u00e9 .\ud83c\uddeb\ud83c\uddf7. \u271d\ufe0f.Contre la mondialisation des esprits.","Ultimate fan promoting musicians/ producing music events","#Protocolo, Organizaci\u00f3n de #Eventos y #CommunityManager. Amante del #cine, el #teatro y las #series. Formada en #SocialMedia #MarketingDigital en @aulacm","\u4eac\u90fd\u306e\u6620\u753b\u30ad\u30c1\u30ac\u30a4\u3067\u3059\u3002\u300c\u708e628\u300d\u3068\u300c\u8d64\u3044\u98a8\u8239\u300d\u306e\u4e21\u65b9\u3067\u6ce3\u3051\u307e\u3059\uff08\u7206\uff09\u5b50\u4f9b\u306e\u9803\u306b\u300c\u60d1\u661f\u5927\u


 even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package java.lang.invoke;

import jdk.internal.org.objectweb.asm.MethodVisitor;
import jdk.internal.org.objectweb.asm.Opcodes;
import jdk.internal.org.objectweb.asm.Type;
import sun.invoke.util.BytecodeDescriptor;
import sun.invoke.util.Wrapper;
import static sun.invoke.util.Wrapper.*;

class TypeConvertingMethodAdapter extends MethodVisitor {

    TypeConvertingMethodAdapter(MethodVisitor mv) {
        super(Opcodes.ASM5, mv);
    }

    private static final int NUM_WRAPPERS = Wrapper.COUNT;

    private static final String NAME_OBJECT = "java/lang/Object";
    private static final String WRAPPER_PREFIX = "Ljava/lang/";

    // Same for all primitives; name of the boxing method
    private static final String NAME_BOX_METHOD = "valueOf";

    // Table of opcodes for widening primitive conversions; NOP = no conversion
    private static final int[][] wideningOpcodes = new int[NUM_WRAPPERS][NUM_WRAPPERS];

    private static final Wrapper[] FROM_WRAPPER_NAME = new Wrapper[16];

    // Table of wrappers for primitives, indexed by ASM type sorts
    private static final Wrapper[] FROM_TYPE_SORT = new Wrapper[12];

    static {
        for (Wrapper w : Wrapper.values()) {
            if (w.basicTypeChar() != 'L') {
                int wi = hashWrapperName(w.wrapperSimpleName());
                assert (FROM_WRAPPER_NAME[wi] == null);
                FROM_WRAPPER_NAME[wi] = w;
            }
        }

        // wideningOpcodes[][] will be NOP-initialized by default
        assert(Opcodes.NOP == 0);

        initWidening(LONG,   Opcodes.I2L, BYTE, SHORT, INT, CHAR);
        initWidening(LONG,   Opcodes.F2L, FLOAT);
        initWidening(FLOAT,  Opcodes.I2F, BYTE, SHORT, INT, CHAR);
        initWidening(FLOAT,  Opcodes.L2F, LONG);
        initWidening(DOUBLE, Opcodes.I2D, BYTE, SHORT, INT, CHAR);
        initWidening(DOUBLE, Opcodes.F2D, FLOAT);
        initWidening(DOUBLE, Opcodes.L2D, LONG);

        FROM_TYPE_SORT[Type.BYTE] = Wrapper.BYTE;
        FROM_TYPE_SORT[Type.SHORT] = Wrapper.SHORT;
        FROM_TYPE_SORT[Type.INT] = Wrapper.INT;
        FROM_TYPE_SORT[Type.LONG] = Wrapper.LONG;
        FROM_TYPE_SORT[Type.CHAR] = Wrapper.CHAR;
        FROM_TYPE_SORT[Type.FLOAT] = Wrapper.FLOAT;
        FROM_TYPE_SORT[Type.DOUBLE] = Wrapper.DOUBLE;
        FROM_TYPE_SORT[Type.BOOLEAN] = Wrapper.BOOLEAN;
    }

    private static void initWidening(Wrapper to, int opcode, Wrapper... from) {
        for (Wrapper f : from) {
            wideningOpcodes[f.ordinal()][to.ordinal()] = opcode;
        }
    }

    /**
     * Class name to Wrapper hash, derived from Wrapper.hashWrap()
     * @param xn
     * @return The hash code 0-15
     */
    private static int hashWrapperName(String xn) {
        if (xn.length() < 3) {
            return 0;
        }
        return (3 * xn.charAt(1) + xn.charAt(2)) % 16;
    }

    private Wrapper wrapperOrNullFromDescriptor(String desc) {
        if (!desc.startsWith(WRAPPER_PREFIX)) {
            // Not a class type (array or method), so not a boxed type
            // or not in the right package
            return null;


if (serviceWorker.state == 'activated') {
                  console.log('Installed new service worker.');
                  loadMainDartJs();
                }
              });
            }
            if (!reg.active && (reg.installing || reg.waiting)) {
              // No active web worker and we have installed or are installing
              // one for the first time. Simply wait for it to activate.
              waitForActivation(reg.installing ?? reg.waiting);
            } else if (!reg.active.scriptURL.endsWith(serviceWorkerVersion)) {
              // When the app updates the serviceWorkerVersion changes, so we
              // need to ask the service worker to update.
              console.log('New service worker available.');
              reg.update();
              waitForActivation(reg.installing);
            } else {
              // Existing service worker is still good.
              console.log('Loading app from service worker.');
              loadMainDartJs();
            }
          });

        // If service worker doesn't succeed in a reasonable amount of time,
        // fallback to plaint

<!doctype html>

<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
<title>关于使用硬件加速</title>

关于使用硬件加速：

目前硬件加速支持两种编码格式：H264 和 H265

有3种加速方法，分别对应三家的硬件：Inter、AMD、Nvidia

不过在苹果电脑上，不管你用的哪家的硬件，都是使用 videotoolbox 编码器。

需要注意的是，即便你的电脑拥有 Nvidia 显卡，可能也用不了 Nvidia 的硬件加速编码，因为 Nvidia 硬件加速依赖于显卡内部的一种特定的 GPU 的物理部分，专用于编码。只有在 GTX10 和 RTX20 以上的显卡才搭载有这个物理部分。

使用硬件编码器进行编码，只需要将输出选项中的编码器改成硬件编码器即可，其中：

-c:v h264_qsv 对应 Intel H264 编码

-c:v h264_amf 对应 AMD H264 编码

-c:v h264_nvenc 对应 Nvidia H264 编码

-c:v h264_videotoolbox 对应苹果电脑的 H264 编码

-c:v hevc_qsv 对应 Intel H265 编码

-c:v hevc_amf 对应 AMDH265 编码

-c:v hevc_nvenc 对应 Nvidia H265 编码

-c:v hevc_videotoolbox 对应苹果电脑的 H265 编码

-c:v 表示视频（Video）的编码器（codec）

在使用硬件加速编码器的时候，控制输出视频的质量是使用 qscale 参数，他的数值可以从 0.1 - 255 不等，数值越小，画质越高，码率越大，输出文件体积越大。同一个数值对于不同的编码器画质的影响效果不同。所以你需要自己测试，在玛律大小和视频画质之间找到一个平衡的 qscale 数值。

目前所有


vious
    /// state.
    #[cfg(not(feature = "nosync"))]
    #[inline]
    pub unsafe fn steal() -> Instance {
        SYSCFG_TAKEN = true;
        INSTANCE
    }
}

/// Raw pointer to SYSCFG
///
/// Dereferencing this is unsafe because you are not ensured unique
/// access to the peripheral, so you may encounter data races with
/// other users of this peripheral. It is up to you to ensure you
/// will not cause data races.
///
/// This constant is provided for ease of use in unsafe code: you can
/// simply call for example `write_reg!(gpio, GPIOA, ODR, 1);`.
pub const SYSCFG: *const RegisterBlock = 0x40010000 as *const _;

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct TimeInForceRules {
	/// Number of time in force techniques
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(rename = "1239")]
	pub time_in_force_rules: Option<fix_common::RepeatingValues<TimeInForceRule>>,
}

#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct TimeInForceRule {
	/// Indicates time in force techniques that are valid for the specified market segment
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(rename = "59")]
	pub time_in_force: Option<TimeInForce>,
}

#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq)]
pub enum TimeInForce {
	/// Day (or session)
	#[serde(rename = "0")]
	Day,
	/// Good Till Cancel (GTC)
	#[serde(rename = "1")]
	GoodTillCancel,
	/// At the Opening (OPG)
	#[serde(rename = "2")]
	AtTheOpening,
	/// Immediate Or Cancel (IOC)
	#[serde(rename = "3")]
	ImmediateOrCancel,
	/// Fill Or Kill (FOK)
	#[serde(rename = "4")]
	FillOrKill,
	/// Good Till Crossing (GTX)
	#[serde(rename = "5")]
	GoodTillCrossing,
	/// Good Till Date (GTD)
	#[serde(rename = "6")]
	GoodTillDate,
	/// At the Close
	#[serde(rename = "7")]
	AtTheClose,
	/// Good Through Crossing
	#[serde(rename = "8")]
	GoodThroughCrossing,
	/// At Crossing
	#[serde(rename = "9")]
	AtCrossing,
	/// Good For Time
	#[serde(rename = "A")]
	GoodForTime,
	/// Good for auction (GFA)
	#[serde(rename = "B")]
	GoodForAuction,
	/// Good for this Month (GFM)
	#[serde(rename = "C")]
	GoodForThisMonth,
}

impl Default for TimeInForce {
	fn default() -> Self {
		TimeInForce::Day
	}
}
use serde::{Deserialize, Serialize};
use serde_json;
use std::collections::HashMap;

/// Report Value
///
/// Reporter functions should generate a ReportValue using one of the five
/// base types.
///
/// Before being sent to publisher functions, the ReportValue will be wrapped by
/// [PsistatsReport](libpsistats::PsistatsReport) and will include some additional
/// metadata such as the plugin name, and hostname.
#[derive(Deserialize, Serialize, Clone, Debug)]
#[serde(untagged)]
pub enum ReportValue {
    Integer(u64),
    Float(f64),
    String(String),
    Array(Vec<ReportValue>),
    Object(HashMap<String, ReportValue>)
}

/// The PsistatsReport is generated internally from the [ReportValue](libpsistats::ReportValue) generated
/// by a reporter.
#[derive(Deserialize, Serialize, Clone,


;
            }
            tmpNode = start;
            start = start.parentNode;
        }
        if(tmpNode){
            var p = me.document.createElement('p');
            if(front){
                tmpNode.parentNode.insertBefore(p,tmpNode)
            }else{
                tmpNode.parentNode.insertBefore(p,tmpNode.nextSibling)
            }
            domUtils.fillNode(me.document,p);
            range.setStart(p,0).setCursor(false,true);
        }
    }
};

// plugins/webapp.js
/**
 * 百度应用
 * @file
 * @since 1.2.6.1
 */

/**
 * 插入百度应用
 * @command webapp
 * @method execCommand
 * @remind 需要百度APPKey
 * @remind 百度应用主页： http://app.baidu.com/
 * @param { Object } appOptions 应用所需的参数项， 支持的key有： title=>应用标题， width=>应用容器宽度，
 * height=>应用容器高度，logo=>应用logo，url=>应用地址
 * @example
 * ```javascript
 * //editor是编辑器实例
 * //在编辑器里插入一个“植物大战僵尸”的APP
 * editor.execCommand( 'webapp' , {
 *     title: '植物大战僵尸',
 *     width: 560,
 *     height: 465,
 *     logo: '应用展示的图片',
 *     url: '百度应用的地址'
 * } );
 * ```
 */

//UE.plugins['webapp'] = function () {
//    var me = this;
//    function createInsertStr( obj, toIframe, addParagraph ) {
//        return !toIframe ?
//                (addParagraph ? '
' : '') + '' +
//                        (addParagraph ? '
' : '')
//                :
//                '';
//    }
//
//    function switchImgAndIframe( img2frame ) {
//        var tmpdiv,
//                nodes = domUtils.getElementsByTagName( me.document, !img2frame ? "iframe" : "img" );
//        for ( var i = 0, node; node = nodes[i++]; ) {
//            if ( node.className != "edui-faked-webapp" ){
//                continue;
//            }
//            tmpdiv = me.document.createElement( "div" );
//            tmpdiv.innerHTML = createInsertStr( img2frame ? {url:node.getAttribute( "_url" ), width:node.width, height:node.height,title:node.title,logo:node.style.backgroundImage.replace("url(","").replace(")","")} : {url:node.getAttribute( "src", 2 ),title:node.title, width:node.width, height:node.height,logo:node.getAttribute("logo_url")}, img2frame ? true : false,false );
//            node.parentNode.replaceChild( tmpdiv.firstChild, node );
//        }
//    }
//
//    me.addListener( "beforegetcontent", function () {
//        switchImgAndIframe( true );
//    } );
//    me.addListener( 'aftersetcontent', function () {
//        switchImgAndIframe( false );
//    } );
//    me.addListener( 'aftergetcontent', function ( cmdName ) {
//        if ( cmdName == 'aftergetcontent' && me.queryCommandState( 'source' ) ){
//            return;
//        }