oduleInformation(
              moduleId,
              moduleManager.getModuleHash(moduleId),
              moduleManager.getModuleDependencies(moduleId)));
    }

    return modules.build();
  }

  private static void dumpModuleInformationInJsonFormat(
      Console console, ImmutableList<AuditModuleInformation> modules) {
    StringWriter stringWriter = new StringWriter();
    try {
      ObjectMappers.WRITER.withDefaultPrettyPrinter().writeValue(stringWriter, modules);
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
    console.getStdOut().println(stringWriter.getBuffer().toString());
  }

  private static void dumpModuleInformationInRawFormat(
      Console console, ImmutableList<AuditModuleInformation> modules) {

    modules.forEach(module -> dumpModuleInformationInRawFormat(console.getStdOut(), module));
  }

  private static void dumpModuleInformationInRawFormat(
      PrintStream stdout, AuditModuleInformation module) {
    stdout.println(String.format("Module id: %s", module.id));
    stdout.println(String.format("Module hash: %s", module.hash));
    stdout.println(
        String.format("Module dependencies: %s", Joiner.on(", ").join(module.dependencies)));
    stdout.println();
  }

  private static class AuditModuleInformation {
    public final String id;
    public final String hash;
    public final ImmutableSortedSet<String> dependencies;

    private AuditModuleInformation(
        String id, String hash, ImmutableSortedSet<String> dependencies) {
      this.id = id;
      this.hash = hash;
      this.dependencies = dependencies;
    }
  }
}
/*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * 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.
 */

package com.facebook.buck.cli;

import com.facebook.buck.log.GlobalStateManager;
import com.facebook.buck.util.concurrent.CommandThreadFactory;
import com.facebook.buck.util.concurrent.ConcurrencyLimit;
import com.facebook.buck.util.concurrent.ListeningMultiSemaphore;
import com.facebook.buck.util.concurrent.MostExecutors;
import com.facebook.buck.util.concurrent.ResourceAmounts;
import com.facebook.buck.util.concurrent.WeightedListeningExecutorService;
import com.google.common.base.Joiner;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * Encapsulates a group of threads which operate a {@link ListeningExecutorService}, providing an
 * {@link AutoCloseable} interface which waits for and kills the threads on close.
 */
@SuppressWarnings("PMD.AvoidThreadGroup")
public class CommandThreadManager implements AutoCloseable {

  // Shutdown timeout should be longer than the maximum runtime of a single step as some
  // steps ignore interruption. The longest ever recorded step execution time as of
  // 2014-07-08 was ~6 minutes, so a timeout of 10 minutes should be sufficient.
  private static final long DEFAULT_SHUTDOWN_TIMEOUT = 30;
  private static final TimeUnit DEFAULT_SHUTDOWN_TIMEOUT_UNIT = TimeUnit.MINUTES;

  // Use a thread group purely as a debugging aid to help enumerate the threads we should
  // print an


e|QID|39998|M|68.41,68.00|N|Auto turned in when complete.|
T Stem the Tide|QID|40003|M|70.22,69.50|N|To Vethir.|
T Break the Spine|QID|40004|M|70.22,69.50|N|To Vethir.|
A Stormheim's Salvation|QID|40005|PRE|40003&40004|M|70.22,69.50|N|From Vethir.|
C Stormheim's Salvation|QID|40005|M|70.22,69.50|CHAT|N|Ask Vethir for a ride to where Skovald is.|
C Stormheim's Salvation|QID|40005|M|70.94,70.16|N|God-King Skovald defeated.|
T Stormheim's Salvation|QID|40005|M|70.25,69.24|N|Ask Vethir for a ride back down so you can turn the quest in to Havi.|
A Securing the Aegis|QID|40072|PRE|40005|M|70.25,69.24|N|From Havi. This is a dungeon quest, so queue, call friends over or check it off and move on.|
H Return to Dalaran|QID|40072|M|70.52,69.24|U|140192|N|If you are doing this guide on rank 1, you are done now, except for the instance quest, hearth to Dalaran and/or your class hall and continue on your adventuring.|LEAD|39792|RANK|-1|
R Valdisdall|AVAILABLE|39984|M|63.00,48.61|N|On to Valdisdall for some optional quests, silvers and treasure.|PRE|40005|RANK|2|FLY|OLD|
A Remnants of the Past|QID|39984|M|63.00,48.61|N|From Watcher's Journal.|RANK|2|
C Remnants of the Past|QID|39984|M|60.75,46.12|QO|1|NC|N|Find the first clue.|RANK|2|
$ Small Treasure Chest|QID|40093|M|61.41,44.41|N|Loot for treasure and resources.|RANK|2|
K Kill Tarben|QID|40081|M|60.90,43.91;61.53,43.25|CS|QO|1|ITEM|129199|T|Tarben|N|Silver - Kill Tarben for a bit of treasure and resources.|RANK|2|RARE|
$ Small Treasure Chest|QID|40094|M|60.85,42.73|N|Use grapple to get on roof beam with chest.  Loot for resources and treasure.|RANK|2|
C Remnants of the Past|QID|39984|M|60.43,42.95|QO|4|NC|N|Fourth Clue is on this rotting longboat.|RANK|2|
$ Small Treasure Chest|QID|40082|M|58.04,47.51|N|Run up to the top of the tower to find a chest. Loot for a bit of treasure and resources.|RANK|2|
C Remnants of the Past|QID|39984|M|59.14,43.14|QO|2|NC|N|The second clue is back on the tideflats (ground level) on the crates here.|RANK|2|
C Remnants of the Past|QID|39984|M|59.77,45.05|QO|3|NC|N|Find the third clue.|RANK|2|
C Remnants of the Past|QID|39984|M|58.94,42.81|QO|5|NC|N|Enter the building with the red fog in the doorway.|RANK|2|
T Remnants of the Past|QID|39984|M|58.94,42.81|N|To Havi.|RANK|2|
A Scavenging the Shallows|QID|40046|PRE|399


PortTrigPortEnd;
var arFWPortTargPortStart=FWPortTrigTable.FWPortTargPortStart;
var arFWPortTargPortEnd=FWPortTrigTable.FWPortTargPortEnd;
var arFWPortTrigProtoType=FWPortTrigTable.FWPortTrigProtoType;
var arFWPortTrigTOD=FWPortTrigTable.FWPortTrigTOD;
var arFWPortTrigRowStatus=FWPortTrigTable.FWPortTrigRowStatus;

var FWFilterRules = new Container("FWFilterRules", "1.3.6.1.4.1.4115.1.20.1.1.4.17");
FWFilterRules.FWFilterProxy= new Scalar("FWFilterProxy","1.3.6.1.4.1.4115.1.20.1.1.4.17.1",2);
FWFilterRules.FWFilterCookies= new Scalar("FWFilterCookies","1.3.6.1.4.1.4115.1.20.1.1.4.17.2",2);
FWFilterRules.FWFilterJavaApplets= new Scalar("FWFilterJavaApplets","1.3.6.1.4.1.4115.1.20.1.1.4.17.3",2);
FWFilterRules.FWFilterActiveX= new Scalar("FWFilterActiveX","1.3.6.1.4.1.4115.1.20.1.1.4.17.4",2);
FWFilterRules.FWFilterPopupWnds= new Scalar("FWFilterPopupWnds","1.3.6.1.4.1.4115.1.20.1.1.4.17.5",2);
FWFilterRules.FWBlockFragIPPkts= new Scalar("FWBlockFragIPPkts","1.3.6.1.4.1.4115.1.20.1.1.4.17.6",2);
FWFilterRules.FWPortScanProtect= new Scalar("FWPortScanProtect","1.3.6.1.4.1.4115.1.20.1.1.4.17.7",2);
FWFilterRules.FWIPFloodDetect= new Scalar("FWIPFloodDetect","1.3.6.1.4.1.4115.1.20.1.1.4.17.8",2);
var arFWFilterProxy=FWFilterRules.FWFilterProxy;
var arFWFilterCookies=FWFilterRules.FWFilterCookies;
var arFWFilterJavaApplets=FWFilterRules.FWFilterJavaApplets;
var arFWFilterActiveX=FWFilterRules.FWFilterActiveX;
var arFWFilterPopupWnds=FWFilterRules.FWFilterPopupWnds;
var arFWBlockFragIPPkts=FWFilterRules.FWBlockFragIPPkts;
var arFWPortScanProtect=FWFilterRules.FWPortScanProtect;
var arFWIPFloodDetect=FWFilterRules.FWIPFloodDetect;

var FWDDNSObjs = new Container("FWDDNSObjs", "1.3.6.1.4.1.4115.1.20.1.1.4.18");
FWDDNSObjs.FWDDNSEnable= new Scalar("FWDDNSEnable","1.3.6.1.4.1.4115.1.20.1.1.4.18.1",2);
FWDDNSObjs.FWDDNSType= new Scalar("FWDDNSType","1.3.6.1.4.1.4115.1.20.1.1.4.18.2",2);
FWDDNSObjs.FWDDNSUserHame= new Scalar("FWDDNSUserHame","1.3.6.1.4.1.4115.1.20.1.1.4.18.3",4);
FWDDNSObjs.FWDDNSPassword= new Scalar("FWDDNSPassword","1.3.6.1.4.1.4115.1.20.1.1.4.18.4",4);
FWDDNSObjs.FWDDNSDomainName= new Scalar("FW


else DEFENDERS_OBJECTIVE_ENTITY = GetEntityByName( "cp"..phase.."_cap" ) end
		UpdateTeamObjectiveIcon( GetTeam(attackers), ATTACKERS_OBJECTIVE_ENTITY )
		UpdateTeamObjectiveIcon( GetTeam(defenders), DEFENDERS_OBJECTIVE_ENTITY )

		setup_tobase_timer()
		update_hud()
	end
end

function respawn_all()
	RespawnAllPlayers()
end

function round_end()

		phase = 1

		if attackers == Team.kBlue then
			attackers = Team.kRed
			defenders = Team.kBlue
		else
			roundnumber = roundnumber + 1
			attackers = Team.kBlue
			defenders = Team.kRed
			AddHudTextToAll("finalround_text", "ROUND "..roundnumber, 20, od_hudstatusicony+5, 3, 0, 2)
		end

		--ten minutes until the time limit, call it quits
		if (GetServerTime() > 60 * timelimit - 600) and lastround == false and attackers == Team.kBlue then
			lastround = true
			AddHudTextToAll("finalround_text", "FINAL ROUND", 20, od_hudstatusicony+5, 3, 0, 2)
			--ConsoleToAll("declaring last round: "..(timelimit - GetServerTime()/60).." minutes left until original map limit")
		end

		-- set all flag teams to new attackers
		flags_set_team( attackers )

		-- switch them team names
		SetTeamName( attackers, "Attackers" )
		SetTeamName( defenders, "Defenders" )

		-- respawn the players
		RespawnAllPlayers()
		setup_door_timer("start_gate", INITIAL_ROUND_DELAY)

      --Telling players what's up
		SmartTeamMessage(GetTeam(defenders), "You are now on defense. Move to command point 1", "You are now on Offense. When the gates open, attack!")
		SmartTeamSpeak(GetTeam(attackers), "AD_ATTACK", "AD_DEFEND")

		if blueScore > redScore then
			AddSchedule("WinningSpeak", 3, SmartTeamSpeak, GetTeam(Team.kBlue), "WINNING_YOURTEAM", "WINNING_ENEMYTEAM")
		elseif redScore > blueScore then
			AddSchedule("WinningSpeak", 3, SmartTeamSpeak, GetTeam(Team.kRed), "WINNING_YOURTEAM", "WINNING_ENEMYTEAM")
		end

		current_flag = "cp1_flag"

		-- enable the first flag
		cp1_flag.enabled = true
		cp1_flag.status = 0
		local flag = GetInfoScriptByName("cp1_flag")
		if flag then
			flag:Restore()
			flag:SetSkin(teamskins[attackers])
		end

		-- change objective icon
		ATTACKERS_OBJECTIVE_ENTITY = flag
		DEFENDERS_OBJECTIVE_ENTITY = GetEntityByName( "cp"..phase.."_cap" )
		UpdateTeamObjectiveIcon( GetTeam(attackers), ATTACKERS_OBJECTIVE_ENTITY )
		UpdateTeamObjectiveIcon( GetTeam(defenders), DEFENDERS_OBJECTIVE_ENTITY )

		update_hud()

		-- run custom round reset stuff
		onroundreset()
end

function setup_door_timer(doorname, duration)
	CloseDoor(doorname)
	AddSchedule("round_start", duration, round_start, doorname)
	AddSchedule("round_30secwarn", duration-30, round_30secwarn)
	AddSchedule("round_10secwarn", duration-10, round_10secwarn)
	AddSchedule("round_5secwarn", duration-5, round_5secwarn)
	AddSchedule("round_4secwarn", duration-4, round_4secwarn)
	AddSchedule("round_3secwarn", duration-3, round_3secwarn


ta-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[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]{position:relative}.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[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data


t(HU-VirtualPI[@HUStatus='P'])", is("1")));
		assertThat(cuToSplitXML, hasXPath("count(HU-VirtualPI/Storage[@M_Product_Value='Tomato' and @Qty='39.000' and @C_UOM_Name='Kg'])", is("1")));

		final Node newTUXML = HUXmlConverter.toXml(newTUs.get(0));

		assertThat(newTUXML, hasXPath("count(HU-TU_Bag[@HUStatus='P'])", is("1")));
		assertThat(newTUXML, hasXPath("string(HU-TU_Bag/@HUPlanningReceiptOwnerPM)", is(Boolean.toString(isOwnPackingMaterials))));
		assertThat(newTUXML, hasXPath("count(HU-TU_Bag/Storage[@M_Product_Value='Tomato' and @Qty='1.000' and @C_UOM_Name='Kg'])", is("1")));
	}

	@Theory
	public void testRealStandaloneTU_To_NewLU(
			@FromDataPoints("isOwnPackingMaterials") final boolean isOwnPackingMaterials)
	{
		// prepare the existing TU
		final I_M_HU cuHU = mkRealCUWithTUToSplit("20");
		final I_M_HU tuToSplit = handlingUnitsDAO.retrieveParent(cuHU);

		final I_M_ReceiptSchedule rs1 = create_receiptSchedule_for_CU(cuHU, "20");
		final TableRecordReference rs1TableRef = TableRecordReference.of(rs1);
		{ // verify that cuHU and rs1 are properly linked
			final List<IHUDocument> rs1HuDocument = huDocumentFactoryService.createHUDocuments(data.helper.getHUContext().getCtx(), rs1TableRef.getTableName(), rs1TableRef.getRecord_ID());
			assertThat(rs1HuDocument.size(), is(1));
			assertThat(rs1HuDocument.get(0).getAssignedHandlingUnits().stream().anyMatch(hu -> hu.getM_HU_ID() == cuHU.getM_HU_ID() || hu.getM_HU_ID() == tuToSplit.getM_HU_ID()), is(true));
		}

		assertThat(handlingUnitsBL.isAggregateHU(tuToSplit), is(false)); // guard; make sure it's "real"

		// invoke the method under test
		final List<I_M_HU> newLUs = HUTransformService.newInstance(data.helper.getHUContext())
				.tuToNewLUs(tuToSplit,
						QtyTU.ofString("4"), // tuQty=4; we only have 1 TU in the source which only holds 20kg, so we will expect the TU to be moved
						data.piLU_Item_IFCO,
						isOwnPackingMaterials)
				.getLURecords();

		assertThat(newLUs.size(), is(1)); // we transfered 20kg, the target TUs are still IFCOs one IFCO still holds 40kg, one LU holds 5 IFCOS, so we expect one LU with one IFCO to suffice
		// data.helper.commitAndDumpHU(newLUs.get(0));
		// the LU shall contain 'tuToSplit'
		final Node newLUXML = HUXmlConverter.toXml(newLUs.get(0));
		assertThat(newLUXML, not(hasXPath("HU-LU_Palet/M_HU_Item_Parent_ID"))); // verify that the LU has no parent HU
		assertThat(newLUXML, hasXPath("string(HU-LU_Palet/@HUPlanningReceiptOwnerPM)", is(Boolean.toString(isOwnPackingMaterials))));

		assertThat(newLUXML, hasXPath("string(HU-LU_Palet/Item[@ItemType='HU']/@M_HU_PI_Item_ID)", is(Integer.toString(data.piLU_Item_IFCO.getM_HU_PI_Item_ID()))));
		assertThat(newLUXML, hasXPath("string(HU-LU_Palet/Item[@ItemType='HU']/HU-TU_IFCO/@M_HU_ID)", is(


// <copyright file="PurchaseFacade.cs" company="Automate The Planet Ltd.">
// Copyright 2022 Automate The Planet Ltd.
// 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.
// </copyright>
// <author>Anton Angelov</author>
// <site>http://automatetheplanet.com/</site>

using AdvancedStrategyDesignPattern.Data;
using AdvancedStrategyDesignPattern.Pages.ItemPage;
using AdvancedStrategyDesignPattern.Pages.PlaceOrderPage;
using AdvancedStrategyDesignPattern.Pages.PreviewShoppingCartPage;
using AdvancedStrategyDesignPattern.Pages.ShippingAddressPage;
using AdvancedStrategyDesignPattern.Pages.ShippingPaymentPage;
using AdvancedStrategyDesignPattern.Pages.SignInPage;

namespace AdvancedStrategyDesignPattern.Base;

public class PurchaseFacade
{
    public void PurchaseItemSalesTax(string itemUrl, string itemPrice, string taxAmount, ClientLoginInfo clientLoginInfo, ClientPurchaseInfo clientPurchaseInfo)
    {
        PurchaseItemInternal(it


-->

            </script>

                Same-Day

                <button id="button_Home_Ancillary_1" tabindex="0" class="top-nav-arrow-button hidden">

                    menu
                </button>


p:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: rgb(253.53, 253.62, 253.7);--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: rgb(253.53, 253.62, 253.7);--bs-btn-hover-bg: rgb(130.05, 137.7, 144.5);--bs-btn-hover-border-color: rgb(122.7, 130.8, 138);--bs-btn-focus-shadow-rgb: 130, 137, 144;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(137.4, 144.6, 151);--bs-btn-active-border-color: rgb(122.7, 130.8, 138);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffffff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}nav.quarto-secondary-nav.color-navbar{background-color:#030316;color:rgb(151.68,151.68,159.47)}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:rgb(151.68,151.68,159.47)}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! dark */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-


map{ case (pull, issue) =>
                    #@issue.issueId
                    @if(issue.closed) {
                      @if(info.isMerged){
                        Merged
                      } else {
                        Closed
                      }
                    } else {
                      Open
                    }
                  }.getOrElse{

                      helpers.urlEncode(parent) + ":" + helpers.encodeRefName(repository.repository.defaultBranch)
                    }.getOrElse {
                      helpers.encodeRefName(repository.repository.defaultBranch)
                    }}...@{helpers.encodeRefName(branch.name)}" class="btn btn-default btn-sm">@if(context.loginAccount.isDefined){Create pull request} else {Compare}
                  }
                  @if(hasWritePermission){

                    @if(prs.exists(!_._2.closed)){

                    } else {
                      @if(isProtected || repository.repository.defaultBranch == branch.name) {

                      } else {

                      }
                    }

                  }
                }
              }

      }

  }
}

@(active: String,
  issue: gitbucket.core.model.Issue,
  pullreq: gitbucket.core.model.PullRequest,
  commits: Seq[gitbucket.core.util.JGitUtil.CommitInfo],
  comments: Seq[gitbucket.core.model.Comment],
  changedFileSize: Int,
  isManageable: Boolean,
  repository: gitbucket.core.service.RepositoryService.RepositoryInfo,
  flash: Map[String, String] = Map.empty)(body: => Html)(implicit context: gitbucket.core.controller.Context)
@import gitbucket.core.view.helpers
@import gitbucket.core.model.Comment
@import gitbucket.core.model.CommitComments
@import gitbucket.core.model.IssueComment
@gitbucket.core.html.main(s"${issue.title} - Pull request #${issue.issueId} - ${repository.owner}/${repository.name}", Some(repository)) {
  @gitbucket.core.html.menu("pulls


wer()
   if v=="komm": break

print("2. variandt -while tingimusega-")
v=""
while v!="komm":
   v=input("Tahan komme!").lower()

#Nädala päevad
paevad=["Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev","Pühapäev"]
tunnid=["8 tundi","9 tundi","5 tundi","8 tundi","6 tundi","tunde pole","tunde pole"]
for i in range(7):
   print(paevad[i]+"  "+tunnid[i])

#8
arve_nr=datetime.now()
print(arve_nr)
tsekk="Arve: "+str(arve_nr)+"\nToode Hind Kogus Summa\n"
summa=0
tooded=["Piim","Leib","Saia"]
for i in range(3):
   toode=tooded[i]
   hind=randint(50,150)/100
   v=input("Toode:"+toode+"Hind"+str(hind)+"\nKas tahad osta?").lower()
   if v=="jah":
       mitu=int(input("Mitu"))
       tsekk+=toode+" "+str(hind)+" "+str(mitu)+" "+str(mitu*hind)+"\n"
       summa+=mitu*hind

tsekk+="Kokku maksta: "+str(summa)
print(tsekk)


_Handler
.extern FreeRTOS_SWI_Handler

.section .vectors
_vector_table:
_freertos_vector_table:
	B	  _boot
	B	  FreeRTOS_Undefined
	ldr   pc, _swi
	B	  FreeRTOS_PrefetchAbortHandler
	B	  FreeRTOS_DataAbortHandler
	NOP	  /* Placeholder for address exception vector*/
	LDR   PC, _irq
	B	  FreeRTOS_FIQHandler

_irq:   .word FreeRTOS_IRQ_Handler
_swi:   .word FreeRTOS_SWI_Handler

.align 4
FreeRTOS_FIQHandler:			/* FIQ vector handler */
	stmdb	sp!,{r0-r3,r12,lr}	/* state save from compiled code */
FIQLoop:
	blx	FIQInterrupt			/* FIQ vector */
	ldmia	sp!,{r0-r3,r12,lr}	/* state restore from compiled code */
	subs	pc, lr, #4			/* adjust return */

.align 4
FreeRTOS_Undefined:				/* Undefined handler */
	stmdb	sp!,{r0-r3,r12,lr}		/* state save from compiled code */
	ldr     r0, =UndefinedExceptionAddr
	sub     r1, lr, #4
	str     r1, [r0]            		/* Store address of instruction causing undefined exception */

	blx	UndefinedException		/* UndefinedException: call C function here */
	ldmia	sp!,{r0-r3,r12,lr}		/* state restore from compiled code */
	movs	pc, lr

.align 4
FreeRTOS_DataAbortHandler:		/* Data Abort handler */
#ifdef CONFIG_ARM_ERRATA_775420
	dsb
#endif
	stmdb	sp!,{r0-r3,r12,lr}	/* state save from compiled code */
	ldr     r0, =DataAbortAddr
	sub     r1, lr, #8
	str     r1, [r0]            /* Store address of instruction causing undefined exception */
	blx	DataAbortInterrupt		/*DataAbortInterrupt :call C function here */
	ldmia	sp!,{r0-r3,r12,lr}	/* state restore from compiled code */
	subs	pc, lr, #4			/* adjust return */

.align 4
FreeRTOS_PrefetchAbortHandler:	/* Prefetch Abort handler */
#ifdef CONFIG_ARM_ERRATA_775420
	dsb
#endif
	stmdb	sp!,{r0-r3,r12,lr}	/* state save from compiled code */
	ldr     r0, =PrefetchAbortAddr
	sub     r1, lr, #4
	str     r1, [r0]            /* Stores instruction causing prefetch abort */
	blx	PrefetchAbortInterrupt	/* PrefetchAbortInterrupt: call C function here */
	ldmia	sp!,{r0-r3,r12,lr}	/* state restore from compiled code */
	subs	pc, lr, #4			/* adjust return */

.align 4
.type vPortInstallFreeRTOSVectorTable, %function
vPortInstallFreeRTOSVectorTable:

	/* Set VBAR to the vector table that contains the FreeRTOS handlers. */
	ldr	r0, =_freertos_vector_table
	mcr	p15, 0, r0, c12, c0, 0
	dsb
	isb
	bx lr

.end


eturn &resp, decoder.Decode(&resp)
	case codeListResourcesRequest:
		var resp ListResources
		return &resp, decoder.Decode(&resp)
	case codeListModulesRequest:
		var resp ListModules
		return &resp, decoder.Decode(&resp)
	case codeInitializeModuleReaderRequest:
		var resp InitializeModuleReader
		return &resp, decoder.Decode(&resp)
	case codeInitializeResourceReaderRequest:
		var resp InitializeResourceReader
		return &resp, decoder.Decode(&resp)
	case codeCloseExternalProcess:
		var resp CloseExternalProcess
		return &resp, decoder.Decode(&resp)
	default:
		panic(fmt.Sprintf("Unknown code: %d", c))
	}
}
package util

import (
	"context"
	"errors"
	"fmt"
	"time"

	ipld "github.com/ipfs/go-ipld-format"

	blocks "github.com/ipfs/go-block-format"
	"github.com/ipfs/go-cid"
	blockstore "github.com/ipfs/go-ipfs-blockstore"
	"golang.org/x/xerrors"
	"gorm.io/gorm"
)

type TrackingBlockstore struct {
	bs        blockstore.Blockstore
	db        *gorm.DB
	cidReq    func(context.Context, cid.Cid) (blocks.Block, error)
	buffer    map[cid.Cid]accesses
	getCh     chan cid.Cid
	hasCh     chan cid.Cid
	countsReq chan getCountsReq
	accessReq chan accessReq
}

type accesses struct {
	Last time.Time
	Get  int
	Has  int
}

func NewTrackingBlockstore(bs blockstore.Blockstore, db *gorm.DB) *TrackingBlockstore {
	cidReq := func(context.Context, cid.Cid) (blocks.Block, error) {
		return nil, errors.New("NewTrackingBlockstore: cidReq not set")
	}

	tbs := &TrackingBlockstore{
		bs:        bs,
		db:        db,
		cidReq:    cidReq,
		buffer:    make(map[cid.Cid]accesses),
		getCh:     make(chan cid.Cid, 32),
		hasCh:     make(chan cid.Cid, 32),
		countsReq: make(chan getCountsReq, 32),
		accessReq: make(chan accessReq, 32),
	}

	go tbs.coalescer()

	return tbs
}

var _ blockstore.Blockstore = (*TrackingBlockstore)(nil)

func (tbs *TrackingBlockstore) SetCidReqFunc(f func(context.Context, cid.Cid) (blocks.Block, error)) {
	tbs.cidReq = f
}

func (tbs *TrackingBlockstore) Under() blockstore.Blockstore {
	return tbs.bs
}

type getCountsReq struct {
	req  []Object
	resp chan []int
}

func (tbs *TrackingBlockstore) GetCounts(objects []Object) ([]int, error) {
	req := getCountsReq{
		req:  objects,
		resp: make(chan []int),
	}

	tbs.countsReq <- req

	resp := <-req.resp

	return resp, nil
}

func (tbs *TrackingBlockstore) coalescer() {
	ticker := time.Tick(time.Minute * 10)

	for {
		select {
		case c := <-tbs.getCh:
			acc := tbs.buffer[c]
			acc.Get++
			acc.Last = time.Now()
			tbs.buffer[c] = acc
		case c := <-tbs.hasCh:
			acc := tbs.buffer[c]
			acc.Has++
			tbs.buffer[c] = acc
		case req := <-tbs.countsReq:
			resp := make([]int, len(req.req))
			for i, o := range req.req {
				resp[i] = tbs.buffer[o.Cid.CID].Get
			}
			req.resp <- resp
		case req := <-tbs.accessReq:
			acc := tbs.buffer[req.c]
			req.resp <- acc


, ymm29, YMMWORD PTR [rdx+4064]	 # AVX512{F,VL} Disp8
	vfmaddsub213ps	ymm30, ymm29, YMMWORD PTR [rdx+4096]	 # AVX512{F,VL}
	vfmaddsub213ps	ymm30, ymm29, YMMWORD PTR [rdx-4096]	 # AVX512{F,VL} Disp8
	vfmaddsub213ps	ymm30, ymm29, YMMWORD PTR [rdx-4128]	 # AVX512{F,VL}
	vfmaddsub213ps	ymm30, ymm29, [rdx+508]{1to8}	 # AVX512{F,VL} Disp8
	vfmaddsub213ps	ymm30, ymm29, [rdx+512]{1to8}	 # AVX512{F,VL}
	vfmaddsub213ps	ymm30, ymm29, [rdx-512]{1to8}	 # AVX512{F,VL} Disp8
	vfmaddsub213ps	ymm30, ymm29, [rdx-516]{1to8}	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30, xmm29, xmm28	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30{k7}, xmm29, xmm28	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30{k7}{z}, xmm29, xmm28	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30, xmm29, XMMWORD PTR [rcx]	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234]	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30, xmm29, [rcx]{1to2}	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30, xmm29, XMMWORD PTR [rdx+2032]	 # AVX512{F,VL} Disp8
	vfmaddsub231pd	xmm30, xmm29, XMMWORD PTR [rdx+2048]	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30, xmm29, XMMWORD PTR [rdx-2048]	 # AVX512{F,VL} Disp8
	vfmaddsub231pd	xmm30, xmm29, XMMWORD PTR [rdx-2064]	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30, xmm29, [rdx+1016]{1to2}	 # AVX512{F,VL} Disp8
	vfmaddsub231pd	xmm30, xmm29, [rdx+1024]{1to2}	 # AVX512{F,VL}
	vfmaddsub231pd	xmm30, xmm29, [rdx-1024]{1to2}	 # AVX512{F,VL} Disp8
	vfmaddsub231pd	xmm30, xmm29, [rdx-1032]{1to2}	 # AVX512{F,VL}
	vfmaddsub231pd	ymm30, ymm29, ymm28	 # AVX512{F,VL}
	vfmaddsub231pd	ymm30{k7}, ymm29, ymm28	 # AVX512{F,VL}
	vfmaddsub231pd	ymm30{k7}{z}, ymm29, ymm28	 # AVX512{F,VL}
	vfmaddsub231pd	ymm30, ymm29, YMMWORD PTR [rcx]	 # AVX512{F,VL}
	vfmaddsub231pd	ymm30, ymm29, YMM


"v": "3"}]}, {"key": "tag_label_name", "name": "为你推荐", "value": [{"n": "为你推荐", "v": ""}, {"n": "高分必看", "v": "高分必看"}, {"n": "卖座电影", "v": "卖座电影"}, {"n": "小说改编", "v": "小说改编"}, {"n": "铁血硬汉", "v": "铁血硬汉"}, {"n": "视效大片", "v": "视效大片"}, {"n": "漫画改编", "v": "漫画改编"}, {"n": "绝地求生", "v": "绝地求生"}, {"n": "真人真事改编", "v": "真人真事改编"}, {"n": "范伟", "v": "范伟"}, {"n": "火爆枪战", "v": "火爆枪战"}, {"n": "影史经典", "v": "影史经典"}, {"n": "拯救世界", "v": "拯救世界"}, {"n": "万茜", "v": "万茜"}, {"n": "马思纯", "v": "马思纯"}, {"n": "王俊凯", "v": "王俊凯"}, {"n": "豪华阵容", "v": "豪华阵容"}, {"n": "李玉", "v": "李玉"}, {"n": "无厘头喜剧", "v": "无厘头喜剧"}, {"n": "超能力", "v": "超能力"}, {"n": "欢喜搭档", "v": "欢喜搭档"}]}], "综艺": [{"key": "main_area", "name": "全部地区", "value": [{"n": "全部地区", "v": ""}, {"n": "内地", "v": "中国内地"}, {"n": "中国台湾", "v": "中国台湾"}, {"n": "美国", "v": "美国"}, {"n": "英国", "v": "英国"}]}, {"key": "tags", "name": "全部类型", "value": [{"n": "全部类型", "v": ""}, {"n": "偶像", "v": "偶像"}, {"n": "舞蹈", "v": "舞蹈"}, {"n": "音乐", "v": "音乐"}, {"n": "情感", "v": "情感"}, {"n": "喜剧", "v": "喜剧,搞笑"}, {"n": "体育", "v": "体育"}, {"n": "游戏", "v": "游戏"}, {"n": "相声", "v": "相声"}, {"n": "婚恋", "v": "婚恋"}, {"n": "时尚", "v": "时尚"}, {"n": "晚会", "v": "晚会"}, {"n": "明星访谈", "v": "明星访谈"}, {"n": "亲子", "v": "亲子"}, {"n": "生活", "v": "生活"}, {"n": "文化", "v": "文化"}, {"n": "美食", "v": "美食"}, {"n": "旅游", "v": "旅游"}, {"n": "益智", "v": "益智"}]}, {"key": "year", "name": "全部年份", "value": [{"n": "全部年份", "v": ""}, {'n': '2024', 'v': '2024'}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {"n": "2021", "v": "2021"}, {"n": "2020", "v": "2020"}, {"


87",
    "name": "\u86cb\u58f3\u9ec4",
    "pinyin": "dankehuang"
  },
  {
    "CMYK": [0, 32, 52, 0],
    "RGB": [247, 193, 115],
    "hex": "#f7c173",
    "name": "\u8089\u8272",
    "pinyin": "rouse"
  },
  {
    "CMYK": [0, 35, 89, 0],
    "RGB": [251, 185, 41],
    "hex": "#fbb929",
    "name": "\u9e45\u638c\u9ec4",
    "pinyin": "ezhanghuang"
  },
  {
    "CMYK": [0, 36, 93, 0],
    "RGB": [251, 182, 18],
    "hex": "#fbb612",
    "name": "\u9e21\u86cb\u9ec4",
    "pinyin": "jidanhuang"
  },
  {
    "CMYK": [0, 35, 94, 0],
    "RGB": [252, 183, 10],
    "hex": "#fcb70a",
    "name": "\u9f2c\u9ec4",
    "pinyin": "youhuang"
  },
  {
    "CMYK": [0, 44, 84, 0],
    "RGB": [249, 166, 51],
    "hex": "#f9a633",
    "name": "\u69b4\u843c\u9ec4",
    "pinyin": "liuehuang"
  },
  {
    "CMYK": [0, 45, 92, 0],
    "RGB": [251, 164, 20],
    "hex": "#fba414",
    "name": "\u6de1\u6a58\u6a59",
    "pinyin": "danjucheng"
  },
  {
    "CMYK": [0, 47, 92, 0],
    "RGB": [252, 161, 6],
    "hex": "#fca106",
    "name": "\u6787\u6777\u9ec4",
    "pinyin": "pipahuang"
  },
  {
    "CMYK": [0, 47, 92, 0],
    "RGB": [252, 161, 4],
    "hex": "#fca104",
    "name": "\u6a59\u76ae\u9ec4",
    "pinyin": "chengpihuang"
  },
  {
    "CMYK": [0, 56, 87, 0],
    "RGB": [252, 140, 35],
    "hex": "#fc8c23",
    "name": "\u5317\u74dc\u9ec4",
    "pinyin": "beiguahuang"
  },
  {
    "CMYK": [0, 54, 92, 0],
    "RGB": [250, 142, 22],
    "hex": "#f28e16",
    "name": "\u674f\u9ec4",
    "pinyin": "xinghuang"
  },
  {
    "CMYK": [0, 51, 91, 0],
    "RGB": [255, 153, 0],
    "hex": "#ff9900",
    "name": "\u96c4\u9ec4",
    "pinyin": "xionghuang"
  },
  {
    "CMYK": [0, 56, 91, 0],
    "RGB": [251, 139, 5],
    "hex": "#fb8b05",
    "name": "\u4e07\u5bff\u83ca\u9ec4",
    "pinyin": "wanshoujuhuang"
  },
  {
    "CMYK": [10, 13, 35, 1],
    "RGB": [233, 221, 182],
    "hex": "#e9ddb6",


 = PlayerData(coordinates=event.coordinates)

    FREEZE_FRAME_FPS = 25
    frame_id = int(
        event.period.start_timestamp.total_seconds()
        + event.timestamp.total_seconds() * FREEZE_FRAME_FPS
    )

    frame = create_frame(
        frame_id=frame_id,
        ball_coordinates=Point3D(
            x=event.coordinates.x, y=event.coordinates.y, z=0
        ),
        players_data=players_data,
        period=event.period,
        timestamp=event.timestamp,
        ball_state=event.ball_state,
        ball_owning_team=event.ball_owning_team,
        other_data={"visible_area": visible_area},
    )

    return frame


	animation.setAnimationLoop( onAnimationFrame );

    // 	this.setAnimationLoop = function ( callback ) {

    // 		onAnimationFrameCallback = callback;

    // 	};

    // 	this.dispose = function () {};
  }
}
part of three_webgl;

class WebGLState {
  bool isWebGL2 = true;
  dynamic gl;
  WebGLExtensions extensions;
  WebGLCapabilities capabilities;

  late ColorBuffer colorBuffer;
  late DepthBuffer depthBuffer;
  late StencilBuffer stencilBuffer;

  late int maxTextures;

  var emptyTextures = <int, dynamic>{};
  late Map<int, int> equationToGL;
  late Map<int, int> factorToGL;

  Map<String, dynamic> get buffers =>
      {"color": colorBuffer, "depth": depthBuffer, "stencil": stencilBuffer};

  //

  Map<int, bool> enabledCapabilities = <int, bool>{};

  dynamic xrFramebuffer;
  Map currentBoundFramebuffers = {};
  WeakMap currentDrawbuffers = WeakMap();
  var defaultDrawbuffers = [];

  dynamic currentProgram;

  bool currentBlendingEnabled = false;

  int? currentBlending;
  int? currentBlendEquation;
  int? currentBlendSrc;
  int? currentBlendDst;
  int? currentBlendEquationAlpha;
  int? currentBlendSrcAlpha;
  int? currentBlendDstAlpha;
  bool? currentPremultipledAlpha;

  bool? currentFlipSided = false;
  int? currentCullFace;

  num? currentLineWidth;

  num? currentPolygonOffsetFactor;
  num? currentPolygonOffsetUnits;

  bool lineWidthAvailable = true;

  int? currentTextureSlot;
  var currentBoundTextures = <int, BoundTexture>{};

  late Vector4 currentScissor;
  late Vector4 currentViewport;

  dynamic scissorParam;
  dynamic viewportParam;

  WebGLState(this.gl, this.extensions, this.capabilities) {
    isWebGL2 = capabilities.isWebGL2;

    colorBuffer = ColorBuffer(gl);
    depthBuffer = DepthBuffer(gl);
    stencilBuffer = StencilBuffer(gl);

    colorBuffer.enable = enable;
    colorBuffer.disable = disable;

    depthBuffer.enable = enable;
    depthBuffer.disable = disable;

    stencilBuffer.enable = enable;
    stencilBuffer.disable = disable;

    maxTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);
    emptyTextures[gl.TEXTURE_2D] =
        createTexture(gl.TEXTURE_2D, gl.TEXTURE_2D, 1);
    emptyTextures[gl.TEXTURE_CUBE_MAP] =
        createTexture(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6);

    // init

    colorBuffer.setClear(0, 0, 0, 1, false);
    depthBuffer.setClear(1);
    stencilBuffer.setClear(0);

    enable(gl.DEPTH_TEST);
    depthBuffer.setFunc(LessEqualDepth);

    setFlipSided(false);
    setCullFace(CullFaceBack);
    enable(gl.CULL_FACE);

    setBlending(NoBlending, null, null, null, null, null, null, false);

    equationToGL = {
      AddEquation: gl.FUNC_ADD,
      SubtractEquation: gl.FUNC_SUBTRACT,
      ReverseSubtractEquation: gl.FUNC_REVERSE_SUBTRACT
    };

    equationToGL[MinEquation] = gl.MIN;
    equationToGL[MaxEquation] = gl.MAX;

    factorToGL = {
      ZeroFactor: gl.ZERO,
      OneFactor: gl.ONE,
      SrcColorFactor: gl.SRC_COLOR,
      SrcAlphaFactor: gl.SRC_AL


u0C2D\u0C4D", "\u0C2E\u0C4D", "\u0C2F\u0C4D", "\u0C30\u0C4D", "\u0C31\u0C4D", "\u0C32\u0C4D", "\u0C33\u0C4D", "\u0C35\u0C4D", "\u0C36\u0C4D", "\u0C37\u0C4D", "\u0C38\u0C4D", "\u0C39\u0C4D"] }, { tag: "blws" }, { tag: "haln" }, { tag: "psts", coverage: ["undefined\u0C4D"] }], "GF;Manjari": [{ tag: "abvm" }, { tag: "kern" }, { tag: "aalt" }, { tag: "akhn", coverage: ["\u0D15\u0D4D\u200D", "\u0D23\u0D4D\u200D", "\u0D28\u0D4D\u200D", "\u0D2E\u0D4D\u200D", "\u0D2F\u0D4D\u200D", "\u0D30\u0D4D\u200D", "\u0D32\u0D4D\u200D", "\u0D33\u0D4D\u200D"] }, { tag: "blwf", coverage: ["\u0D4D\u0D32", "\u0D32\u0D4D"] }, { tag: "blws", coverage: ["\u0D15", "\u0D17", "\u0D24", "\u0D2A", "\u0D2B", "\u0D2C", "\u0D2E", "\u0D32", "\u0D35", "\u0D36", "\u0D38", "\u0D39"] }, { tag: "half", coverage: ["\u0D15\u0D4D\u200D", "\u0D23\u0D4D\u200D", "\u0D28\u0D4D\u200D", "\u0D2E\u0D4D\u200D", "\u0D2F\u0D4D\u200D", "\u0D30\u0D4D\u200D", "\u0D32\u0D4D\u200D", "\u0D33\u0D4D\u200D"] }, { tag: "haln", coverage: ["\u0D15\u0D4D\u200D", "\u0D23\u0D4D\u200D", "\u0D28\u0D4D\u200D", "\u0D2E\u0D4D\u200D", "\u0D2F\u0D4D\u200D", "\u0D30\u0D4D\u200D", "\u0D32\u0D4D\u200D", "\u0D33\u0D4D\u200D"] }, { tag: "pref", coverage: ["\u0D4D\u0D30"] }, { tag: "pres", coverage: ["\u0D1C", "\u0D39", "\u0D15", "\u0D17", "\u0D18", "\u0D2E", "\u0D2A", "\u0D2B", "\u0D2C", "\u0D2D", "\u0D38", "\u0D1F", "\u0D21", "\u0D24", "\u0D26", "\u0D27", "\u0D35", "\u0D36", "\u0D4D\u0D30", "\u0D30", "\u0D32"] }, { tag: "pstf", coverage: ["\u0D4D\


/**
 * ClassWrite 输出的是字节数组，对于我们确认修改后的字节码是否符合预期用处并不大，
 * 在前面，我们是通过 File 文件流操作，将字节码输出到文件，然后利用 javap 指令来查看是否符合预期。
 * 在 ASM 中提供了 TraceClassVisitor 用来对我们的输出做检查，不必这么麻烦
 */
interface TraceClassVisitorDemo {
    var className: String
    var classVersion: Int

    fun getTraceInfo(): String
}

/**
 * 依照上面的 TraceClassVisitorDemo 为例
 */
fun main() {
    val classWriter = ClassWriter(0)
    /*
     使用 TraceClassVisitor，同时使用 System.out 流将结果输出。
     另外测试时还有一种写法，输出到文件。PrintWriter("asm_example/files/TraceClassVisitorDemo.class") 但是输出的文件通过 javap -v 指令查看会报错。
     详情可参照：https://stackoverflow.com/questions/63443099/asm-traceclassvisitor-output-file-is-error
     */
    val traceClassWriter =
        TraceClassVisitor(classWriter, PrintWriter(System.out))
    traceClassWriter.visit(
        Opcodes.V1_7,
        Opcodes.ACC_PUBLIC + Opcodes.ACC_INTERFACE + Opcodes.ACC_ABSTRACT,
        "com.andoter.asm_example.part2/TraceClassVisitorDemo",
        null,
        "java/lang/Object",
        null
    )
    traceClassWriter.visitSource("TraceClassVisitorDemo.class", null)
    traceClassWriter.visitField(Opcodes.ACC_PUBLIC+ Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "className", "Ljava/lang/String;", null, "").visitEnd()
    traceClassWriter.visitField(Opcodes.ACC_PUBLIC+ Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "classVersion", "I", null, 50).visitEnd()
    traceClassWriter.visitMethod(
        Opcodes.ACC_PUBLIC + Opcodes.ACC_ABSTRACT,
        "getTraceInfo",
        "()Ljava/lang/String;",
        null,
        null
    ).visitEnd()
    traceClassWriter.visitEnd()

    ClassOutputUtil.byte2File("asm_example/files/TraceClassVisitorDemo1.class", classWriter.toByteArray())
}package com.dengzii.plugin.template.model

import com.dengzii.plugin.template.Config
import junit.framework.TestCase
import org.apache.velocity.VelocityContext
import org.apache.velocity.util.StringUtils
import org.junit.Test

/**
 *
 * @author https://github.com/dengzii
 */
class FileTreeNodeTest : TestCase() {

    @Test
    fun testGetPlaceholders() {
        val root = FileTreeNode(null, "\${AAA}_\${BBB}_\${CCC_\${DDD}}", true)
        println(root.name)
        println(root.getPlaceholderInNodeName().joinToString(","))
        root.putPlaceholders(
            mapOf(
                Pair("AAA", "1"),
                Pair("BBB", "2"),
                Pair("CCC_4", "3"),
                Pair("DDD", "4"),
            )
        )
        println(root.getRealName())
    }

    @Test
    fun testPlaceholderCycle() {

    }

    @Test
    fun testFileTemplate() {
        FileTreeDsl {
            placeholder("PKG", "com.example")
            placeholder("F3", "f3")

            fileTemplate("f1.java", "file1.java")
            fileTemplate("f2.java", "ff2.java")
            fileTemplate("\${PKG}/f2.java", "file2.java")
            fileTemplate("f3.java", "file3.java")

            dir("root") {
                dir("a/b") {
                    dir("\${PKG}") {
                        file("f1.java")
                        file("f2.java")
                        file("\${F3}.java")

                    }


ltree4 = L1_2
  L2_2 = A0_2
  L1_2 = A0_2._safe_get_cmpt
  L3_2 = CS
  L3_2 = L3_2.UnityEngine
  L3_2 = L3_2.UI
  L3_2 = L3_2.InputField
  L4_2 = "Player1Level/InputField"
  L1_2 = L1_2(L2_2, L3_2, L4_2)
  A0_2.input_avatar_level1 = L1_2
  L2_2 = A0_2
  L1_2 = A0_2._safe_get_cmpt
  L3_2 = CS
  L3_2 = L3_2.UnityEngine
  L3_2 = L3_2.UI
  L3_2 = L3_2.InputField
  L4_2 = "Player2Level/InputField"
  L1_2 = L1_2(L2_2, L3_2, L4_2)
  A0_2.input_avatar_level2 = L1_2
  L2_2 = A0_2
  L1_2 = A0_2._safe_get_cmpt
  L3_2 = CS
  L3_2 = L3_2.UnityEngine
  L3_2 = L3_2.UI
  L3_2 = L3_2.InputField
  L4_2 = "Player3Level/InputField"
  L1_2 = L1_2(L2_2, L3_2, L4_2)
  A0_2.input_avatar_level3 = L1_2
  L2_2 = A0_2
  L1_2 = A0_2._safe_get_cmpt
  L3_2 = CS
  L3_2 = L3_2.UnityEngine
  L3_2 = L3_2.UI
  L3_2 = L3_2.InputField
  L4_2 = "Player4Level/InputField"
  L1_2 = L1_2(L2_2, L3_2, L4_2)
  A0_2.input_avatar_level4 = L1_2
  L2_2 = A0_2
  L1_2 = A0_2._safe_get_cmpt
  L3_2 = CS
  L3_2 = L3_2.UnityEngine
  L3_2 = L3_2.UI
  L3_2 = L3_2.Dropdown
  L4_2 = "LineupPreset/LevelDropDown"
  L1_2 = L1_2(L2_2, L3_2, L4_2)
  A0_2.drop_down_preset = L1_2
end
L0_1._on_bind = L1_1
return L0_1


ble)]
		[ArrayEditor(VariableType.GameObject)]
		public FsmArray rootGameObjects;

		Scene _scene;

		public override void Reset()
		{
			loadedMode = null;
			name = null;
			path = null;
			isValid = null;
			buildIndex = null;
			isLoaded = null;
			rootCount = null;
			rootGameObjects = null;
			isDirty = null;
		}

		public override void OnEnter()
		{
			DoGetSceneProperties();

			Finish();
		}

		void DoGetSceneProperties()
		{

			_scene = SendSceneLoadedEvent.lastLoadedScene;

			if (!name.IsNone) {
				loadedMode.Value = SendSceneLoadedEvent.lastLoadedMode;
			}

			if (!name.IsNone) {
				name.Value = _scene.name;
			}

			if (!buildIndex.IsNone) {
				buildIndex.Value = _scene.buildIndex;
			}

			if (!path.IsNone) {
				path.Value = _scene.path;
			}

			if (!isValid.IsNone) {
				isValid.Value = _scene.IsValid();
			}

			if (!isDirty.IsNone) {
				isDirty.Value = _scene.isDirty;
			}

			if (!isLoaded.IsNone) {
				isLoaded.Value = _scene.isLoaded;
			}

			if (!rootCount.IsNone) {
				rootCount.Value = _scene.rootCount;
			}

			if (!rootGameObjects.IsNone) {
				if (_scene.IsValid ()) {
					rootGameObjects.Values = _scene.GetRootGameObjects ();
				} else {
					rootGameObjects.Resize (0);
				}
			}
		}
	}
}

#endif


你有可能无法获得最新版本的 OpenCV，并且在某些情况下它可能不适用于当前虚拟环境或者缺少部分功能。而这些问题在程序编写过程中很难诊断。因此我们这里介绍从源代码进行编译的方法。

- 下载 OpenCV 4

首先，跳转到我们的工作目录并下载 opencv 和 opencv\_contrib。contrib 存储库包含额外的模块和功能，有的时候会用到。使用如下命令获得 OpenCV 源代码。

```
$ cd ~
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.0.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.0.zip
$ mv opencv-4.0.0 opencv
$ mv opencv_contrib-4.0.0 opencv_contrib

```

Show moreShow more icon

- 解压缩 OpenCV 4 文件

```
$ unzip opencv.zip
$ unzip opencv_contrib.zip

```

Show moreShow more icon

如果需要修改文件夹名字的话，请注意需要同时更新 CMake 中的路径。然后我们就可以开始设置环境了。

- 从源代码编译 OpenCV 4

首先进入 opencv 目录。创建一个名为 build 的文件夹。运行 workon 命令切换到 cv\_vr 虚拟环境中。执行 cmake 命令来编译源代码。

```
$ workon cv_vr
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D PYTHON3_LIBRARY=`python -c 'import subprocess ; import sys ; s = subprocess.check_output("python-config --configdir", shell=True).decode("utf-8").strip() ; (M, m) = sys.version_info[:2] ; print("{}/libpython{}.{}.dylib".format(s, M, m))'` \
-D PYTHON3_INCLUDE_DIR=`python -c 'import distutils.sysconfig as s; print(s.get_python_inc())'` \
-D PYTHON3_EXECUTABLE=$VIRTUAL_ENV/bin/python \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_EXAMPLES=ON ..

```

Show moreShow more icon

请注意一下输出的结果。以确保 Python3 的 Interpreter 和 numpy 都在 cv\_vr 虚拟环境中。如果在输出中找到 python3 Interpreter 和 numpy 的字样，确定他们的路径在类似“virtualenvs/cv\_vr/”目录下。如果没有看到，那很有可能是因为在执行 CMake 的时候没有在“cv\_vr”的虚拟环境中，针对这种情况，用户需要把当前的 build 删除并激活“cv


atppuccin_mocha_yellow_dark_scrim,
)

@Composable
fun CatppuccinMochaYellowTheme(
    useDarkTheme: Boolean = isSystemInDarkTheme(),
    content: @Composable() () -> Unit
) {
    val colors = if (!useDarkTheme) {
        CatppuccinMochaYellowLightColors
    } else {
        CatppuccinMochaYellowDarkColors
    }

    MaterialTheme(
        colorScheme = colors,
        content = content
    )
}

package net.deechael.esjzone.ui.theme.catppuccin.frappe

import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color

val catppuccin_frappe_rosewater_light_primary = Color(0xFF9C4330)
val catppuccin_frappe_rosewater_light_onPrimary = Color(0xFFFFFFFF)
val catppuccin_frappe_rosewater_light_primaryContainer = Color(0xFFFFDAD3)
val catppuccin_frappe_rosewater_light_onPrimaryContainer = Color(0xFF3E0500)
val catppuccin_frappe_rosewater_light_secondary = Color(0xFF775750)
val catppuccin_frappe_rosewater_light_onSecondary = Color(0xFFFFFFFF)
val catppuccin_frappe_rosewater_light_secondaryContainer = Color(0xFFFFDAD3)
val catppuccin_frappe_rosewater_light_onSecondaryContainer = Color(0xFF2C1510)
val catppuccin_frappe_rosewater_light_tertiary = Color(0xFF6E5D2E)
val catppuccin_frappe_rosewater_light_onTertiary = Color(0xFFFFFFFF)
val catppuccin_frappe_rosewater_light_tertiaryContainer = Color(0xFFF9E0A6)
val catppuccin_frappe_rosewater_light_onTertiaryContainer = Color(0xFF241A00)
val catppuccin_frappe_rosewater_light_error = Color(0xFFBA1A1A)
val catppuccin_frappe_rosewater_light_errorContainer = Color(0xFFFFDAD6)
val catppuccin_frappe_rosewater_light_onError = Color(0xFFFFFFFF)
val catppuccin_frappe_rosewater_light_onErrorContainer = Color(0xFF410002)
val catppuccin_frappe_rosewater_light_background = Color(0xFFFFFBFF)
val catppuccin_frappe_rosewater_light_onBackground = Color(0xFF201A19)
val catppuccin_frappe_rosewater_light_surface = Color(0xFFFFFBFF)
val catppuccin_frappe_rosewater_light_onSurface = Color(0xFF201A19)
val catppuccin_frappe_rosewater_light_surfaceVariant = Color(0xFFF5DDD9)
val catppuccin_frappe_rosewater_light_onSurfaceVariant = Color(0xFF534340)
val catppuccin_frappe_rosewater_light_outline = Color(0xFF85736F)
val catppuccin_frappe_rosewater_light_inverseOnSurface = Color(0xFFFBEEEB)
val catppuccin_frappe_rosewater_light_inverseSurface = Color(0xFF362F2D)
val catppuccin_frappe_rosewater_light_inversePrimary = Color(0xFFFFB4A4)
val catppuccin_frappe_rosewater_light_shadow = Color(0xFF000000)
val catppuccin_frappe_rosewater_light_surfaceTint = Color(0xFF9C4330)
val catppuccin_frappe_rosewater_light_outlineVariant = Color(0xFFD8C2BD)
val catppuccin_frappe_rosewater_light_scrim =


   HERO_3_PLUS_SILVER = 1,
            ///<summary> Hero 3+ Black | </summary>
            HERO_3_PLUS_BLACK = 2,
            ///<summary> Hero 4 Silver | </summary>
            HERO_4_SILVER = 3,
            ///<summary> Hero 4 Black | </summary>
            HERO_4_BLACK = 4,
            ///<summary>  | </summary>
            ENUM_END = 5,

        };

        ///<summary>  </summary>
        public enum GOPRO_BURST_RATE
        {
            ///<summary> 3 Shots / 1 Second | </summary>
            _3_IN_1_SECOND = 0,
            ///<summary> 5 Shots / 1 Second | </summary>
            _5_IN_1_SECOND = 1,
            ///<summary> 10 Shots / 1 Second | </summary>
            _10_IN_1_SECOND = 2,
            ///<summary> 10 Shots / 2 Second | </summary>
            _10_IN_2_SECOND = 3,
            ///<summary> 10 Shots / 3 Second (Hero 4 Only) | </summary>
            _10_IN_3_SECOND = 4,
            ///<summary> 30 Shots / 1 Second | </summary>
            _30_IN_1_SECOND = 5,
            ///<summary> 30 Shots / 2 Second | </summary>
            _30_IN_2_SECOND = 6,
            ///<summary> 30 Shots / 3 Second | </summary>
            _30_IN_3_SECOND = 7,
            ///<summary> 30 Shots / 6 Second | </summary>
            _30_IN_6_SECOND = 8,
            ///<summary>  | </summary>
            ENUM_END = 9,

        };

        ///<summary>  </summary>
        public enum LED_CONTROL_PATTERN
        {
            ///<summary> LED patterns off (return control to regular vehicle control) | </summary>
            OFF = 0,
            ///<summary> LEDs show pattern during firmware update | </summary>
            FIRMWAREUPDATE = 1,
            ///<summary> Custom Pattern using custom bytes fields | </summary>
            CUSTOM = 255,
            ///<summary>  | </summary>
            ENUM_END = 256,

        };

        ///<summary> Flags in EKF_STATUS message </summary>
        public enum EKF_STATUS_FLAGS
        {
            ///<summary> set if EKF's attitude estimate is good | </summary>
            EKF_ATTITUDE = 1,
            ///<summary> set if EKF's horizontal velocity estimate is good | </summary>
            EKF_VELOCITY_HORIZ = 2,
            ///<summary> set if EKF's vertical velocity estimate is good | </summary>
            EKF_VELOCITY_VERT = 4,
            ///<summary> set if EKF's horizontal position (relative) estimate is good | </summary>
            EKF_POS_HORIZ_REL = 8,
            ///<summary> set if EKF's horizontal position (absolute) estimate is good | </summary>
            EKF_POS_HORIZ_ABS = 16,
            ///<summary> set if EKF's vertical position (absolute) estimate is good | </summary>
            EKF_POS_VERT_ABS = 32,
            ///<summary> set if EKF's vertical position (above ground) estimate is good | </summary>
            EKF_POS_VERT_AGL = 64,
            ///<summary> EKF is in constant position mode and does not know it's absolute or relative position | </summary>
            EKF_CONST_POS_MODE = 128,
            ///<summary> set if EKF's predicted horizontal position (relative) estimate is good | </summary>
            EKF_PRED_POS_HORIZ_REL = 256,
            ///


eepcopyenvironrserverrrJr>rr:rrrHrrSrWrBbase64binasciirXrdecodebytesdecodeErrorUnicodeErrorget_content_typeget_allrr^
setdefaultrr3rrrrrnrorwaitpidselectrQreadwaitstatus_to_exitcoderqsetuidr(dup2r*execvehandle_errorrequest_exit
subprocessrrrrlist2cmdlinerFr1rDPopenPIPE_sockrecvcommunicaterrr7r
returncode))rdirrestrLinextdirnextrest	scriptdirrprwscript
scriptname
scriptfileispyruqrestrrrlengthrruaco
cookie_strk
decoded_queryrrpidstsexitcodercmdlineinterpnbytespdatarrstatuss)                                         rrzCGIHTTPRequestHandler.run_cgis<MM	TSy4IIc3s8A:&1f2AhGAaCDzH++G4Iww}}Y'#XTIIc3s8A:.1f,a
IIcN68T!"XDFDF3Y'
((4
ww~~j)OO$$)J6
8
ww~~j)OO$$5
B
D
~~j)>>%%j1((7*DFmmBJJ'!%!4!4!6![[44M#, !%!6!6 !8!89M $%%d+!K!%!4!4V!<'M#N!003M((9
)//1M=!Q&'#0#3K  #))+w6	B(5a(8(?(?(H
(.(:(:=(I(.w&
)6(;(;C(@
}-21>q1AC
.<<N+3"&,,"?"?"AC"&,,~">C!!"23$*C !,,""9-")C%%h3 XXf-M
\\

l
+
%'C!"
D$,,..x<
=YYr]
!+C
D	"ANN1b!	"
:==*AB

c3/
>>8D-'M*\FJJ'')Cax::c1-SmmTZZL"b!<Q?::??1-mmTZZL"b!<Q?44S9NN%:8*#EF

IIf%

))+Q/

))+Q/		*dC0
!lG~~j)<<>**73#CR[6"#;6F!4.72%u%]J,C,CG,LM
V  '1(2(2'*	!#A||!!#v-&1*zzv.--!1!1 2BA>qAzz'',,Q/--!1!1 2BA>qA]]40NFFJJV$tV,
HHNN
HHNN\\F;VD  !78_%NNL9z

((t7J7JK
"z*

sP4c
c&A3c6e
c#"c#&	c3/c62c33c66Ad?eeN)rrrrrkrrrbufsizerr
rrrrrrrrrrsGF#IH0<4"8,O /
x9rrctj|tjtjd}t	t|\}}}}}||fS)N)typeflags)rgetaddrinfoSOCK_STREAM
AI_PASSIVEnextiter)addressinfosfamilyrproto	canonnamesockaddrs       r_get_best_familyrsM

E
04DK/@,FD%H8rri@c~t||\|_}||_|||5}|jj	dd\}}d|vrd|dn|}td|d|d|d|d			|j
dddy#t$r#td
tjdY4wxYw#1swYyxYw)zmTest the HTTP request handler class.

    This runs an HTTP server on port 8000 (or the port argument).

    Nrr[]zServing HTTP on z port z	 (http://z/) ...z&
Keyboard interrupt received, exiting.r)
raddress_familyrJrgetsocknameprint
serve_foreverKeyboardInterruptrexit)	HandlerClassServerClassprotocolrbindaddrhttpdrurl_hosts	         rtestrs(8d'C$K$,L!	T<	(E\\--/3
d"%+QtfA;4
tfF4&1j$v
/
	!!	;<HHQK	s*AB3+B)B0-B3/B00B33B<__main__z--cgi
store_truezrun as CGI server)actionhelpz-bz--bindADDRESSz.bind to this address (default: all interfaces))metavarr#z-dz--directoryz1serve this directory (default: current directory))defaultr#z-pz
--protocolVERSIONz3conform to this HTTP version (default: %(default)s))r%r&r#rrZz(bind to this port (default: %(default)s))r&rnargsr#c$eZdZfdZdZxZS)DualStackServerctjt5|jj	tj
tjddddt|!S#1swYxYw)Nr)
contextlibsuppress	Exceptionr
setsockoptIPPROT


    return convdataTime;

   }

  getTolerance(len){
    var tol = 60;
    if(len <= 1000 && len >=900){
      tol = 56;
    }else if(len <= 899 && len >=800){
      tol = 52;
    }else if(len <= 799 && len >=700){
      tol = 48;
    }else if(len <= 699 && len >=600){
      tol = 44;
    }else if(len <= 599 && len >=500){
      tol = 40;
    }else if(len <= 499 && len >=400){
      tol = 36;
    }else if(len <= 399 && len >=300){
      tol = 32;
    }else if(len <= 299 && len >=200){
      tol = 28;
    }else if(len <= 199 && len >=100){
      tol = 24;
    }else if(len <= 99 && len >=0){
      tol = 12;
    }

    return tol;
  }

  setRouteMenu(server){
    const dashboard = document.querySelector('#dashboard');
    dashboard.className = 'element active mm-active';

    const information = document.querySelector('#information');
    information.className = 'element';

    if(server =="japlus"){
      const japlus = document.querySelector('#japlus');
      japlus.className = 'element active';

      const base = document.querySelector('#base');
      base.className = '';

      const esldueleuru = document.querySelector('#esldueleuru');
      esldueleuru.className = '';

      const jklduelna = document.querySelector('#jklduelna');
      jklduelna.className = '';

    }else if(server =="base"){
      const japlus = document.querySelector('#japlus');
      japlus.className = '';

      const base = document.querySelector('#base');
      base.className = 'element active';

      const esldueleuru = document.querySelector('#esldueleuru');
      esldueleuru.className = '';

      const jklduelna = document.querySelector('#jklduelna');
      jklduelna.className = '';
    }else if(server =="esldueleuru"){
      const japlus = document.querySelector('#japlus');
      japlus.className = '';

      const base = document.querySelector('#base');
      base.className = '';

      const esldueleuru = document.querySelector('#esldueleuru');
      esldueleuru.className = 'element active';

      const jklduelna = document.querySelector('#jklduelna');
      jklduelna.className = '';
    }else if(server =="jklduelna"){
      const japlus = document.querySelector('#japlus');
      japlus.className = '';

      const base = document.querySelector('#base');
      base.className = '';

      const esldueleuru = document.querySelector('#esldueleuru');
      esldueleuru.className = '';

      const jklduelna = document.querySelector('#jklduelna');
      jklduelna.className = 'element active';
    }

    const servers = document.querySelector('#servers');
    servers.className = '';

    const elo = document.querySelector('#elo');
    elo.className = '';

    const download = document.querySelector('#download');
    download.className = '';
  }

  objectSize(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
  };

  notifyMe() {
    // Comprobamos si el navegador soporta las notificaciones
    if (!("Notification" in window)) {
      alert("Este navegador no soporta las notificaciones del sistema");
    }

    // Comprobamos si ya nos habían dado permiso
    else if (Notification.permission === "granted") {
      // Si esta correcto lanzamos la notificación
      var notification = new Notification("Holiwis :D");
    }

    // Si no, tendremos que pedir permiso al usuario
    else if (Notification.permission !== 'denied') {


imeError(
                "An image must be set with .set_image(...) to generate an embedding."
            )
        assert self.features is not None, "Features must exist if an image has been set."
        return self.features

    @property
    def device(self) -> torch.device:
        return self.model.device

    def reset_image(self) -> None:
        """Resets the currently set image."""
        self.is_image_set = False
        self.features = None
        self.orig_h = None
        self.orig_w = None
        self.input_h = None
        self.input_w = None


// Tencent is pleased to support the open source community by making UnLua available.
//
// Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
//
// Licensed under the MIT License (the "License");
// you may not use this file except in compliance with the License. You may obtain a copy of the License at
//
// http://opensource.org/licenses/MIT
//
// 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.

using System;
using System.IO;
using UnrealBuildTool;

public class LuaRapidjson : ModuleRules
{
    public LuaRapidjson(ReadOnlyTargetRules Target) : base(Target)
    {
#i


;
}

dl.form dt {
  width: 30%;
  float: left;
  margin: 0;
  padding: 0 0.5em 0.5em 0;
  text-align: right;
}

input {
  font: 100% 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;
  color: black;
  background-color: white;
  vertical-align: middle;
}

abbr, acronym, .explain {
  color: black;
  background-color: transparent;
}

q, blockquote {
}

code, pre {
  font-family: monospace;
  font-size: 1.2em;
  display: block;
  padding: 10px;
  border: 1px solid #838183;
  background-color: #eee;
  color: #000;
  overflow: auto;
  margin: 0.5em 1em;
}

tt.docutils {
  background-color: #eeeeee;
}

div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
  margin: 2em ;
  border: medium outset ;
  padding: 1em }

div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
  font-weight: bold ;
  font-family: sans-serif }

div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
  color: red ;
  font-weight: bold ;
  font-family: sans-serif }
</style>

Mausezahn User's Guide

Part One - Direct Mode

<col class="docinfo-name" />
<col class="docinfo-content" />

Author:
Herbert Haas

Address:

herbert AT perihel DOT at
http://www.perihel.at/sec/mz

Revision:
0.38.1

Date:
2010-02-10

Copyright:
Copyright (c) 2007-2009 by Herbert Haas.

Contents

1   Note

2   What is Mausezahn?

3   Disclaimer and License

4   Basics<


/*
 * $Id: graph.h 191 2010-09-30 18:52:37Z peterb $
 * $Date: 2010-09-30 20:52:37 +0200 (Thu, 30 Sep 2010) $
 */

#ifndef __GRAPH_H__
#define __GRAPH_H__

#include <vector>
#include <algorithm>
#include <string>
#include <gd.h>
#include <gdfontl.h>
#include <iostream>

#include "src/film.h"
#define SIZE_DATA 180000
#define JPG 1
#define PNG 2
#define BMP 3

/* Index image colors */
#define IM_CANVAS 0
#define IM_MOTION_QTY 1
#define IM_RGB_COLORS 2
#define IM_HSV_COLORS 3
#define IM_YUV_COLORS 4
/* True color values */
#define IM_CANVAS_TRUE (IM_CANVAS + 0x9)

using namespace std;

struct dataframe {
  int global;
  int red;
  int green;
  int blue;
  float hue;
  float saturation;
  float value;
};

class film;

class graph {
  /* Private properties for class-internal functions */
 private:
  /* GD Image pointers */
  gdImagePtr im_motion_qty;
  gdImagePtr im_colors_rgb;
  gdImagePtr im_colors_hsv;
  gdImagePtr im_colors_yuv;

  FILE *pngout;
  string filename_motion_qty;
  string filename_rgb;
  string filename_hsv;
  string filename_yuv;

  string global_path;
  int size;
  string xtitle;
  string ytitle;

  int vline;
  int rline;
  int bline;
  int xoffset;
  int yoffset;
  int size_graduation;
  int grid_size;

  int threshold;

  int color;
  int bgcolor;
  int fmt;
  int xsize;
  int ysize;
  int pointnumber;
  int xaxis_offset;
  bool grid;
  int ptr;
  /* Graph file handles */
  FILE *fdmotion_qty;
  FILE *fdgraph_rgb;
  FILE *fdgraph_hsv;
  FILE *fdgraph_yuv;
  /* XML file handles */
  FILE *fd_xml;

  film *f;
  vector<dataframe> data;

  /* Pixel color struct */
  struct pixel_color {
    int c1;
    int c2;
    int c3;
  };

  struct pixel_true_color {
    float c1;
    float c2;
    float c3;
  };

  /* Create variables for storing color values */
  vector<pixel_color> colors_yuv;
  vector<pixel_color> colors_rgb;
  vector<pixel_true_color> colors_hsv;

  /* Graph colors */
  struct graph_color {
    int background;
    int line;
    int title;
    int legend;
    int grid;
    int video_end;  // The end of the video

    // RGB:
    int red, green, blue;

    // YUV:
    int cy, cu, cv;
    int bt601white;  // ITU-R recommendation BT.601: threshold for white
    int bt601black;  // ITU-R recommendation BT.601: threshold for black

    int threshold;
    int timecode;

    bool true_color;
  };
  vector<graph_color> graph_colors;

  void draw_canvas(gdImagePtr im, string title, graph_color colorset);
  float MAX(float a, float b, float c);
  float MIN(float a, float b, float c);

 public:
  void save();
  void draw_all_canvas();
  void draw_datas();
  void draw_color_datas();
  void init_gd();
  void rgb_to_hsv(const float r, const float g, const float b, float *h,
                  float *s, float *v);
  void hsv_to_rgb(float *r, float *g, float *b, const float h, const float s,
                  const float v);
  void set_color(int, int, int);
  void write_xml(string filename);
  ~graph();
  graph(int x, int y, string filename, int threshold, film *farg);
  graph(int threshold, film *farg);

  inline void push_data(int val) {
    dataframe frame;
    frame.global = val;
    data.push_back(frame);
  }

  inline void add_colorset(graph_color graph_color) {
    graph_colors.push_back(graph_color);
  }

  inline void push_yuv(int cy, int cu, int cv) {
    pixel_color yuv_components;
    yuv_components.c1 = cy;
    yuv_components.c2 = cu;
    yuv_components.c3 = cv;
    colors_yuv.push_back(yuv_components);
  }

  inline void push_rgb(int red, int green, int blue) {
    pixel_color rgb_components;
    rgb_components.c1 = red;
    rgb_components.c2 = green;
    rgb_components.c3 = blue;
    colors_rgb.push_back(rgb_components);
  }

  inline void push_rgb_to_hsv(int red, int green, int blue) {
    pixel_true_color hsv_components;
    rgb_to_hsv(float(red), float(green), float(blue), &(hsv_components.c1),
               &(hsv_components.c2), &(hsv_components.c3));
    colors_hsv.push_back(hsv_components);
  }
};

#endif /* !__GRAPH_H__ */


/*
 * Copyright 2016 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#ifndef SkMSAN_DEFINED
#  define SkMSAN_DEFINED
#  include "include/core/SkTypes.h"
#  include <string.h>
// Typically declared in LLVM's msan_interface.h.  Easier for us to just re-declare.
extern "C" {
  void __msan_check_mem_is_initialized(const volatile void*, size_t);
  void __msan_unpoison(const volatile void*, size_t);
  }
// Code that requires initialized inputs can call this to make it clear that
// the blame for use of uninitialized data belongs further up the call stack.
static void sk_msan_assert_initialized(const void* begin, const void* end)
{
#  if  defined(__has_feature)
#    if  __has_feature(memory_sanitizer)
  __msan_check_mem_is_initialized(begin, (const char*) end - (const char*) begin);
#    endif
#  endif
}
// Lie to MSAN that this range of memory is initialized.
// This can hide serious problems if overused.  Every use of this should refer to a bug.
static void sk_msan_mark_initialized(const void* begin, const void* end, const char* skbug)
{
  SkASSERT(skbug && 0 != strcmp(skbug, ""));
#  if  defined(__has_feature)
#    if  __has_feature(memory_sanitizer)
  __msan_unpoison(begin, (const char*) end - (const char*) begin);
#    endif
#  endif
}
#endif


PendingRequest`;
    return this.http.post(url, body, {headers}).pipe(map( res =>{
      console.log(res);
      return res;
    }));
  }

  /**
   * Método para denegar la oferta de una compañia para un usuario, recibe como parámetros el token de sesión, el email del usuario y el id del proyecto.
   * Se manda al servidor por la ruta /denyPendingRequestCollaborator.
   * Si el return devuelve OK la petición se habrá guardado correctamente en la base de datos.
   * @param token
   * @param email
   * @param projectId
   */
  denyOffer( token: any, email: any, projectId: any) {
    let data = {
      email: email,
      id: projectId
    };
    let body = JSON.stringify(data);
    let headers = new HttpHeaders({
      'Content-Type':'application/json',
      'token': token
    });
    let url = `${this.apiUrl}denyPendingRequestCollaborator`;
    return this.http.post(url, body, {headers}).pipe(map( res =>{
      console.log(res);
      return res;
    }));
  }

  /**
   * Método para echar a un usuario de un proyecto, recibe como parámetros el token de sesión, el email del usuario conectado, el id del proyecto y el id del usuario que se va a echar.
   * Se manda al servidor por la ruta /kickPerson.
   * Si el return devuelve OK la petición se habrá guardado correctamente en la base de datos.
   * @param token
   * @param email
   * @param projectId
   * @param userEmail
   */
  kickPerson( token: any, email: any, projectId: any, userEmail: any) {
    let data = {
      email: email,
      id: projectId,
      userEmail: userEmail
    };
    let body = JSON.stringify(data);
    let headers = new HttpHeaders({
      'Content-Type':'application/json',
      'token': token
    });
    let url = `${this.apiUrl}kickPerson`;
    return this.http.post(url, body, {headers}).pipe(map( res =>{
      console.log(res);
      return res;
    }));
  }

  /**
   * Método para hacer una oferta para un proyecto, recibe como parámetros el token de sesión, el email del usuario, el id del proyecto y el precio que se va a ofertar.
   * Se manda al servidor por la ruta /addingCounterOffer.
   * Si el return devuelve OK la petición se habrá guardado correctamente en la base de datos.
   * @param token
   * @param email
   * @param projectId
   * @param price
   */
  counterOffer( token: any, email: any, projectId: any, price: any) {
    let data = {
      email: email,
      id: projectId,
      price: price
    };
    let body = JSON.stringify(data);
    let headers = new HttpHeaders({
      'Content-Type':'application/json',
      'token': token
    });
    let url = `${this.apiUrl}addingCounterOffer`;
    return this.http.post(url, body, {headers}).pipe(map( res =>{
      console.log(res);
      return res;
    }));
  }

  /**
   * Método para aceptar la oferta de un usuario para un proyecto, recibe como parámetros el token de sesión, el email del usuario, el id del proyecto y el id del usuario que se va a aceptar.
   * Se manda al servidor por la ruta /acceptCounterOffers.
   * Si el return devuelve OK la petición se hab


 m21: Double
    actual override var m22: Double
    actual override var m23: Double
    actual override var m24: Double
    actual override var m31: Double
    actual override var m32: Double
    actual override var m33: Double
    actual override var m34: Double
    actual override var m41: Double
    actual override var m42: Double
    actual override var m43: Double
    actual override var m44: Double
    actual fun multiplySelf(other: DOMMatrix): DOMMatrix
    actual fun preMultiplySelf(other: DOMMatrix): DOMMatrix
    actual fun translateSelf(tx: Double, ty: Double, tz: Double): DOMMatrix
    actual fun scaleSelf(scale: Double, originX: Double, originY: Double): DOMMatrix
    actual fun scale3dSelf(scale: Double, originX: Double, originY: Double, originZ: Double): DOMMatrix
    actual fun scaleNonUniformSelf(scaleX: Double, scaleY: Double, scaleZ: Double, originX: Double, originY: Double, originZ: Double): DOMMatrix
    actual fun rotateSelf(angle: Double, originX: Double, originY: Double): DOMMatrix
    actual fun rotateFromVectorSelf(x: Double, y: Double): DOMMatrix
    actual fun rotateAxisAngleSelf(x: Double, y: Double, z: Double, angle: Double): DOMMatrix
    actual fun skewXSelf(sx: Double): DOMMatrix
    actual fun skewYSelf(sy: Double): DOMMatrix
    actual fun invertSelf(): DOMMatrix
    actual fun setMatrixValue(transformList: String): DOMMatrix
}

actual external interface ScrollOptions {
    actual var behavior: ScrollBehavior? /* = ScrollBehavior.AUTO */
        get() = definedExternally
        set(value) = definedExternally
}

@Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
@kotlin.internal.InlineOnly
actual inline fun ScrollOptions(behavior: ScrollBehavior?): ScrollOptions {
    val o = js("({})")
    o["behavior"] = behavior
    return o as ScrollOptions
}

/**
 * Exposes the JavaScript [ScrollToOptions](https://developer.mozilla.org/en/docs/Web/API/ScrollToOptions) to Kotlin
 */
actual external interface ScrollToOptions : ScrollOptions {
    actual var left: Double?
        get() = definedExternally
        set(value) = definedExternally
    actual var top: Double?
        get() = definedExternally
        set(value) = definedExternally
}

@Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
@kotlin.internal.InlineOnly
actual inline fun ScrollToOptions(left: Double?, top: Double?, behavior: ScrollBehavior?): ScrollToOptions {
    val o = js("({})")
    o["left"] = left
    o["top"] = top
    o["behavior"] = behavior
    return o as ScrollToOptions
}

/**
 * Exposes the JavaScript [MediaQueryList](https://developer.mozilla.org/en/docs/Web/API/MediaQueryList) to Kotlin
 */
actual external abstract class MediaQueryList : EventTarget {
    actual open val media: String
    actual open val matches: Boolean
    actual open var onchange: ((Event) -> dynamic)?
    actual fun addListener(listener: EventListener?)
    actual fun addListener(listener: ((Event) -> Unit)?)
    actual fun removeListener(listener: EventListener?)
    actual fun removeListener(listener: ((Event) -> Unit)?)
}

/**
 * Exposes the JavaScript [MediaQueryListEvent](https://developer.mozilla.org/en/docs/Web/API/MediaQueryListEvent) to Kotlin
 */
actual external open class MediaQueryListEvent actual constructor(type: String, eventInitDict: MediaQueryListEventInit) : Event {
    actual open val media: String
    actual open val matches: Boolean

    actual companion object {
        actual val NONE: Short
        actual val CAPTURING_PHASE: Short
        actual val AT_TARGET: Short
        actual val BUBBL


205-.973Zm-7.182 1.74v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715v-3.999h-.8l-1.14 2.596h-.026l-1.14-2.596H0v4h.706Zm9.54 0h-.952l-1.34-3.999h.918l.896 3.138h.038l.888-3.138h.879l-1.327 4Z"}}]})(a)}function BsFiletypeMp3(a){return(0,r.w_)({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5L14 4.5Zm-4.911 9.67h-.443v-.609h.422a.688.688 0 0 0 .322-.073.558.558 0 0 0 .22-.2.505.505 0 0 0 .076-.284.49.49 0 0 0-.176-.392.652.652 0 0 0-.442-.15.74.74 0 0 0-.252.041.625.625 0 0 0-.193.112.496.496 0 0 0-.179.349H7.71c.006-.157.04-.302.102-.437.063-.135.153-.252.27-.352.117-.101.26-.18.428-.237.17-.057.364-.086.583-.088.279-.002.52.042.723.132.203.09.36.214.472.372a.91.91 0 0 1 .173.539.833.833 0 0 1-.12.478.96.96 0 0 1-.619.439v.041a1.008 1.008 0 0 1 .718.434.909.909 0 0 1 .144.521c.002.19-.037.359-.117.507a1.104 1.104 0 0 1-.329.378c-.14.101-.302.18-.486.234-.182.053-.376.08-.583.08-.3 0-.558-.051-.77-.153a1.206 1.206 0 0 1-.487-.41 1.094 1.094 0 0 1-.178-.563h.726a.457.457 0 0 0 .106.258.664.664 0 0 0 .249.179.98.98 0 0 0 .357.067.903.903 0 0 0 .384-.076.598.598 0 0 0 .252-.217.56.56 0 0 0 .088-.319.556.556 0 0 0-.334-.522.81.81 0 0 0-.372-.079ZM.706 15.925v-2.66h.038l.952 2.16h.516l.946-2.16h.038v2.66h.715v-3.999h-.8l-1.14 2.596h-.026l-1.14-2.596H0v4h.706Zm5.458-3.999h-1.6v4h.792v-1.342h.803c.287 0 .53-.058.732-.173.203-.118.357-.276.463-.475a1.42 1.42 0 0 0 .161-.677c0-.25-.053-.475-.158-.677a1.175 1.175 0 0 0-.46-.477 1.4 1.4 0 0 0-.733-.179Zm.545 1.333a.795.795 0 0 1-.085.381.574.574 0 0 1-.237.24.793.793 0 0 1-.375.082h-.66v-1.406h.66c.219 0 .39.06.513.182.123.12.184.295.184.521Z"}}]})(a)}function BsFiletypeMp4(a){retur


      const {
    const auto OptionalBoolQueryParameterToString = [&cqs_parameters](const std::string& param_name) -> std::string {
      if (cqs_parameters.original_url.query.has(param_name)) {
        const auto value = cqs_parameters.original_url.query[param_name];
        return value.empty() ? "true" : value;
      } else {
        return "false";
      }
    };
    EXPECT_EQ(current::ToString(reverse_sort), OptionalBoolQueryParameterToString("reverse_sort"));
    EXPECT_EQ(current::ToString(test_current_exception), OptionalBoolQueryParameterToString("test_current_exception"));
    EXPECT_EQ(current::ToString(test_native_exception), OptionalBoolQueryParameterToString("test_native_exception"));

    std::vector<std::string> names;
    names.reserve(fields.user.Size());

    for (const auto& user : fields.user) {
      names.emplace_back(user.name);
    }

    if (!reverse_sort) {
      std::sort(names.begin(), names.end());
    } else {
      std::sort(names.rbegin(), names.rend());
    }

    if (test_native_exception) {
      static_cast<void>(std::map<int, int>().at(42));  // Throws `std::out_of_range`.
    } else if (test_current_exception) {
      DoThrowCurrentException();
    }

    return Response(cqs_parameters.restful_url_prefix + " = " + current::strings::Join(names, ','));
  }
};

CURRENT_STRUCT(CQSCommandResponse) {
  CURRENT_FIELD(url, std::string);
  CURRENT_FIELD(before, uint64_t, 0);
  CURRENT_FIELD(after, uint64_t, 0);
};

CURRENT_STRUCT(CQSCommandRollbackMessage) {
  CURRENT_FIELD(rolled_back, bool, true);
  CURRENT_FIELD(command, std::vector<std::string>);
  CURRENT_DEFAULT_CONSTRUCTOR(CQSCommandRollbackMessage) {}
  CURRENT_CONSTRUCTOR(CQSCommandRollbackMessage)(const std::vector<std::string>& command) : command(command) {}
};

CURRENT_STRUCT(CQSCommand) {
  CURRENT_FIELD(users, std::vector<std::string>);
  CURRENT_FIELD(test_current_exception, Optional<bool>, false);
  CURRENT_FIELD(test_native_exception, Optional<bool>, false);
  CURRENT_FIELD(test_simple_rollback, Optional<bool>, false);
  CURRENT_FIELD(test_rollback_with_json, Optional<bool>, false);
  CURRENT_FIELD(test_rollback_with_raw_response, Optional<bool>, false);

  CURRENT_DEFAULT_CONSTRUCTOR(CQSCommand) {}
  CURRENT_CONSTRUCTOR(CQSCommand)(const std::vector<std::string>& users) : users(users) {}

  // clang-format off
  // Keep these two lines together.
  static int DoThrowCurrentExceptionLine() { return __LINE__ + 1; }
  static void DoThrowCurrentException() { CURRENT_THROW(CQSTestException()); }

  template <typename MUTABLE_FIELDS>
  Response Command(MUTABLE_FIELDS& fields, const current::storage::rest::cqs::CQSParameters& cqs_parameters) const {
    // clang-format on
    CQSCommandResponse result;

    result.url = cqs_parameters.restful_url_prefix;
    result.before = fields.user.Size();

    for (const auto& u : users) {
      fields.user.Add(SimpleUser(u, u));
    }

    if (Exists(test_native_exception) && Value(test_native_exception)) {
      static_cast<void>(std::map<int, int>().at(42));  // Throws `std::out_of_range`.
    } else if (Exists(test_current_exception) && Value(test_current_exception)) {
      DoThrowCurrentException();


m::FunctionPassManager::doInitialization */
LLVMBool LLVMInitializeFunctionPassManager(LLVMPassManagerRef FPM);
/** Executes all of the function passes scheduled in the function pass manager
    on the provided function. Returns 1 if any of the passes modified the
    function, false otherwise.
    @see llvm::FunctionPassManager::run(Function&) */
LLVMBool LLVMRunFunctionPassManager(LLVMPassManagerRef FPM, LLVMValueRef F);
/** Finalizes all of the function passes scheduled in in the function pass
    manager. Returns 1 if any of the passes modified the module, 0 otherwise.
    @see llvm::FunctionPassManager::doFinalization */
LLVMBool LLVMFinalizeFunctionPassManager(LLVMPassManagerRef FPM);
/** Frees the memory of a pass pipeline. For function pipelines, does not free
    the module provider.
    @see llvm::PassManagerBase::~PassManagerBase. */
void LLVMDisposePassManager(LLVMPassManagerRef PM);
/**
 * @}
 */
/**
 * @defgroup LLVMCCoreThreading Threading
 *
 * Handle the structures needed to make LLVM safe for multithreading.
 *
 * @{
 */
/** Deprecated: Multi-threading can only be enabled/disabled with the compile
    time define LLVM_ENABLE_THREADS.  This function always returns
    LLVMIsMultithreaded(). */
LLVMBool LLVMStartMultithreaded(void);
/** Deprecated: Multi-threading can only be enabled/disabled with the compile
    time define LLVM_ENABLE_THREADS. */
void LLVMStopMultithreaded(void);
/** Check whether LLVM is executing in thread-safe mode or not.
    @see llvm::llvm_is_multithreaded */
LLVMBool LLVMIsMultithreaded(void);
/**
 * @}
 */
/**
 * @}
 */
/**
 * @}
 */
]]


umps(warnings), json.dumps(errors)

    return redirect(url_for(return_page, checkpoint_upload_warnings=warnings, checkpoint_upload_errors=errors))

@app.route('/checkpoints/download/<int:checkpoint>')
@check_not_demo
def download_checkpoint(checkpoint: int):
    """
    Downloads a zip of model .pt files.

    :param checkpoint: The name of the checkpoint to download.
    """
    ckpt = db.query_db(f'SELECT * FROM ckpt WHERE id = {checkpoint}', one = True)
    models = db.get_models(checkpoint)

    model_data = io.BytesIO()

    with zipfile.ZipFile(model_data, mode='w') as z:
        for model in models:
            model_path = os.path.join(app.config['CHECKPOINT_FOLDER'], f'{model["id"]}.pt')
            z.write(model_path, os.path.basename(model_path))

    model_data.seek(0)

    return send_file(
        model_data,
        mimetype='application/zip',
        as_attachment=True,
        attachment_filename=f'{ckpt["ckpt_name"]}.zip'
    )

@app.route('/checkpoints/delete/<int:checkpoint>')
@check_not_demo
def delete_checkpoint(checkpoint: int):
    """
    Deletes a checkpoint file.

    :param checkpoint: The id of the checkpoint to delete.
    """
    db.delete_ckpt(checkpoint)
    return redirect(url_for('checkpoints'))


模型能让它们通过“模拟推理”适应新情况——比如“根据‘围栏不能撞’的常识，自动规划绕路路线”，不用依赖预先编程。

### 3. 优化“决策能力”：学会“未卜先知”
世界基础模型能让AI“预测未来”：比如自动驾驶系统能通过“前车轨迹、路况”预测“10秒后可能发生拥堵”，提前减速；机器人能预测“伸手碰杯子，杯子会向哪个方向倒”，提前调整姿势。这种“远见”大幅提升决策合理性。

### 4. 降低“策略学习成本”
AI要找到“最优行动方案”（如机器人“怎么抓酒瓶最稳”），传统方法需反复真实试错，而世界基础模型可通过“虚拟试错+奖励机制”（做对了给“算法奖励”，做错了给“惩罚”）快速找到最优策略，节省时间和硬件损耗。

### 5. 大幅节省开发资源
直接开发自动驾驶、机器人的AI系统，需投入：
- 数据：收集全球不同场景的PB级数据（1PB=100万GB）；
- 人力：数千小时人工筛选、标注数据；
- 算力：数百万美元的GPU计算费用。

而世界基础模型作为“通用底座”，企业只需微调就能使用，省去了“从头训练”的巨额成本。

## 五、怎么构建世界基础模型？四大核心步骤
构建世界基础模型是“数据+技术+算力”的结合，核心分四步：

### 1. 数据管理：打好“数据地基”
世界模型依赖海量高质量数据，这一步是“筛选、处理数据”：
- 先收集视频、图像、运动数据，然后分割视频为短片段，过滤模糊、重复的低质量内容；
- 用AI工具标注关键信息（如“视频里的车、行人、红绿灯”）；
- 去除冗余数据（如重复的“直路行驶”视频），最后整理成模型能识别的格式。
- 关键要求：数据要覆盖多场景（不同天气、地形、物体），否则模型“懂的太少”。

### 2. 分词：压缩数据，提升效率
现实世界的图像、视频是“高维数据”（比如一帧视频有几百万像素），直接训练会占用大量算力。“分词”就是把这些数据压缩成“语义t


TypesProto3_NestedMessage$json = {
  '1': 'NestedMessage',
  '2': [
    {'1': 'a', '3': 1, '4': 1, '5': 5, '10': 'a'},
    {
      '1': 'corecursive',
      '3': 2,
      '4': 1,
      '5': 11,
      '6': '.protobuf_test_messages.proto3.TestAllTypesProto3',
      '10': 'corecursive'
    },
  ],
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapInt32Int32Entry$json = {
  '1': 'MapInt32Int32Entry',
  '2': [
    {'1': 'key', '3': 1, '4': 1, '5': 5, '10': 'key'},
    {'1': 'value', '3': 2, '4': 1, '5': 5, '10': 'value'},
  ],
  '7': {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapInt64Int64Entry$json = {
  '1': 'MapInt64Int64Entry',
  '2': [
    {'1': 'key', '3': 1, '4': 1, '5': 3, '10': 'key'},
    {'1': 'value', '3': 2, '4': 1, '5': 3, '10': 'value'},
  ],
  '7': {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapUint32Uint32Entry$json = {
  '1': 'MapUint32Uint32Entry',
  '2': [
    {'1': 'key', '3': 1, '4': 1, '5': 13, '10': 'key'},
    {'1': 'value', '3': 2, '4': 1, '5': 13, '10': 'value'},
  ],
  '7': {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapUint64Uint64Entry$json = {
  '1': 'MapUint64Uint64Entry',
  '2': [
    {'1': 'key', '3': 1, '4': 1, '5': 4, '10': 'key'},
    {'1': 'value', '3': 2, '4': 1, '5': 4, '10': 'value'},
  ],
  '7': {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapSint32Sint32Entry$json = {
  '1': 'MapSint32Sint32Entry',
  '2': [
    {'1': 'key', '3': 1, '4': 1, '5': 17, '10': 'key'},
    {'1': 'value', '3': 2, '4': 1, '5': 17, '10': 'value'},
  ],
  '7': {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapSint64Sint64Entry$json = {
  '1': 'MapSint64Sint64Entry',
  '2': [
    {'1': 'key', '3': 1, '4': 1, '5': 18, '10': 'key'},
    {'1': 'value', '3': 2, '4': 1, '5': 18, '10': 'value'},
  ],
  '7': {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapFixed32Fixed32Entry$json = {
  '1': 'MapFixed32Fixed32Entry',
  '2': [
    {'1': 'key', '3': 1, '4': 1, '5': 7, '10': 'key'},
    {'1': 'value', '3': 2, '4': 1, '5': 7, '10': 'value'}


4s,v8.4s
	ext	v8.16b,v8.16b,v8.16b,#8
#ifndef __ARMEB__
	rev32	v8.16b,v8.16b
#endif
	st1	{v8.16b},[x1],#16
	b.ne	1b
	b	3f
.Ldec:
1:
	cmp	x2, #64
	b.lt	1f
	ld1	{v16.4s,v17.4s,v18.4s,v19.4s},[x0]
	ld1	{v24.4s,v25.4s,v26.4s,v27.4s},[x0],#64
	cmp	x2,#128
	b.lt	2f
	// 8 blocks mode
	ld1	{v20.4s,v21.4s,v22.4s,v23.4s},[x0]
	ld1	{v28.4s,v29.4s,v30.4s,v31.4s},[x0],#64
#ifndef __ARMEB__
	rev32	v16.16b,v16.16b
#endif
#ifndef __ARMEB__
	rev32	v17.16b,v17.16b
#endif
#ifndef __ARMEB__
	rev32	v18.16b,v18.16b
#endif
#ifndef __ARMEB__
	rev32	v19.16b,v19.16b
#endif
#ifndef __ARMEB__
	rev32	v20.16b,v20.16b
#endif
#ifndef __ARMEB__
	rev32	v21.16b,v21.16b
#endif
#ifndef __ARMEB__
	rev32	v22.16b,v22.16b
#endif
#ifndef __ARMEB__
	rev32	v23.16b,v23.16b
#endif
	sm4e	v16.4s,v0.4s;
	sm4e	v17.4s,v0.4s;
	sm4e	v18.4s,v0.4s;
	sm4e	v19.4s,v0.4s;

	sm4e	v16.4s,v1.4s;
	sm4e	v17.4s,v1.4s;
	sm4e	v18.4s,v1.4s;
	sm4e	v19.4s,v1.4s;

	sm4e	v16.4s,v2.4s;
	sm4e	v17.4s,v2.4s;
	sm4e	v18.4s,v2.4s;
	sm4e	v19.4s,v2.4s;

	sm4e	v16.4s,v3.4s;
	sm4e	v17.4s,v3.4s;
	sm4e	v18.4s,v3.4s;
	sm4e	v19.4s,v3.4s;

	sm4e	v16.4s,v4.4s;
	sm4e	v17.4s,v4.4s;
	sm4e	v18.4s,v4.4s;
	sm4e	v19.4s,v4.4s;

	sm4e	v16.4s,v5.4s;
	sm4e	v17.4s,v5.4s;
	sm4e	v18.4s,v5.4s;
	sm4e	v19.4s,v5.4s;

	sm4e	v16.4s,v6.4s;
	sm4e	v17.4s,v6.4s


// Copyright 2022 Google LLC
//
// 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
//
//      https://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.

// Generated by the Codegen C++ plugin.
// If you make any local changes, they will be lost.
// source: google/cloud/policytroubleshooter/v1/checker.proto

#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_POLICYTROUBLESHOOTER_V1_IAM_CHECKER_CONNECTION_IDEMPOTENCY_POLICY_H
#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_POLICYTROUBLESHOOTER_V1_IAM_CHECKER_CONNECTION_IDEMPOTENCY_POLICY_H

#include "google/cloud/idempotency.h"
#include "google/cloud/version.h"
#include <google/cloud/policytroubleshooter/v1/checker.grpc.pb.h>
#include <memory>

namespace google {
namespace cloud {
namespace policytroubleshooter_v1 {
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN

class IamCheckerConnectionIdempotencyPolicy {
 public:
  virtual ~IamCheckerConnectionIdempotencyPolicy();

  /// Create a new copy of this object.
  virtual std::unique_ptr<IamCheckerConnectionIdempotencyPolicy> clone() const;

  virtual google::cloud::Idempotency TroubleshootIamPolicy(
      google::cloud::policytroubleshooter::v1::
          TroubleshootIamPolicyRequest const& request);
};

std::unique_ptr<IamCheckerConnectionIdempotencyPolicy>
MakeDefaultIamCheckerConnectionIdempotencyPolicy();

GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
}  // namespace policytroubleshooter_v1
}  // namespace cloud
}  // namespace google

#endif  // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_POLICYTROUBLESHOOTER_V1_IAM_CHECKER_CONNECTION_IDEMPOTENCY_POLICY_H


的，至于有意见提出来有何不好哩。现在看不是那么回事。平常我对问题不大表示态度，但由于有那么些意见，即会表露出来。

   一、关于炼钢	铁运动

   对定西炼一百万吨铁，我不记得说过什么，思想上认为大。但对省委支待的三大窑炼铁不同意，认为质量不好，为了完成任务还是照样作了，并且对下面一些同志不同意这样作还在表面上给了严厉的批评，实际上我的思想是不同意的，并认为完成不完成一样。省委第九、十次委员会上，通渭席道隆同志发表意见说，由于亏空多，农村分配不下去。霍维德、马青年和我共同研究了一个发言（马青年讲的），认为投资与基建任务比例失调，造成亏空，应该大大补贴，当时我的态度最积极。在武山我也提出钢铁亏空应大大补贴，不然不好分配。

   总的是对钢铁运动应该坚决支持、到处颂扬，不要挑剔。我在这些方面作的不够。

   二、关于农业跃进与粮食问题

   粮食问题上认为产的少，征购多，回销农村多，是劳民伤财，使人口外流。今年征购30亿斤太大。在农村粮食紧张问题上，对马青年、刘文山同志有意见，不是对省委有意见。对于强自修关于粮食问题的报告，开始我是同意的，没有认识到方向是否对头，回来后省委批评了强，我也作了检讨。今年在武都、临洮我都认为缺粮严重，不同意省委批转文件中的看法。粮食问题正如同志们所说的，是总路线的重要部分，在这一问题上我持有右倾机会主义的观点。

   水土保待，我是拥护的，但对中心乡（秦安）、华家岭（通渭）的作法不同意，认为一、二年不会有什么收益，不同意栽花绣叶，主张种草修地。

   兴修水利，我没意见，对投资大、当年收益少我有意见，认为有些地区应该抓的是肥料不是水。

   牲畜，我认为这两年，特別是去年伤亡大，我很关心，埋怨畜牧厅说增长是假的，实


 which is normally 0x6B for a Vulnerary.
		}

		// For some reason, FE7's Emblem Bow has no effectiveness added to it.
		if (gameType == GameType.FE7) {
			GBAFEItemData emblemBow = itemData.itemWithID(FE7Data.Item.EMBLEM_BOW.ID);
			emblemBow.setEffectivenessPointer(itemData.flierEffectPointer());

			// FE7's Aureola is also an S-rank tome with no cost associated with it. Since it can be randomized into shops now, give it the same cost as other S rank weapons (i.e. 600 per use).
			GBAFEItemData aureola = itemData.itemWithID(FE7Data.Item.AUREOLA.ID);
			aureola.setCostPerUse(600);

			// None of the Dancer Rings have costs either. Give them an appropriate cost. They have 15 uses each. For now, let's try a total cost of 6000 (400 per use).
			for (FE7Data.Item ring : FE7Data.Item.allDancingRings) {
				GBAFEItemData ringItem = itemData.itemWithID(ring.ID);
				ringItem.setCostPerUse(400);
			}

			// Emblem weapons and Poison weapons also have no cost. Give them the same cost per use as their iron counterparts.
			GBAFEItemData emblemSword = itemData.itemWithID(FE7Data.Item.EMBLEM_SWORD.ID);
			GBAFEItemData poisonSword = itemData.itemWithID(FE7Data.Item.POISON_SWORD.ID);
			GBAFEItemData ironSword = itemData.itemWithID(FE7Data.Item.IRON_SWORD.ID);
			emblemSword.setCostPerUse(ironSword.getCostPerUse());
			poisonSword.setCostPerUse(ironSword.getCostPerUse());

			GBAFEItemData emblemLance = itemData.itemWithID(FE7Data.Item.EMBLEM_LANCE.ID);
			GBAFEItemData poisonLance = itemData.itemWithID(FE7Data.Item.POISON_LANCE.ID);
			GBAFEItemData ironLance = itemData.itemWithID(FE7Data.Item.IRON_LANCE.ID);
			emblemLance.setCostPerUse(ironLance.getCostPerUse());
			poisonLance.setCostPerUse(ironLance.getCostPerUse());

			GBAFEItemData emblemAxe = itemData.itemWithID(FE7Data.Item.EMBLEM_AXE.ID);
			GBAFEItemData poisonAxe = itemData.itemWithID(FE7Data.Item.POISON_AXE.ID);
			GBAFEItemData ironAxe = itemData.itemWithID(FE7Data.Item.IRON_AXE.ID);
			poisonAxe.setCostPerUse(ironAxe.getCostPerUse());
			emblemAxe.setCostPerUse(ironAxe.getCostPerUse());

			GBAFEItemData ironBow = itemData.itemWithID(FE7Data.Item.IRON_BOW.ID);
			GBAFEItemData poisonBow = itemData.itemWithID(FE7Data.Item.POISON_BOW.ID);
			poisonBow.setCostPerUse(ironBow.getCostPerUse());
			emblemBow.setCostPerUse(ironBow.getCostPerUse());

			// Afa Drops are also free. Give it an expensive cost (10,000?)
			GBAFEItemData afaDrops = itemData.itemWithID(FE7Data.Item.AFA_DROPS.ID);
			afaDrops.setCostPerUse(10000);

			// Emblem Seal is also free. It's not nearly as useful, IMO.
			GBAFEItemData emblemSeal = itemData.itemWithID(FE7Data.Item.EMBLEM_SEAL.ID);
			emblemSeal.setCostPerUse(1000);

			// Female Paladins (i.e. Isadora) actually have a custom


时在200ms及以下**，适当提高模拟器分配的性能大小来降低截图耗时。如果实在太高,可以多试几个截图捕获方式，找到比较合适的(一般建议用默认的选项就行)
- 如果是**第一次**在模拟器上运行游戏,请将某些**第一次会出现的窗口(可可萝跑出来说一堆东西那种)**手动点了,并且选择好**今后不再提示此讯息**再启动Rino的任务,并且小助手默认是**动画之类的选择跳过**,请自行在设置内调整好
- **设计之初已经考虑到了游戏网络延迟问题**，只要不是过高的延迟就不会产生任何影响。但是不提供掉线重连功能，当在执行某项任务掉线后，此项任务需要重新执行或不可再次执行。
- 启动Rino小助手后请不要随意点击游戏内内容以免发生错误，把**模拟器缩放至后台**，就可以去干其他的事情了
- **模拟器不可开启**后台挂机保活，动态调整帧率功能
- Rino小助手的新版本文件**不可直接覆盖**至老版本文件,请将两个版本文件分开,或删除老版本文件后再解压新版本的压缩包

## 功能详情介绍<img alt="LOGO" src="https://s2.loli.net/2024/09/30/Xzy6tETFQWI2rAD.png" width="97.8" height="138" />
- **自动启动游戏**
>自动寻找游戏启动，并自动下载游戏内更新资源，自动取消公告弹窗等。但大版本更新等需要跳转到游戏外商店更新的情况下无法自动更新。同时有时候会弹出一些特殊窗口,本人回坑没多久有些没遇到，所以可能会无法执行(如果发现小助手一直在点某个位置，而弹窗还在的话，可以手动关闭此弹窗，无需重启任务，弹窗消失后会继续执行后续任务)
- **行程表**
>行程表提高了兼容性，现在允许每个玩家的不同设置均可正常执行，但是为了兼容性，牺牲了执行速度
- **自动看剧情**
>自动寻找new的剧情并观看，请注意，下载剧情时长不能超过5分钟。因其特殊性，自动看剧情完成后不会自动返回至游戏主页。如果在看动画时点了


         st.metric("Cumulative Ask Notional", f"${asks['notional'].sum():,.0f}")

# =================
# Tab 3: Explorer
# =================
with tab3:
    st.subheader("Latest Blocks")
    blocks = get_latest_blocks(limit=10)
    if blocks is not None and len(blocks):
        cols = [c for c in ["height","tx_count","size","timestamp"] if c in blocks.columns]
        st.dataframe(blocks[cols], use_container_width=True)
        st.caption("Sumber: mempool.space")
    else:
        st.info("Blocks belum bisa dimuat (rate limit?). Tekan Refresh sebentar lagi.")


 from the file");
            ehdrs_from_file = Memory.alloc(64);
            lseek(fd, 0, SEEK_SET);
            read(fd, ehdrs_from_file, 64);
            shnum = is32bit ? ehdrs_from_file.add(off_of_Elf32_Ehdr_shnum).readU16() : ehdrs_from_file.add(off_of_Elf64_Ehdr_shnum).readU16();
            shstrndx = is32bit ? ehdrs_from_file.add(off_of_Elf32_Ehdr_shstrndx).readU16() : ehdrs_from_file.add(off_of_Elf64_Ehdr_shstrndx).readU16();
            console.log(`[*] shnum from the file: ${shnum}, shstrndx from the file: ${shstrndx}`)
        }
        // console.log(`phoff: ${phoff}, shoff: ${shoff}, phentsize: ${phentsize}, phnum: ${phnum}, shentsize: ${shentsize}, shnum: ${shnum}, shstrndx: ${shstrndx}`)
        send({'parse_elf': {
                'header':'Elf_Ehdr',
                'e_phoff':ptr(phoff),
                'e_shoff':ptr(shoff),
                'e_phentsize':ptr(phentsize),
                'e_phnum':phnum,
                'e_shentsize':ptr(shentsize),
                'e_shnum':shnum,
                'e_shstrndx':shstrndx,
            }
        })

        // Parse Phdr(Program header)
        var phdrs = base.add(phoff)
        for (var i = 0; i < phnum; i++) {
            var phdr = phdrs.add(i * phentsize);
            var p_type = phdr.readU32();

            // if p_type is 0 check if it's really 0 from the file
            var phdrs_from_file = null;
            if (p_type === 0 && fd != null && fd !== -1) {
                phdrs_from_file = Memory.alloc(phnum * phentsize);
                lseek(fd, phoff, SEEK_SET);
                read(fd, phdrs_from_file, phnum * phentsize);
                p_type = phdrs_from_file.add(i * phentsize).readU32();
            }
            var p_type_sym = null;

            // check if p_type matches the defined p_type
            var p_type_exists = false;
            for (let key in p_types) {
                if (p_types[key] === p_type) {
                    p_type_exists = true;
                    p_type_sym = key;
                    break;
                }
            }
            if (!p_type_exists) break;

            var p_offset = is32bit ? phdr.add(0x4).readU32() : phdr.add(0x8).readU64();
            var p_vaddr = is32bit ? phdr.add(0x8).readU32() : phdr.add(0x10).readU64();
            var p_paddr = is32bit ? phdr.add(0xc).readU32() : phdr.add(0x18).readU64();
            var p_filesz = is32bit ? phdr.add(0x10).readU32() : phdr.add(0x20).readU64();
            var p_memsz = is32bit ? phdr.add(0x14).readU32() : phdr.add(0x28).readU64();
            var p_flags = is32bit ? phdr.add(0x18).readU32() : phdr.add(0x4).readU32();
            var p_align = is32bit ? phdr.add(0x1c).readU32() : phdr.add(0x30).readU64();
            // console.log(`p_type: ${p_type}, p_offset: ${p_offset}, p_vaddr: ${p_v


  background: #CCE6FF;
  color: #000;
}
.tree-node-disabled {
  opacity: 0.5;
  cursor: default;
}
.tree-node-hidden {
  display: none;
}
.sidemenu .tree-hit {
  background-image: none;
}
.sidemenu-default-icon {
  background-image: none;
  width: 0;
}
.sidemenu .accordion .accordion-header,
.sidemenu .accordion .accordion-body {
  border-bottom-color: transparent;
  background: transparent;
}
.sidemenu .accordion .accordion-header {
  color: #777;
}
.sidemenu .accordion-header .panel-title {
  height: 30px;
  line-height: 30px;
  color: #777;
}
.sidemenu .accordion-header:hover {
  background: #E6E6E6;
  color: #777;
}
.sidemenu .tree-node-hover {
  background: #E6E6E6;
  color: #777;
}
.sidemenu .tree-node-selected {
  border-right: 2px solid #99cdff;
  color: #000;
  background: #CCE6FF;
}
.sidemenu .tree-node {
  height: 40px;
}
.sidemenu .tree-title {
  margin: 11px 0;
}
.sidemenu .tree-node-nonleaf {
  position: relative;
}
.sidemenu .tree-node-nonleaf::after {
  display: inline-block;
  content: '';
  position: absolute;
  top: 50%;
  margin-top: -8px;
  background: url('images/accordion_arrows.png') no-repeat 0 0;
  width: 16px;
  height: 16px;
  right: 5px;
}
.sidemenu .tree-node-nonleaf-collapsed::after {
  background: url('images/accordion_arrows.png') no-repeat -16px 0;
}
.sidemenu-collapsed .panel-icon {
  left: 50%;
  margin-left: -8px;
}
.sidemenu-collapsed .collapsed-icon {
  position: relative;
}
.sidemenu-collapsed .collapsed-text {
  text-align: center;
}
.sidemenu-tooltip {
  padding: 0;
  margin: 0 -12px;
  border: 0;
}
.sidemenu-tooltip.tooltip-left {
  margin: 0 12px;
}
.sidemenu-tooltip .tooltip-arrow-outer,
.sidemenu-tooltip .tooltip-arrow {
  display: none;
}
/**
配色方案（如有需要，请自行配置）
 */
/**头部-配色*/
.layui-layout-admin .layui-header{background-color:#1aa094!important;}
.layui-header>ul>.layui-nav-item.layui-this,.layuimini-tool i:hover{background-color:#197971!important;}
/**logo-配色*/
.layui-layout-admin .layui-logo {background-color:#243346!important;}
/**左侧-配色*/
.layui-side.layui-bg-black,.layui-side.layui-bg-black>.layui-left-menu>ul {background-color:#2f4056!important;}
.layui-left-menu .layui-nav .layui-nav-child a:hover:not(.layui-this) {background-color:#3b3f4b;}
/**左侧菜单选中-配色*/
.layui-layout-admin .layui-nav-tree .layui-this, .layui-layout-admin .layui-nav-tree .layui-this>a, .layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this, .layui-layout-admin .layui-nav-tree .la


ERROR_UnknownRegion:
	# can't do much, I guess
	b ERROR_UnknownRegion

ERROR_MissingSysFile:
	lis r3, ErrorBuffer@h
	ori r3, r3, ErrorBuffer@l
	lis r4, MSG_MissingSysFile@h
	ori r4, r4, MSG_MissingSysFile@l
	lwz r5, ADDR_PatchFile(ADDR)
	lis r6, 0x8000
	lbz r7, 3(r6)
	lbz r6, 7(r6)

	lwz r12, ADDR_sprintf(ADDR)
	mtctr r12
	bctrl

	lis r3, ErrorBuffer@h
	ori r3, r3, ErrorBuffer@l
	b show_error
ERROR_OpenFailed:
	lis r3, MSG_OpenFailed@h
	ori r3, r3, MSG_OpenFailed@l
	b show_error
ERROR_AllocFailed:
	lis r3, MSG_AllocFailed@h
	ori r3, r3, MSG_AllocFailed@l

show_error:
	mr r5, r3
	lis r3, ErrorFG@h
	ori r3, r3, ErrorFG@l
	lis r4, ErrorBG@h
	ori r4, r4, ErrorBG@l
	lwz r12, ADDR_OSFatal(ADDR)
	mtctr r12
	bctrl

return:
	li r3, 1

	lwz ADDR, 0x5C(sp)
	lwz FILE, 0x58(sp)
	lwz DLCODE, 0x54(sp)
	lwz r0, 0x64(sp)
	mtlr r0
	addi sp, sp, 0x60
	blr

ErrorFG: .long 0xFFFFFFFF
ErrorBG: .long 0x00000000