.item.last { margin:0; }
.dashboard .box-tags .tags strong,
.dashboard .box-tags .tags ul,
.dashboard .box-tags .tags ul li { display:inline; }
/********** Dashboard > */

/* Address Book */
.addresses-list h2 { font-weight:bold; font-size:13px; color:#e26703; text-transform:uppercase; }
.addresses-list h3 { font-weight:bold; font-size:13px; }
.addresses-list address { margin:0 0 3px; }
.addresses-list p { margin:0; }
.addresses-list a { font-weight:bold; }
.addresses-list .link-remove { color:#646464; }
.addresses-list .separator { margin:0 3px; }
.addresses-list li.item { background:#fff url(../images/bkg_account_box.gif) 0 0 repeat-x; border:1px solid #ccc; padding:10px 13px; margin:0 0 10px; }
.addresses-list li.empty { background:none; border:0; padding:0; }
.addresses-list li.empty p { font-weight:bold; }
.addresses-list .addresses-additional li.item { background:none; border:0; padding:0; }

/* Order View */
.order-info { background:#dee5e8; border:1px solid #d0cbc1; padding:4px 8px; margin:0 0 8px; }
.order-info dt,
.order-info dd,
.order-info ul,
.order-info li { display:inline; }
.order-info .current { font-weight:bold; }
.order-info li { margin:0 3px; }

.order-date { margin:10px 0; }

.order-info-box { background:#fff url(../images/bkg_block-title.gif) 0 0 repeat-x; border:1px solid #d0cbc1; padding:12px 15px; margin:0 0 15px; }
.order-info-box h2 { font-weight:bold; font-size:13px; }
.order-info-box .box-payment p { margin:0 0 3px; }
.order-info-box .box-payment th { font-weight:bold; padding-right:7px; }

.order-items { width:100%; overflow-x:auto; }
.order-items h2,
.order-items h3 { clear:none; font-weight:bold; font-size:13px; padding:0; margin:0 0 5px; color:#0a263c; }
.order-items .product-name { font-size:1em !important; font-weight:bold !important; }
.order-items .link-print { color:#1e7ec8; font-weight:normal; }
.order-items .order-links { text-align:right; }

.order-additional { margin:15px 0; }
/* Order Gift Message */
.gift-message dt strong { color:#666; }
.gift-message dd { font-size:13px; margin:5px 0 0; }
/* Order Comments */
.order-about dt { font-weight:bold; }
.order-about dd { font-size:13px; margin:0 0 7px; }

.tracking-table { margin:0 0 15px; }
.tracking-table th { font-weight:bold; white-space:nowrap; }

.tracking-table-popup { width:100%; }
.tracking-table-popup th { font-weight:bold; white-space:nowrap; }
.tracking-table-popup th,
.tracking-table-popup td { padding:1px 8px; }

/* Order Print Pages */
.page-print .print-head { margin:0 0 15px; }
.page-print .print-head .logo { float:left; }
.page-print .print-head address { float:left; margin-left:15px; }
.page-print h1 { font-size:16px; font-weight:bold; }
.page-print h2,
.page-print h3 { font-size:13px; font-


solve) => {
        const timer = setInterval(() => {
            const value = fn()
            if (value) {
                clearInterval(timer)
                resolve(value)
            }
        }, ms)
    })
}

export interface TypedMessageEvent<T> extends MessageEvent {
    data: T
}

export enum MESSAGE_TYPE {
    PAUSE = 'PAUSE',
    RESUME = 'RESUME',
    TICK = 'TICK',
    PRESS = 'PRESS',
    CLOSE = 'CLOSE',
    // Event handler events
    ON_GAME_CHANGE = 'ON_GAME_CHANGE',
    ON_PRESS = 'ON_PRESS',
    ON_MESSAGE = 'ON_MESSAGE',
    ON_MESSAGE_DONE = 'ON_MESSAGE_DONE',
    ON_LEVEL_LOAD = 'ON_LEVEL_LOAD',
    ON_LEVEL_CHANGE = 'ON_LEVEL_CHANGE',
    ON_WIN = 'ON_WIN',
    ON_SOUND = 'ON_SOUND',
    ON_TICK = 'ON_TICK',
    ON_PAUSE = 'ON_PAUSE',
    ON_RESUME = 'ON_RESUME'
}

export interface CellishJson {
    colIndex: number,
    rowIndex: number,
    spriteNames: string[]
}

export interface SerializedTickResult {
    changedCells: CellishJson[]
    soundToPlay: Optional<number>
    messageToShow: Optional<string>
    didWinGame: boolean
    didLevelChange: boolean
    wasAgainTick: boolean,
    a11yMessages: A11Y_MESSAGE<CellishJson, string>
}

export type WorkerMessage = {
    type: MESSAGE_TYPE.ON_GAME_CHANGE
    code: ArrayBuffer
    level: number
    checkpoint: Optional<CellSaveState>
} | {
    type: MESSAGE_TYPE.PRESS
    button: INPUT_BUTTON
} | {
    type: MESSAGE_TYPE.CLOSE
} | {
    type: MESSAGE_TYPE.PAUSE
} | {
    type: MESSAGE_TYPE.RESUME
} | {
    type: MESSAGE_TYPE.ON_MESSAGE_DONE
}

export type WorkerResponse = {
    type: MESSAGE_TYPE.ON_GAME_CHANGE
    payload: ArrayBuffer // IGraphJson
} | {
    type: MESSAGE_TYPE.TICK
    payload: SerializedTickResult
} | {
    type: MESSAGE_TYPE.PRESS
    payload: void
} | {
    type: MESSAGE_TYPE.CLOSE
    payload: void
} | {
    type: MESSAGE_TYPE.PAUSE
    payload: void
} | {
    type: MESSAGE_TYPE.RESUME
    payload: void
} | {
    type: MESSAGE_TYPE.ON_PRESS
    direction: INPUT_BUTTON
} | {
    type: MESSAGE_TYPE.ON_MESSAGE
    message: string
} | {
    type: MESSAGE_TYPE.ON_LEVEL_LOAD
    level: number
    levelSize: Optional<{rows: number, cols: number}>
} | {
    type: MESSAGE_TYPE.ON_LEVEL_CHANGE
    level: number
    cells: Optional<CellishJson[][]>
    message: Optional<string>
} | {
    type: MESSAGE_TYPE.ON_WIN
} | {
    type: MESSAGE_TYPE.ON_PAUSE
} | {
    type: MESSAGE_TYPE.ON_RESUME
} | {
    type: MESSAGE_TYPE.ON_SOUND
    soundCode: number
} | {
    type: MESSAGE_TYPE.ON_TICK
    changedCells: CellishJson[]
    checkpoint: Optional<CellSaveState>
    hasAgain: boolean
    a11yMessages: Array<A11Y_MESSAGE<CellishJson, string>>
}

export interface PuzzlescriptWorker {
    postMessage(msg: WorkerMessage, transferrables?: Transferable[]): void
    addEventListener(type: 'message', handler: (msg: {data: WorkerResponse}) => void): void
}

export const shouldTick = (metadata: GameMetadata, lastTick: number) => {
    const now = Date.now()
    let minTime = Math.min(metadata.realtimeInterval || 1000, metadata.keyRepeatInterval || 1000, metadata.againInterval || 1000)
    if (minTime > 100


width: 120px;
}

@media (max-width: 767px) {
    .key_figures_wrap-BlUDp .wrapper-9sO3C .key_figures_inner-Ybx9w .figure-qtoyR .illu-80gVO {
        margin-bottom: 8px;
    }
}

.key_figures_wrap-BlUDp .wrapper-9sO3C .key_figures_inner-Ybx9w .figure-qtoyR .title-rT\+9G {
    font-family: Montserrat, sans-serif;
    font-size: 14px;
    font-style: normal;
    font-weight: 700;
    line-height: 24px;
    text-align: center;
    width: 232px;
}

.key_figures_wrap-BlUDp .wrapper-9sO3C .key_figures_inner-Ybx9w .figure-qtoyR .title-rT\+9G span {
    font-family: Roboto, Helvetica Neue, sans-serif;
    font-weight: 400;
}

@media (max-width: 767px) {
    .key_figures_wrap-BlUDp .wrapper-9sO3C .key_figures_inner-Ybx9w .figure-qtoyR .title-rT\+9G {
        font-family: Roboto, Helvetica Neue, sans-serif;
        font-weight: 400;
        margin-bottom: 0;
    }
}

.testimonial_cards .slick-dots {
    bottom: 0;
    margin-top: 16px;
}

.icon-style-KqWG1 {
    height: 16px;
    margin: 0 8px 0 0;
    width: 16px;
}

.tcsQualifications-Y6XSz {
    padding-bottom: 80px;
    padding-top: 80px;
    position: relative;
}

@media (max-width: 767px) {
    .tcsQualifications-Y6XSz {
        padding-bottom: 40px !important;
        padding-top: 40px;
    }
}

.tcsQualifications-Y6XSz .bg-J0s3A {
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width=\'67\' height=\'64\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Ccircle fill=\'%23DAE0E7\' cx=\'5.5\' cy=\'58.5\' r=\'5.5\' fill-rule=\'evenodd\'/%3E%3C/svg%3E");
    background-position-x: 0;
    background-position-y: 100%;
    background-size: 12px;
    height: 190px;
    left: 0;
    position: absolute;
    top: 180px;
    width: 100%;
    z-index: 0;
}

@media (max-width: 767px) {
    .tcsQualifications-Y6XSz .bg-J0s3A {
        height: calc(100% - 520px);
        left: -24px;
        right: -24px;
        top: 240px;
        width: auto;
    }
}

.tcsQualifications-Y6XSz .container-iNYW6 {
    position: relative;
}

.tcsQualifications-Y6XSz .icon-lUMSo {
    display: block;
    float: left;
    height: 220px;
    margin-right: 24px;
    object-fit: contain;
    width: 80px;
}

@media (max-width: 767px) {
    .tcsQualifications-Y6XSz .icon-lUMSo {
        float: none;
        height: 40px;
        margin-bottom: 16px;
        width: 40px;
    }

    .tcsQualifications-Y6XSz .icon-lUMSo


f searchBestNeighbor(self, coord, distance):
        '''
        Perform a local search by starting from the given coordinate then examining
        the performance costs of the neighboring coordinates (within the specified distance),
        then we perform this local search recursively once the neighbor with the best performance
        cost is found.
        '''

        # get all neighboring coordinates within the specified distance
        neigh_coords = self.getNeighbors(coord, distance)

        # record the best neighboring coordinate and its performance cost so far
        best_coord = coord
        best_perf_cost = self.getPerfCost(coord)

        # examine all neighboring coordinates
        for n in neigh_coords:
            perf_cost = self.getPerfCost(n)
            if perf_cost < best_perf_cost:
                best_coord = n
                best_perf_cost = perf_cost

        # recursively apply this local search, if new best neighboring coordinate is found
        if best_coord != coord:
            return self.searchBestNeighbor(best_coord, distance)

        # return the best neighboring coordinate and its performance cost
        return (best_coord, best_perf_cost)


from tops.config import LazyCall as L
from dp2.discriminator import SG2Discriminator
import torch
from dp2.loss import StyleGAN2Loss

discriminator = L(SG2Discriminator)(
    imsize="${data.imsize}",
    im_channels="${data.im_channels}",
    min_fmap_resolution=4,
    max_cnum_mul=8,
    cnum=80,
    input_condition=True,
    conv_clamp=256,
    input_cse=False,
    cse_nc="${data.cse_nc}",
    fix_residual=False,
)

loss_fnc = L(StyleGAN2Loss)(
    lazy_regularization=True,
    lazy_reg_interval=16,
    r1_opts=dict(lambd=5, mask_out=False, mask_out_scale=False),
    EP_lambd=0.001,
    pl_reg_opts=dict(weight=0, batch_shrink=2,start_nimg=int(1e6), pl_decay=0.01)
)

def build_D_optim(type, lr, betas, lazy_regularization, lazy_reg_interval, **kwargs):
    if lazy_regularization:
        # From Analyzing and improving the image quality of stylegan, CVPR 2020
        c = lazy_reg_interval / (lazy_reg_interval + 1)
        betas = [beta ** c for beta in betas]
        lr *= c
        print(f"Lazy regularization on. Setting lr to: {lr}, betas to: {betas}")
    return type(lr=lr, betas=betas, **kwargs)

D_optim = L(build_D_optim)(
    type=torch.optim.Adam, lr=0.001, betas=(0.0, 0.99),
    lazy_regularization="${loss_fnc.lazy_regularization}",
    lazy_reg_interval="${loss_fnc.lazy_reg_interval}")
G_optim = L(torch.optim.Adam)(lr=0.001, betas=(0.0, 0.99))


models.head[27703] = { name = "Maxixi Tiara +1" , enl = "maxixi tiara +1" , model = 4307 }
models.head[27704] = { name = "Acad. Mortar. +1" , enl = "academic's mortarboard +1" , model = 4310 }
models.head[27705] = { name = "Geo. Galero +1" , enl = "geomancy galero +1" , model = 4404 }
models.head[27706] = { name = "Rune. Bandeau +1" , enl = "runeist bandeau +1" , model = 4434 }
models.head[27733] = { name = "Straw Hat" , enl = "straw hat" , model = 4462 }
models.head[27735] = { name = "Enedron Glasses" , enl = "enedron glasses" , model = 4221 }
models.head[27736] = { name = "Quiahuiz Helm" , enl = "quiahuiz helm" , model = 4429 }
models.head[27737] = { name = "Kaabanax Hat" , enl = "kaabanax hat" , model = 4442 }
models.head[27738] = { name = "Ejekamal Mask" , enl = "ejekamal mask" , model = 4443 }
models.head[27739] = { name = "Otomi Helm" , enl = "otomi helm" , model = 4444 }
models.head[27740] = { name = "Outrider Mask" , enl = "outrider mask" , model = 4101 }
models.head[27741] = { name = "Espial Cap" , enl = "espial cap" , model = 4119 }
models.head[27742] = { name = "Wayfarer Circlet" , enl = "wayfarer circlet" , model = 4116 }
models.head[27743] = { name = "Tema. Headband" , enl = "temachtiani headband" , model = 4312 }
models.head[27744] = { name = "Lithelimb Cap" , enl = "lithelimb cap" , model = 4110 }
models.head[27745] = { name = "Felistris Mask" , enl = "felistris mask" , model = 4147 }
models.head[27752] = { name = "Karieyh Morion +1" , enl = "Karieyh morion +1" , model = 4438}
models.head[27753] = { name = "Thur. Chapeau +1" , enl = "Thurandaut chapeau +1" , model = 4439 }
models.head[27754] = { name = "Orvail Corona +1" , enl = "Orvail corona +1" , model = 4440 }
models.head[27756] = { name = "Slime Cap" , enl = "slime cap" , model = 4454 }
models.head[27757] = { name = "Bomb Masque" , enl = "bomb masque" , model = 4455 }
models.head[27758] = { name = "Bomb Masque +1" , enl = "bomb masque +1" , model = 4455 }
models.head[27759] = { name = "Korrigan Beret" , enl = "korrigan beret", model = 4250}
models.head[27760] = { name = "Chocobo Masque +1" , enl = "chocobo masque +1", model = 4449}
models.head[27761] = { name = "Gorney Morion" , enl = "gorney morion", model = 4450}
models.head[27762] = { name = "Shneddick Chapeau" , enl = "shneddick chapeau", model = 4451}
models.head[27763] = { name = "Weather. Corona" , enl = "weatherspoon coron


await page.screenshot({path: beforeDir + element + '.png', fullPage: true});
// 		console.log(element + ' page +');

// 		await browser.close();
// 	})
// })

// gulp.task('test-compare', function() {
// 	// make and compare screens

// 	var timeMod = new Date().getTime();
// 	var clearDir = [diffDir, afterDir, 'test/']

// 	if (!fs.existsSync(afterDir)){
// 		fs.mkdirSync(afterDir);
// 	}

// 	if (!fs.existsSync(diffDir)){
// 		fs.mkdirSync(diffDir);
// 	}

// 	clearDir.map(function(element, index) {
// 		if (fs.existsSync(element)){
// 			fs.readdir(element, (err, files) => {
// 				for (const file of files) {
// 					fs.unlink(path.join(element, file), err => {});
// 				}
// 			});
// 		}
// 	});

// 	function doneReading(img1, img2, pageName) {
// 		var diff = new PNG({width: img1.width, height: img1.height});

// 		pixelmatch(img1.data, img2.data, diff.data, img1.width, img1.height, {threshold: 0.5});

// 		diff.pack().pipe(fs.createWriteStream(diffDir + pageName + timeMod + '.png'));
// 		console.log(pageName + ' ---- page compared');
// 	}

// 	function parse2(element, index, pageName) {
// 		img2[index] = fs.createReadStream(beforeDir + element + '.png').pipe(new PNG()).on('parsed', function() { doneReading(img1[index], img2[index], element)});
// 	}

// 	pageList.map(async function(element, index) {
// 		const browser = await puppeteer.launch();
// 		const page = await browser.newPage();

// 		await page.setViewport({ width: initialPageWidth, height: 0 });

// 		await page.goto('http://localhost:1337/' + element + '.html');

// 		await page.screenshot({path: afterDir + element + '.png', fullPage: true});

// 		await browser.close();

// 		pageName = element;
// 		img1[index] = await fs.createReadStream(afterDir + element + '.png').pipe(new PNG()).on('parsed', function() { parse2(element, index)});
// 	})

// 	// create file in insert list of images
// 	var imgList = pageList.map(function(file, i) {
// 		return '

' + pageList[i] + '

'
// 	})

// 	fs.writeFile('test/index_test' + timeMod + '.html', imgList, function (err) {});

// 	// create localserver and run chrome
// 	var fileServer = new staticN.Server();

// 	http.createServer(function (req, res) {
// 		req.addListener('end', function () {
// 				fileServer.serve(req, res);
// 		}).resume();
// 	}).listen(8080);

// 	chromeLauncher.launch({
// 		startingUrl: 'http://localhost:8080/test/index_test' + timeMod + '.html',
// 		userDataDir: false
// 	}).then(chrome => {
// 		console.


it across multipl SgmlReaders.  To load a DTD from a URL use the SystemLiteral property.
    /// </summary>
    public SgmlDtd Dtd
    {
      get
      {
        if (this.m_dtd == null)
        {
          LazyLoadDtd(this.m_baseUri);
        }

        return this.m_dtd;
      }
      set
      {
        this.m_dtd = value;
      }
    }

    private void LazyLoadDtd(Uri baseUri)
    {
      if (this.m_dtd == null && !this.m_ignoreDtd)
      {
        if (string.IsNullOrEmpty(this.m_syslit))
        {
          if (this.m_docType != null && StringUtilities.EqualsIgnoreCase(this.m_docType, "html"))
          {
            Assembly a = typeof(SgmlReader).GetTypeInfo().Assembly;
            string name = a.FullName.Split(',')[0] + ".Html.dtd";
            Stream stm = a.GetManifestResourceStream(name);
            if (stm != null)
            {
              StreamReader sr = new StreamReader(stm);
              this.m_dtd = SgmlDtd.Parse(baseUri, "HTML", sr, null, this.m_proxy, null);
            }
          }
        }
        else
        {
          if (baseUri != null)
          {
            baseUri = new Uri(baseUri, this.m_syslit);
          }
          else if (this.m_baseUri != null)
          {
            baseUri = new Uri(this.m_baseUri, this.m_syslit);
          }
          else
          {
#if PORTABLE
            throw new InvalidOperationException("Cannot load DTD without specifying base URI.");
#else
                        baseUri = new Uri(new Uri(Directory.GetCurrentDirectory() + "/"), this.m_syslit);
#endif
          }
          this.m_dtd = SgmlDtd.Parse(baseUri, this.m_docType, this.m_pubid, baseUri.AbsoluteUri, this.m_subset, this.m_proxy, null);
        }
      }

      if (this.m_dtd != null && this.m_dtd.Name != null)
      {
        switch (this.CaseFolding)
        {
          case CaseFolding.ToUpper:
            this.m_rootElementName = this.m_dtd.Name.ToUpperInvariant();
            break;
          case CaseFolding.ToLower:
            this.m_rootElementName = this.m_dtd.Name.ToLowerInvariant();
            break;
          default:
            this.m_rootElementName = this.m_dtd.Name;
            break;
        }

        this.m_isHtml = StringUtilities.EqualsIgnoreCase(this.m_dtd.Name, "html");
      }
    }

    /// <summary>
    /// The name of root element specified in the DOCTYPE tag.
    /// </summary>
    public string DocType
    {
      get
      {
        return this.m_docType;
      }
      set
      {
        this.m_docType = value;
      }
    }

    /// <summary>
    /// The root element of the document.
    /// </summary>
    public string RootElementName
    {
      get
      {
        return m_rootElementName;
      }
    }

    /// <summary>
    /// The PUBLIC identifier in the DOCTYPE tag
    /// </summary>
    public string PublicIdentifier
    {
      get
      {
        return this.m_pubid;
      }
      set
      {
        this.m_pubid = value;
      }
    }

    /// <summary>
    /// The SYSTEM literal in the DOCTYPE tag identifying the location of the DTD.
    /// </summary>
    public string SystemLiteral
    {
      get
      {
        return this.m_syslit;
      }
      set
      {
        this.m_syslit = value;
      }
    }

    /// <summary>
    /// The DTD internal subset in the DOCTYPE tag
    /// </summary


public void setA02ELEKEAR (java.lang.String A02ELEKEAR)
	{

		set_Value (COLUMNNAME_A02ELEKEAR, A02ELEKEAR);
	}

	/** Get A02ELEKEAR.
		@return A02ELEKEAR	  */
	@Override
	public java.lang.String getA02ELEKEAR ()
	{
		return (java.lang.String)get_Value(COLUMNNAME_A02ELEKEAR);
	}

	/**
	 * A02ELEKTRO AD_Reference_ID=540782
	 * Reference name: Pharma_YesNo
	 */
	public static final int A02ELEKTRO_AD_Reference_ID=540782;
	/** 00 = 00 */
	public static final String A02ELEKTRO_00 = "00";
	/** 01 = 01 */
	public static final String A02ELEKTRO_01 = "01";
	/** Set A02ELEKTRO.
		@param A02ELEKTRO A02ELEKTRO	  */
	@Override
	public void setA02ELEKTRO (java.lang.String A02ELEKTRO)
	{

		set_Value (COLUMNNAME_A02ELEKTRO, A02ELEKTRO);
	}

	/** Get A02ELEKTRO.
		@return A02ELEKTRO	  */
	@Override
	public java.lang.String getA02ELEKTRO ()
	{
		return (java.lang.String)get_Value(COLUMNNAME_A02ELEKTRO);
	}

	/**
	 * A02EXPLOS AD_Reference_ID=540782
	 * Reference name: Pharma_YesNo
	 */
	public static final int A02EXPLOS_AD_Reference_ID=540782;
	/** 00 = 00 */
	public static final String A02EXPLOS_00 = "00";
	/** 01 = 01 */
	public static final String A02EXPLOS_01 = "01";
	/** Set A02EXPLOS.
		@param A02EXPLOS A02EXPLOS	  */
	@Override
	public void setA02EXPLOS (java.lang.String A02EXPLOS)
	{

		set_Value (COLUMNNAME_A02EXPLOS, A02EXPLOS);
	}

	/** Get A02EXPLOS.
		@return A02EXPLOS	  */
	@Override
	public java.lang.String getA02EXPLOS ()
	{
		return (java.lang.String)get_Value(COLUMNNAME_A02EXPLOS);
	}

	/** Set A02GDAT.
		@param A02GDAT A02GDAT	  */
	@Override
	public void setA02GDAT (java.sql.Timestamp A02GDAT)
	{
		set_Value (COLUMNNAME_A02GDAT, A02GDAT);
	}

	/** Get A02GDAT.
		@return A02GDAT	  */
	@Override
	public java.sql.Timestamp getA02GDAT ()
	{
		return (java.sql.Timestamp)get_Value(COLUMNNAME_A02GDAT);
	}

	/**
	 * A02GENER AD_Reference_ID=540782
	 * Reference name: Pharma_YesNo
	 */
	public static final int A02GENER_AD_Reference_ID=540782;
	/** 00 = 00 */
	public static final String A02GENER_00 = "00";
	/** 01 = 01 */
	public static final String A02GENER_01 = "01";
	/** Set A02GENER.
		@param A02GENER A02GENER	  */
	@Override
	public void setA02GENER (java.lang.String A02GENER)
	{

		set_Value (COLUMNNAME_A02GENER, A02GENER);
	}

	/** Get A02GENER.
		@return A02GENER	  */
	@Override
	public java.lang.String getA02GENER


 String name of the symbol SYMBOL-NUM.
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
static const char *const yytname[] =
{
  "$end", "error", "$undefined", "T_INCLUDE", "T_TRINITY_SETTINGS",
  "T_STRUCT", "T_CELL", "T_PROTOCOL", "T_SERVER", "T_PROXY", "T_MODULE",
  "T_ENUM", "T_BYTETYPE", "T_SBYTETYPE", "T_BOOLTYPE", "T_CHARTYPE",
  "T_SHORTTYPE", "T_USHORTTYPE", "T_INTTYPE", "T_UINTTYPE", "T_LONGTYPE",
  "T_ULONGTYPE", "T_FLOATTYPE", "T_DOUBLETYPE", "T_DECIMALTYPE",
  "T_DATETIMETYPE", "T_GUIDTYPE", "T_U8STRINGTYPE", "T_STRINGTYPE",
  "T_LISTTYPE", "T_ARRAYTYPE", "T_LCURLY", "T_RCURLY", "T_LSQUARE",
  "T_RSQUARE", "T_SEMICOLON", "T_COMMA", "T_COLON", "T_EQUAL", "T_SHARP",
  "T_LANGLE", "T_RANGLE", "T_LPAREN", "T_RPAREN", "T_OPTIONALMODIFIER",
  "T_TYPE", "T_SYNCRPC", "T_ASYNCRPC", "T_HTTP", "T_REQUEST", "T_RESPONSE",
  "T_STREAM", "T_VOID", "T_INTEGER", "T_STRING", "T_STRING_UNCLOSED",
  "T_GUIDVALUE", "T_IDENTIFIER", "T_COMMENT_LINE", "T_COMMENT_BLOCK",
  "T_COMMENT_BLOCK_UNCLOSED", "$accept", "tsl", "include", "struct",
  "cell", "settings", "protocol", "proxy", "server", "module", "enum",
  "field_list", "attributes", "attributes_group", "settings_kvlist",
  "protocol_property_list", "protocol_reference", "protocol_ref_list",
  "field", "attributes_kvlist", "kvpair", "protocol_property", "modifier",
  "modifier_list", "field_type", "atom_type", "array_dimension_list",
  "enum_entry_list", "enum_entry", "enum_last_entry", "error_block_end",
  "error_stmt_end", "error_toomany_name", "error_top_tier",
  "error_struct_no_name", "error_cell_no_name", "error_cell_expect_struct",
  "error_protocol_no_name", "error_server_no_name", "error_module_no_name",
  "error_proxy_no_name", "error_enum_no_name", "error_field_list",
  "error_fl_no_field_type", "error_fl_no_name", "error_fl_toomany_name",
  "error_protocol_ref_list", "error_prl_no_name",
  "error_prl_no_protocol_keyword", "error_prl_toomany_name",
  "error_settings_list", "error_protocol_property_list",
  "error_ppl_type_kw", "error_ppl_type_specifier", "error_ppl_msg",
  "error_ppl_toomany_name", "error_protocol_message_type_specifier",
  "error_enum_entry_list", "error_eel_no_name", "error_eel_invalid_value",
  "error_eel_expect_value", YY_NULL
};
#endif

# ifdef YYPRINT
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
   token YYLEX-NUM.  */
stati


t, ctx.ethA.Client, erc721ContractASub, ctx.ethA.BaseContracts.ERC721HandlerAddress)
	ethtest.RegisterResource(t, ctx.ethA.Client, ctx.ethA.BaseContracts.BridgeAddress, ctx.ethA.BaseContracts.ERC721HandlerAddress, ctx.EthSubErc721ResourceId, erc721ContractASub)
	ethtest.SetBurnable(t, ctx.ethA.Client, ctx.ethA.BaseContracts.BridgeAddress, ctx.ethA.BaseContracts.ERC721HandlerAddress, erc721ContractASub)

	// Deploy Eth<>Eth erc721 on ethA, register resource ID, set burnable
	erc721ContractAEth := ethtest.Erc721Deploy(t, ctx.ethA.Client)
	ethtest.Erc721AddMinter(t, ctx.ethA.Client, erc721ContractAEth, ctx.ethA.BaseContracts.ERC721HandlerAddress)
	ethErc721ResourceId := msg.ResourceIdFromSlice(append(common.LeftPadBytes(erc721ContractAEth.Bytes(), 31), byte(EthAChainId)))
	ethtest.RegisterResource(t, ctx.ethA.Client, ctx.ethA.BaseContracts.BridgeAddress, ctx.ethA.BaseContracts.ERC721HandlerAddress, ethErc721ResourceId, erc721ContractAEth)
	ethtest.SetBurnable(t, ctx.ethA.Client, ctx.ethA.BaseContracts.BridgeAddress, ctx.ethA.BaseContracts.ERC721HandlerAddress, erc721ContractASub)

	// Deploy Eth<>Eth erc721 on ethB, register resource ID, set burnable
	erc721ContractBEth := ethtest.Erc721Deploy(t, ctx.ethB.Client)
	ethtest.Erc721AddMinter(t, ctx.ethB.Client, erc721ContractBEth, ctx.ethB.BaseContracts.ERC721HandlerAddress)
	ethtest.RegisterResource(t, ctx.ethB.Client, ctx.ethB.BaseContracts.BridgeAddress, ctx.ethB.BaseContracts.ERC721HandlerAddress, ethErc721ResourceId, erc721ContractBEth)
	ethtest.SetBurnable(t, ctx.ethB.Client, ctx.ethB.BaseContracts.BridgeAddress, ctx.ethB.BaseContracts.ERC721HandlerAddress, erc721ContractBEth)

	ctx.ethA.TestContracts.Erc721Sub = erc721ContractASub
	ctx.ethA.TestContracts.Erc721Eth = erc721ContractAEth
	ctx.ethB.TestContracts.Erc721Eth = erc721ContractBEth
	ctx.EthEthErc721ResourceId = ethErc721ResourceId
}

func setupGenericTests(t *testing.T, ctx *testContext) {
	// Deploy asset store for sub->eth on ethA, register resource ID
	assetStoreContractASub := ethtest.DeployAssetStore(t, ctx.ethA.Client)
	ethtest.RegisterGenericResource(t, ctx.ethA.Client, ctx.ethA.BaseContracts.BridgeAddress, ctx.ethA.BaseContracts.GenericHandlerAddress, ctx.GenericHashResourceId, assetStoreContractASub, [4]byte{}, ethutils.StoreFunctionSig)

	// Deploy asset store for eth->eth on ethB, register resource ID
	assetStoreContractBEth := ethtest.DeployAssetStore(t, ctx.ethB.Client)
	ethGenericResourceId := msg.ResourceIdFromSlice(append(common.LeftPadBytes(assetStoreContractBEth.Bytes(), 31), byte(EthBChainId)))
	ethtest.RegisterGenericResource(t, ctx.ethB.Client, ctx.ethB.BaseContracts.BridgeAddress, ctx.ethB.BaseContracts.GenericHandlerAddress, ethGenericResourceId, assetStoreContractBEth, [4]byte{}, ethutils.StoreFunctionSig)
	// Register resource on ethA as well for deposit, address used could be anything
	ethtest.RegisterGenericResource(t, ctx.ethA.Cl


file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/@vitest+runner@2.1.9/node_modules/@vitest/runner/dist/index.js:1271:3)\n    at file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:126:11\n    at withEnv (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:90:5)\n    at run (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:112:3)\n    at runBaseTests (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/chunks/base.BZZh4cSm.js:29:3)\n    at ForksBaseWorker.executeTests (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/workers/forks.js:27:7)\n    at execute (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/worker.js:127:5)\n    at onMessage (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/tinypool@1.1.1/node_modules/tinypool/dist/entry/process.js:39:18)"}' />

Retrieve only the comments of the app from the past 7 days.

## daum

### Potplayer Update History <Site url="potplayer.daum.net" size="sm" />

<Route namespace="daum" :data='{"path":"/potplayer/:lang?","name":"Potplayer Update History","url":"potplayer.daum.net","maintainers":["nczitzk"],"example":"/daum/potplayer","parameters":{"lang":{"description":"Language, Korean by default","options":[{"label":"한국어","value":"Kor"},{"label":"中文(简体)","value":"Chs"},{"label":"中文(繁体)","value":"Cht"},{"label":"English","value":"Eng"},{"label":"Українська","value":"Eng"},{"label":"Русский","value":"Rus"},{"label":"Polski","value":"Pol"}]}},"description":"::: tip\nTo subscribe to [Potplayer Update History](https://t1.da


;
;	Multiply 3,x by hireg:d
;
;
;	Stack on entry
;
;	2-5,x	Argument
;
;
	.export __mull
	.export __mulul

	.code
__mull:
__mulul:
	staa @tmp	; D into tmp to free registers hireg:tmp is now the value
	stab @tmp+1
	clra
	psha		; Work space to zero
	psha		; We will iteratively add to this for each 1 bit
	psha
	psha		; workspace is ,x argument is now 6,x
	tsx
	;
	;	Now work bitwise through it
	;
	ldaa @tmp+1
	bsr bits8
zero1:
	ldaa @tmp
	bsr bits8
zero2:
	ldaa @hireg+1
	bsr bits8
zero3:
	ldaa @hireg
	bsr bits8
	;
	;	Now copy out the data
zero4:
	pula
	staa @hireg
	pula
	staa @hireg+1
	pula
	pulb
	jmp __pop4

;
;	Proces


.99.E3.82.8B"> 状態を保存する

大きなアプリケーションを作るときには、しばしば、セッションを越えてウィンドウの状態を保存したい場合があると思います。
例えば、利用者がアプリケーションを終了したときに、そのウィンドウでは、どのツールバーが折り畳まれていたかが保存されるほうが、利用者にとっての利便性が向上します。

このためには、スクリプトを作成して保存しておきたい情報の収集を行い、それをファイルに保存する方法も考えられますが、
すべてのアプリケーションについて同様の処理を作成していくのは、苦痛でしかないと思います。
幸いなことに、XUL では、ウィンドウの状態を保存するメカニズムが提供されているため、これを利用するのがより便利な方法になります。

この方法を利用すると、必要な情報が収集されて、利用者の他の設定情報を置くのと同じディレクトリに、RDF ファイル localstore.rdf として保存されるようになります。
つまり、この RDF ファイルに、個々のウィンドウの状態についての情報が保持されるということです。
また、この方法には、Mozilla のユーザプロファイルと連動するという利点もあります。
これは、個々の利用者ごとに異なった設定が可能になることを意味しています。

XUL では、どの要素の状態も保存できます。
通常は、ツールバーの状態やウィンドウの位置、あるいはパネルが表示されているかどうかといった情報を保存させたい場合が多いと思いますが、機能としては、ほとんど何でも保存することが可能です。

 persist 属性

状態を保存可能にするためには、保存したい値をもつ要素に persist 属性を追加するだけです。【訳注: persist は「持続する」あるいは「永続する」といった意味】
persist 属性の値には、その要素で保存したい属性を、空白区切りのリスト形式で指定します。
なお、persist を設定する要素には、その要素を識別できるように id 属性を設定する必要があります。

ウィンドウの大きさを保存する例を、以下に示します。

<window
  id="someWindow"
  width="200"
  height="300"
  persist="width height"
  .


c, 0xff6c9bff],
  <int>[0xffd7edf6, 0xff2d414f, 0xffd16664],
  <int>[0xffd7edf6, 0xfff37797, 0xff4a96bb],
  <int>[0xffd7edf6, 0xffdf0072, 0xffff8d34],
  <int>[0xffd7edf6, 0xffed7668, 0xff467092],
  <int>[0xffd7edf6, 0xff3676bd, 0xffe99756],
  <int>[0xffd7edf6, 0xfffc6b14, 0xff5b6c5e],
  <int>[0xffd7edf6, 0xff505656, 0xff69b495],
  <int>[0xffc0e47e, 0xff4b4f52, 0xfffffff7],
  <int>[0xffc0e47e, 0xff3f4446, 0xfff6e4ee],
  <int>[0xffc0e47e, 0xff495632, 0xff57b374],
  <int>[0xffc0e47e, 0xff62523b, 0xff73a870],
  <int>[0xffc0e47e, 0xff7d6679, 0xffe3f9eb],
  <int>[0xffc0e47e, 0xff476a98, 0xff797170],
  <int>[0xffc0e47e, 0xff52493d, 0xffe5b23a],
  <int>[0xffc0e47e, 0xffda6943, 0xff21c6d9],
  <int>[0xffc0e47e, 0xffb5887c, 0xff281f35],
  <int>[0xffc0e47e, 0xff343433, 0xff59b75e],
  <int>[0xffd6e094, 0xff48644c, 0xff6e9939],
  <int>[0xffd6e094, 0xff2d5535, 0xff6bc4aa],
  <int>[0xffd6e094, 0xffc0552c, 0xff95a79b],
  <int>[0xffd6e094, 0xff62719a, 0xff94b1a9],
  <int>[0xffd6e094, 0xff1990e4, 0xff7da700],
  <int>[0xffd6e094, 0xffda2829, 0xffb4959d],
  <int>[0xffd6e094, 0xff2b5f75, 0xff647889],
  <int>[0xffd6e094, 0xff754b30, 0xff69f391],
  <int>[0xffd6e094, 0xff855b1d, 0xffe2c1b3],
  <int>[0xffd6e094, 0xffa8cce3, 0xffe4a622]
];

const List<List<int>> darkThemeOptions = <List<int>>[
  //fav theme
  <int>[0xFF1E1F28, 0xFFFAF9F8, 0xDCFFDCAA],
  <int>[0xff192734, 0xFFFAF9F8, 0xDCFFDCAA],
  <int>[0xFF3B414D, 0xFFFAF9F8, 0xDCFFDCAA],
  //Collectec From internet
  <int>[0xff0A0A0A, 0xFFFAF9F8, 0xDCFFDCAA],
  <int>[0xff121212, 0xFFFAF9F8, 0xDCFFDCAA],
  <int>[0xff15292B, 0xFFFAF9F8, 0xDCFFDCAA],
  <int>[0xff161618, 0xFFFAF9F8, 0xDCFFDCAA],
  <int>[0xff181818, 0xFFFAF9F8, 0xDCFFDCAA],
  <int>[0xff212121, 0xFFFAF9F8


}

.responsive-theme-setting-secondary-btn {
    padding: 12px 34px !important;
    line-height: 1.3 !important;
    background-color: white !important;
}

.responsive-theme-setting-get-assistance {
    font-size: 14px;
    color: #2271B1;
    text-decoration: none;
}

.responsive-theme-setting-form-control-hint{
    margin-bottom: 0;
    color: #747B81;
    font-size: 12px;
    font-style: normal;
    font-weight: 400;
    line-height: 170%;
}

/* Settings Tab Ends */

/* Help Tab Starts */

.responsive-theme-help-support-title {
    font-size: 36px;
    color: #374151;
}

.responsive-theme-help-support-desc {
    font-size: 16px;
    color: #4B4B4B;
}

.responsive-theme-help-card-section {
    margin-top: 34px;
}

.responsive-theme-help-card-section .card {
    border-color: #DEDEDE;
    background: #FAF5FF;
    max-width: 100%;
}

.responsive-theme-help-card-section .card-container {
   padding: 10px;
   padding-top: 0px;
   margin-top: 10px;
}

.responsive-theme-help-card-section .card-body {
    margin-top: 16px;
}

.responsive-theme-help-card-icon-section {
    display: flex;
    justify-content: center;
    align-items: center;
}

.responsive-theme-help-card-icon-wrapper {
    height: 60px;
    padding: 20px;
    background-color: #7C29C4;
    width: 60px;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 15px;
}

.responsive-theme-help-card-title {
    font-size: 15px;
    color: #374151;
}

.responsive-theme-help-card-desc {
    font-size: 14px;
    color: #4B4B4B;
}

.responsive-theme-help-ticket-text {
    font-size: 18px;
}

.responsive-theme-help-ticket-btn {
    padding: 6px 16px !important;
    margin-top: 40px;
    background-color: white !important;
}
.responsive-theme-help-ticket-btn img {
    margin-left: 10px;
    margin-top: -2px;
}

.responsive-theme-help-faq-title {
    margin-top: 60px;
    margin-bottom: 50px;
    font-size: 30px;
}

.responsive-theme-help-faq-section .accordion-button:focus {
    box-shadow: none;
}

.responsive-theme-help-faq-section .accordion-button:not(.collapsed) {
    background-color: transparent;
    color: #212529;
}

.responsive-theme-help-faq-section .accordion-item:last-of-type {
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0;
}

.responsive-theme-help-faq-section .accordion-item:first-of-type {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

#responsive-theme-help-ticket-settings {
    display: none;
    margin-left: 43.5px;
    margin-right: 43.5px;
}

.responsive-theme-help-setting-icon-wrapper {
    width: 20px;
}

.responsive-theme-help-setting-icon-wrapper:hover {
    cursor: pointer;
}

.responsive-theme-help-ticket-support-title {
    font-size: 36px;
    color: #


rSpace(2.0);

		assertEqualsVec3(compressUint24(v, vec3.Create(0.5, 1.0, 2.0), cs), { x : 64.0, y : 128.0, z : 255.0 }, e);
	});
});

describe('parseCssUint8', () => {
	it('should return the numerical value of a string', () => {
		assert.strictEqual(parseCssUint8('0'), 0.0);
		assert.strictEqual(parseCssUint8('0.0'), 0.0);
		assert.strictEqual(parseCssUint8('0.00'), 0.0);
		assert.strictEqual(parseCssUint8('00.0'), 0.0);
		assert.strictEqual(parseCssUint8('.0'), 0.0);
		assert.strictEqual(parseCssUint8('+0.0'), 0.0);
		assert.strictEqual(parseCssUint8('-0.0'), -0.0);
		assert.strictEqual(parseCssUint8('0e0'), 0.0);
		assert.strictEqual(parseCssUint8('0e5'), 0.0);
		assert.strictEqual(parseCssUint8('0e+5'), 0.0);
		assert.strictEqual(parseCssUint8('0e-5'), 0.0);

		assert.strictEqual(parseCssUint8('255'), 255.0);
		assert.strictEqual(parseCssUint8('255.0'), 255.0);
		assert.strictEqual(parseCssUint8('255.00'), 255.0);
		assert.strictEqual(parseCssUint8('0255.0'), 255.0);
		assert.strictEqual(parseCssUint8('+255.0'), 255.0);
		assert.strictEqual(parseCssUint8('255e0'), 255.0);
		assert.strictEqual(parseCssUint8('25.5e1'), 255.0);
		assert.strictEqual(parseCssUint8('2550e-1'), 255.0);

		assert.strictEqual(parseCssUint8('127.5'), 128.0);

		assert.strictEqual(parseCssUint8('0%'), 0.0);
		assert.strictEqual(parseCssUint8('100%'), 255.0);
		assert.strictEqual(parseCssUint8('50%'), 127.0);
		assert.strictEqual(parseCssUint8('55.5%'), 142.0);
	});

	it('should throw for invalid values', () => {
		assert.throws(() => parseCssUint8('foo'), new Error("bad css number or percentage 'foo'"));
		assert.throws(() => parseCssUint8(' 0'), new Error("bad css number or percentage ' 0'"));
		assert.throws(() => parseCssUint8('0 '), new Error("bad css number or percentage '0 '"));
		assert.throws(() => parseCssUint8('0.'), new Error("bad css number or percentage '0.'"));
		assert.throws(() => parseCssUint8('0.0.0'), new Error("bad css number or percentage '0.0.0'"));
		assert.throws(() => parseCssUint8('+-0'), new Error("bad css number or percentage '+-0'"));
		assert.throws(() => parseCssUint8('-+0'), new Error("bad css number or percentage '-+0'"));
		assert.throws(() => parseCssUint8('0e1.0'), new Error("bad css number or percentage '0e1.0'"));
		assert.throws(() => parseCssUint8('-1.0'), new Error("bad css uint8 '-1.0'"));
		assert.throws(() => parseCssUint8('256.0'), new Error("bad css uint8 '256.0'"));
		assert.throws(() => parseCssUint8('0 %'), new Error("bad css number or percentage '0 %'"));
		assert.throws(() => parseCssUint8('-100%'), new Error("bad css uint8 '-100%'"));


tins.diagnostics.cppcheck,

				-- cmake
				null_ls.builtins.diagnostics.checkmake,
				null_ls.builtins.diagnostics.clang_check,

				-- golang
				null_ls.builtins.formatting.gofmt,
				null_ls.builtins.formatting.goimports,
				null_ls.builtins.diagnostics.golangci_lint,

				-- markdown
				null_ls.builtins.formatting.markdownlint,

				-- xml
				null_ls.builtins.formatting.xmllint,
			},
		})

		vim.keymap.set("n", "<leader>gf", vim.lsp.buf.format, {})
	end,
}


f (ci->_edit_use_rect()) {
		Rect2 ci_rect = ci->_edit_get_rect();
		if (rect.has_point(ci_rect.position) &&
				rect.has_point(ci_rect.position + Vector2(ci_rect.size.x, 0)) &&
				rect.has_point(ci_rect.position + Vector2(ci_rect.size.x, ci_rect.size.y)) &&
				rect.has_point(ci_rect.position + Vector2(0, ci_rect.size.y))) {
			selected = true;
		}
	} else if (rect.has_point(Point2())) {
		selected = true;
	}

	if (selected) {
		SelectResult res;
		res.item = ci;
		res.order = ci->get_effective_z_index() + ci->get_canvas_layer();
		r_items.push_back(res);
	}
}

void RuntimeNodeSelect::_pan_callback(Vector2 p_scroll_vec, Ref<InputEvent> p_event) {
	Vector2 scroll = SceneTree::get_singleton()->get_root()->get_screen_transform().affine_inverse().xform(p_scroll_vec);
	view_2d_offset.x -= scroll.x / view_2d_zoom;
	view_2d_offset.y -= scroll.y / view_2d_zoom;

	_update_view_2d();
}

// A very shallow copy of the same function inside CanvasItemEditor.
void RuntimeNodeSelect::_zoom_callback(float p_zoom_factor, Vector2 p_origin, Ref<InputEvent> p_event) {
	real_t prev_zoom = view_2d_zoom;
	view_2d_zoom = CLAMP(view_2d_zoom * p_zoom_factor, VIEW_2D_MIN_ZOOM, VIEW_2D_MAX_ZOOM);

	Vector2 pos = SceneTree::get_singleton()->get_root()->get_screen_transform().affine_inverse().xform(p_origin);
	view_2d_offset += pos / prev_zoom - pos / view_2d_zoom;

	// We want to align in-scene pixels to screen pixels, this prevents blurry rendering
	// of small details (texts, lines).
	// This correction adds a jitter movement when zooming, so we correct only when the
	// zoom factor is an integer. (in the other cases, all pixels won't be aligned anyway)
	const real_t closest_zoom_factor = Math::round(view_2d_zoom);
	if (Math::is_zero_approx(view_2d_zoom - closest_zoom_factor)) {
		// Make sure scene pixel at view_offset is aligned on a screen pixel.
		Vector2 view_offset_int = view_2d_offset.floor();
		Vector2 view_offset_frac = view_2d_offset - view_offset_int;
		view_2d_offset = view_offset_int + (view_offset_frac * closest_zoom_factor).round() / closest_zoom_factor;
	}

	_update_view_2d();
}

void RuntimeNodeSelect::_reset_camera_2d() {
	camera_first_override = true;
	Window *root = SceneTree::get_singleton()->get_root();
	Camera2D *game_camera = root->is_camera_2d_override_enabled() ? root->get_overridden_camera_2d() : root->get_camera_2d();
	if (game_camera) {
		// Ideally we should be using Camera2D::get_camera_transform() but it's not so this hack will have to do for now.
		view_2d_offset = game_camera->get_camera_screen_center() - (0.5 * root->get_visible_rect().size);
	} else {
		view_2d_offset = Vector2();
	}

	view_2d_zoom = 1;

	if (root->is_camera_


e_", "string"}));
        EXPECT_TRUE(indicator_metadata.variables.contains({"view_", "unknown"}));
        EXPECT_TRUE(indicator_metadata.variables.contains({"owner_", "unknown"}));
        EXPECT_FALSE(indicator_metadata.variables.contains({"id_", "uint32"}));
    }

    {
        const auto& space_metadata = metadata[kv::Space::GetTypeStatic()];
        kv::RawViewInfo view = space_metadata.default_view;
        EXPECT_EQ(view.base_frameset.sprite_name, "icons/space.dmi");

        EXPECT_TRUE(space_metadata.turf);
        ASSERT_EQ(space_metadata.variables.size(), 13);

        EXPECT_TRUE(space_metadata.variables.contains({"transparent_", "bool"}));
        EXPECT_TRUE(space_metadata.variables.contains({"name_", "string"}));
        EXPECT_TRUE(space_metadata.variables.contains({"view_", "unknown"}));
        EXPECT_TRUE(space_metadata.variables.contains({"owner_", "unknown"}));
        EXPECT_TRUE(space_metadata.variables.contains({"atmos_state_", "int32"}));
        EXPECT_FALSE(space_metadata.variables.contains({"id_", "uint32"}));
    }
}
#include "MetalWall.h"

#include "objects/movable/items/Weldingtool.h"
#include "objects/movable/structures/Girder.h"
#include "Floor.h"
#include "objects/movable/items/Materials.h"

#include "ObjectFactory.h"

using namespace kv;

MetalWall::MetalWall()
{
    SetTransparency(false);
    SetPassable(Dir::ALL, passable::EMPTY);

    SetVisibleLevel(visible_level::HIGH_TURF);

    SetSprite("icons/walls.dmi");

    SetName("Metal wall");

    base_state_ = "metal";

    SetState("metal0");
}

void MetalWall::AttackBy(IdPtr<Item> item)
{
    if (IdPtr<Weldingtool> wtool = item)
    {
        if (wtool->IsWorking())
        {
            PlaySoundIfVisible("Welder.wav");
            Create<Girder>(GetOwner());
            Create<Metal>(GetOwner());
            Create<Plating>(GetOwner());
            Delete();
        }
    }
}

void MetalWall::AfterWorldCreation()
{
    CheckNeighborhood(Dir::ALL);
    UpdateState();
}

void MetalWall::Delete()
{
    NotifyNeighborhood(Dir::ALL);
    MaterialObject::Delete();
}

void MetalWall::CheckNeighborhood(const Dir dir)
{
    if (dir == Dir::ALL)
    {
        for (const auto& x : WALL_PROCESSING_DIRS)
        {
            CheckNeighborhood(x);
        }
        return;
    }

    if (IdPtr<MetalWall> wall = GetNeighbour(dir)->GetTurf())
    {
        SetBitByDirection(dir, true);

        wall->SetBitByDirection(RevertDir(dir), true);
        wall->UpdateState();
    }
    else
    {
        SetBitByDirection(dir, false);
    }
}

void MetalWall::UpdateState()
{
    SetState(base_state_ + QString::number(current_state_.to_ulong()));
}

void MetalWall::NotifyNeighborhood(const Dir dir)
{
    if (dir == Dir::ALL)
    {
        for (const auto& x : WALL_PROCESSING_DIRS)
        {
            NotifyNeighborhood(x);
        }
        return;
    }

    if (IdPtr<MetalWall> wall = GetNeighbour(dir)->GetTurf())
    {
        wall->SetBitByDirection(RevertDir(dir), false);
        wall->UpdateState();


catch
                {
                } // incase dir doesnt exist

                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    foreach (string logfile in openFileDialog1.FileNames)
                    {
                        TXT_seriallog.AppendText("\n\nProcessing " + logfile + "\n");
                        this.Refresh();

                        LogOutput lo = new LogOutput();

                        try
                        {
                            TextReader tr = new StreamReader(logfile);

                            while (tr.Peek() != -1)
                            {
                                lo.processLine(tr.ReadLine());
                            }

                            tr.Close();
                        }
                        catch (Exception ex)
                        {
                            CustomMessageBox.Show("Error processing log. Is it still downloading? " + ex.Message);
                            continue;
                        }

                        lo.writeKMLFirstPerson(logfile + "-fp.kml");

                        TXT_seriallog.AppendText("Done\n");
                    }
                }
            }
        }

        private void BUT_dumpdf_Click(object sender, EventArgs e)
        {
            if (status == serialstatus.Done)
            {
                // add -1 entry
                CHK_logs.Items.Add(-1, true);

                System.Threading.Thread t11 = new System.Threading.Thread(delegate () { downloadsinglethread(); });
                t11.Name = "Log download single thread";
                t11.Start();
            }
        }

        private void BUT_bintolog_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog ofd = new OpenFileDialog())
            {
                ofd.Filter = "Binary Log|*.bin;*.BIN";

                ofd.ShowDialog();

                if (File.Exists(ofd.FileName))
                {
                    using (SaveFileDialog sfd = new SaveFileDialog())
                    {
                        sfd.Filter = "log|*.log;*.LOG";

                        DialogResult res = sfd.ShowDialog();

                        if (res == System.Windows.Forms.DialogResult.OK)
                        {
                            BinaryLog.ConvertBin(ofd.FileName, sfd.FileName);
                        }
                    }
                }
            }
        }
    }
}


		Name:           "m7i.8xlarge",
		EBSOptimized:   true,
		EBSThroughput:  1250.000000,
		VCPU:           32,
		Memory:         128.000000,
		StorageDevices: 0,
		StorageSize:    0,
		StorageType:    StorageTypeNone,
		Price: map[string]float64{
			"eu-north-1": 1.7136,
			"eu-south-2": 1.7976,
			"eu-west-1":  1.7976,
			"us-east-1":  1.6128,
			"us-east-2":  1.6128,
			"us-west-2":  1.6128,
		},
		Generation: "current",
		Virt:       "HVM",
		NVMe:       true,
		CPUFeatures: map[string]bool{
			"intel_avx":    true,
			"intel_avx2":   true,
			"intel_avx512": true,
			"intel_turbo":  true,
		},
	},
	{
		Name:           "m5.xlarge",
		EBSOptimized:   true,
		EBSThroughput:  593.750000,
		VCPU:           4,
		Memory:         16.000000,
		StorageDevices: 0,
		StorageSize:    0,
		StorageType:    StorageTypeNone,
		Price: map[string]float64{
			"af-south-1":      0.254,
			"ap-east-1":       0.264,
			"ap-northeast-1":  0.248,
			"ap-northeast-2":  0.236,
			"ap-northeast-3":  0.248,
			"ap-south-1":      0.202,
			"ap-south-2":      0.202,
			"ap-southeast-1":  0.24,
			"ap-southeast-2":  0.24,
			"ap-southeast-3":  0.24,
			"ap-southeast-4":  0.24,
			"ca-central-1":    0.214,
			"eu-central-1":    0.23,
			"eu-central-2":    0.253,
			"eu-north-1":      0.204,
			"eu-south-1":      0.224,
			"eu-south-2":      0.214,
			"eu-west-1":       0.214,
			"eu-west-2":       0.222,
			"eu-west-3":       0.224,
			"il-central-1":    0.225,
			"me-central-1":    0.235,
			"me-south-1":      0.235,
			"sa-east-1":       0.306,
			"us-east-1":       0.192,
			"us-east-1-bos-1": 0.24,
			"us-east-1-chi-1": 0.24,
			"us-east-1-mia-1": 0.24,
			"us-east-1-phl-1": 0.24,
			"us-east-2":       0.192,
			"us-gov-east-1":   0.242,
			"us-gov-west-1":   0.242,
			"us-west-1":       0.224,
			"us-west-2":       0.192,
			"us-west-2-den-1": 0.24,
			"us-west-2-lax-1": 0.23,
			"us-west-2-phx-1": 0.24,
		},
		Generation: "current",
		Virt:       "HVM",
		NVMe:       true,
		CPUFeatures: map[string]bool{
			"intel_avx":    true,
			"intel_avx2":   true,
			"intel_avx512": true,
			"intel_turbo":  true,
		},
	},
	{
		Name


. EXPLICIT AUTHORIZED DELETE.
    await Address.deleteMany({});

    await Promise.all(
      addresses.map(async (addr) => {
        Address.create({ address: addr, status: 'available' });
      })
    );
    res.status(201).json({
      success: true,
      msg: `Created address block from ${block.first} to ${block.last} in subnet ${block.mask} (${addresses.length} IPs created), all status set to 'available'`,
      data: [
        `Created: ${addresses.length} IPs in block ${address}`,
        `Starting IP: ${block.first}(${block.mask})`,
        `Ending IP: ${block.last}(${block.mask})`,
        `Hostmask: ${block.hostmask}`,
        `All status: available`,
      ],
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: `${error} - There was an error in createCdirBlock() addresses controller`,
    });
  }
};

/**
 * @param req Status to update provide 'address' and 'status'
 * @param res Update confirmation
 * @route PATCH /
 * @desc Patch status of 'address', status must be 'acquired' or 'available'
 * @access PUBLIC
 */
export const updateStatus = async (req: Request, res: Response) => {
  try {
    const { address: ipAddress, status: newStatus } = req.body;

    //404 IF ADDRESS DOES NOT EXIST
    if (!(await Address.findOne({ address: ipAddress }))) {
      return res.status(404).json({
        success: false,
        msg: `No existing IP address at ${ipAddress}`,
      });
    }

    //200 IF PATCH SUCCESS
    await Address.findOneAndUpdate({ address: ipAddress }, req.body, {
      new: true,
      runValidators: true,
    });
    res
      .status(200)
      .json({
        success: false,
        msg: `IP: ${ipAddress} updated to status: ${newStatus}`,
      });
  } catch (error) {
    res.status(500).json({ msg: error });
  }
};

/**
 * @param req Address to remove. Pass 'address' in body ex: {"address":"10.0.0.1"}, or optionally DELETE ON 'api/cidr/10.0.0.1'
 * @param res Delete confirmation
 * @route DELETE /
 * @route DELETE /?:addr
 * @desc Delete using body 'address' OR URI param
 * @access PUBLIC
 */
export const deleteAddress = async (req: Request, res: Response) => {
  try {
    const { address: ipBody } = req.body;
    const { addr: ipParam } = req.params;

    //404 WITH USEAGE INSTRUCTION IF PARAMETERS OR BODY ARE INCORRECT
    if (ipParam === undefined && (ipBody == '' || ipBody == undefined)) {
      return res.status(404).json({
        success: false,
        msg: `USAGE: DELETE /api/cidr/x.x.x.x or body{"address":"x.x.x.x"}`,
      });
    }
    //404 IF ADDRESS DOES NOT EXIST
    if (!(await Address.exists({ address: ipBody || ipParam }))) {
      return res.status(404).json({
        success: false,
        msg: `No existing IP address`,
      });
    }

    //200 IF DELETE SUCCESS
    if (await Address.findOne({ address: ipBody })) {
      await Address.findOneAndDelete({ address: ipBody });
      res.status(200).json({
        success: true,
        msg: `IP: ${ipBody} DELETED.`,
        data: [`address removed: ${ipBody}`],
      });
    } else {
      await


= -1,
		profile = "我是{namecode:30}級一號艦的{namecode:30}……隸屬於第二十一驅逐隊，一直和妹妹們在北方海域活動……雖然沒有什麼戰功，也努力過了……",
		mission_complete = "指揮官，獎勵下達了哦……欸？我、我不要的啦",
		headtouch = "",
		feeling2 = "指、指揮官，你覺得膽小真的能改過來嗎……",
		feeling4 = "嗚嗚嗚……果然還是不行……我只要能和指揮官交流就好了……",
		unlock = "您好，我是{namecode:30}……那個，請不要一直盯著我……",
		battle = "初、{namecode:30}，會加油的！",
		login = "嗚嗚……秘書什麼的我不行的啦……",
		vote = "",
		detail = "指揮官，雖、雖然關心我是很感激……",
		couple_encourage = {
			{
				{
					30126,
					30113
				},
				1,
				"跟、跟緊姐姐",
				1
			}
		}
	},
	[301230] = {
		touch = "指揮官，工作的時候不要三心二意呀",
		feeling3 = "能和指揮官成為朋友，真的太好了！",
		upgrade = "嘿嘿~這種感覺真不錯~",
		expedition = "好想躺在堆成小山的物資上曬太陽……呀，不小心說出來啦——",
		win_mvp = "指揮官，怎麼樣，怎麼樣！？",
		home = "辛苦啦……欸，等等，不要盯著我的尾巴看啊——",
		mission = "指揮官，新的任務出現了！",
		touch2 = "尾巴上的毛都被捋亂啦……",
		feeling1 = "哎呀呀，指揮官……有點不行呢",
		skill = "呀吼吼吼——！！ ！",
		drop_descrip = "{namecode:30}級驅逐艦三番艦—{namecode:141}",
		mail = "吶、吶，是誰寄來的？難道是——",
		lose = "嗚哇……",
		propose = "能和你一路走到今天，真的太好了……嗚嗚……我沒在哭啦，只是……只是幸福從眼角溢出來啦……從今以後，{namecode:141}要更加加油了！",
		hp_warning = "",
		id = 301230,
		voice_key = 30123,
		feeling5 = "嘿嘿，每次偷偷看你的時候，都發現你也在看我……哎，這應該不是我自作多情……吧？",
		main = "春天是最棒的季節！|指揮官，昨天你和——嘿嘿，我也不是特別喜歡八卦，只是耳朵實在過於靈敏啦，嗯，過於靈敏啦~|


r(TemplateImage, TemplateImagehsv, CV_BGR2HSV);
            split(TemplateImagehsv, hsv_vec);
            TemplateImage_h = hsv_vec[0];
            TemplateImage_s = hsv_vec[1];
            TemplateImage_v = hsv_vec[2];
            TemplateImage_h.convertTo(TemplateImage_h, CV_8UC1);
            TemplateImage_s.convertTo(TemplateImage_s, CV_8UC1);
            TemplateImage_v.convertTo(TemplateImage_v, CV_8UC1);

            int iii=0;
            for(i=0;i<WidthNum*HeightNum;i++)
            {
                if(iarray[i]==i)
                {
                    Mat Disks_h=TemplateImage_h(Rect(((int)i%WidthNum)*disL,((int)i/WidthNum)*disL,Ldisk,Ldisk));
                    Scalar tempVal = cv::mean( Disks_h );
                    P_h[iii]= tempVal.val[0];

                    Mat Disks_s=TemplateImage_s(Rect(((int)i%WidthNum)*disL,((int)i/WidthNum)*disL,Ldisk,Ldisk));
                    tempVal = cv::mean( Disks_s );
                    P_s[iii]= tempVal.val[0];

                    Mat Disks_v=TemplateImage_v(Rect(((int)i%WidthNum)*disL,((int)i/WidthNum)*disL,Ldisk,Ldisk));
                    tempVal = cv::mean( Disks_v );
                    P_v[iii]= tempVal.val[0];

                    iii++;
                }
            }

        }
        //添加灰度均值和方差特征
        float P_grayM[DiskNum]={0};//模板图灰度均值
        float P_grayD[DiskNum]={0};//模板图灰度方差
        int iii=0;
        for(i=0;i<WidthNum*HeightNum;i++)
        {
            if(iarray[i]==i)
            {
                Mat Disks_gray=GrayTemplate(Rect(((int)i%WidthNum)*disL,((int)i/WidthNum)*disL,Ldisk,Ldisk));
                Scalar Mean,dev;
                cv::meanStdDev(Disks_gray,Mean,dev);
                P_grayM[iii]= Mean.val[0];
                P_grayD[iii]= dev.val[0];

                iii++;
            }
        }

        //*****五、开始匹配************************************
        //*******************************************
        double timeSum;//总耗时
        timeSum=static_cast<double>(getTickCount());
        //***********************************************************
        double timeAnnulus;
        timeAnnulus=static_cast<double>(getTickCount());
        //设置圆投影搜索范围
        int LeftUpx=0;
        int LeftUpy=0;
        int RrightDownx=(int)(GrayImage.cols-Ldisk-1);
        int RrightDowny=(int)(GrayImage.rows-Ldisk-1);

        //获取并标出候选点位置
        double RminValue=0;
        Point RminLoc;
        double RmaxValue=0;
        Point RmaxLoc;
        Mat GrayImageDisp;
        GrayImage.copyTo(GrayImageDisp);

        int CandidateNum=MatchingNum2;
        vector<Point> Points[DiskNum];//精确匹配点坐标数组
        vector<Mat> MatchingValue;//环投影相似度值
        for(int ii=0;ii<DiskNum;ii++)
        {
            Mat MatchingValueTemp(GrayImage.rows-Ldisk,GrayImage.


ückischer Pfeil",
[28054] = "Klingenbrustplatte des Fleischreißers",
[28055] = "Güldene Purpurbrustplatte",
[28056] = "Schwarzschusspfeil",
[28057] = "Berserkerweste der Knochenmalmer",
[28058] = "Zerfetzter Wyrmflügel",
[28059] = "Schillerndes Auge",
[28060] = "Durchschlagskräftige Schrotkugel",
[28061] = "Eisenschlagpatrone",
[28062] = "Expeditionsrepetierarmbrust",
[28063] = "Zauberstab des Überlebenskünstlers",
[28064] = "Götze der Wildnis",
[28065] = "Buchband des Unerträglichen",
[28066] = "Totem des Blitzschlags",
[28068] = "Zauberfoliant des Leidens (Rang 6)",
[28069] = "Goldene cenarische Schienbeinschützer",
[28070] = "Tiefgrüne Handlappen",
[28071] = "Zauberfoliant der Seelenpein (Rang 1)",
[28072] = "Zauberfoliant der Seelenpein (Rang 2)",
[28073] = "Zauberfoliant der Seelenpein (Rang 3)",
[28074] = "Grünbesetzte Knöchelwickel",
[28075] = "Mantelung des Zerstörers",
[28099] = "Drillmeister Zuroks Anweisungen",
[28100] = "Flüchtiger Heiltrank",
[28101] = "Instabiler Manatrank",
[28102] = "Elixier des Ansturms",
[28103] = "Elixier des Adepten",
[28104] = "Elixier des Meisters",
[28105] = "Durons Bericht",
[28106] = "Königsteins Zünder",
[28107] = "Schriftwechsel der Legion",
[28108] = "Mit Macht erfüllter Pilz",
[28109] = "Mit Essenz erfüllter Pilz",
[28110] = "Fetter Gnom und kleine Elfe",
[28111] = "Unvergänglicher Tiefensporenfarn",
[28112] = "Tiefensporenkapsel",
[28116] = "Zeppelintrümmer",
[28117] = "Klobiger Schmuckrubin",
[28118] = "Runenverzierter Schmuckrubin",
[28119] = "Glatter Schmuckdämmerstein",
[28120] = "Schimmernder Schmuckdämmerstein",
[28121] = "Ikone des unerschütterlichen Mutes",
[28122] = "Gravierter Schmucktopas",
[28123] = "Mächtiger Schmucktopas",
[28124] = "Kordel des Lügners",
[28126] = "Drachenlederhandschuhe des Gladiators",
[28127] = "Drachenlederhelm des Gladiators",
[28128] = "Drachenlederbeinschützer des Gladiators",
[28129] = "Drachenlederschiftung des Gladiators",
[28130] = "Drachenledertunika des Gladiators",
[28131] = "Häscherbrecherabwerfer",
[28132] = "Area 52 Spezial",
[28134] = "Brosche der gesteigerten Leistung",
[28136] = "Wyrmbalghandschuhe des Gladiators",
[28137] = "Wyrmbalghelm des Gladiators",
[28138] = "Wyrmbalgbeinschützer des Gladiators",
[28139] = "Wyrmbalgschiftung des Gladia


ORMAL}],
        Im:           ['2111',{mathvariant: MML.VARIANT.NORMAL}],
        partial:      ['2202',{mathvariant: MML.VARIANT.NORMAL}],
        infty:        ['221E',{mathvariant: MML.VARIANT.NORMAL}],
        prime:        ['2032',{mathvariant: MML.VARIANT.NORMAL, variantForm:true}],
        emptyset:     ['2205',{mathvariant: MML.VARIANT.NORMAL}],
        nabla:        ['2207',{mathvariant: MML.VARIANT.NORMAL}],
        top:          ['22A4',{mathvariant: MML.VARIANT.NORMAL}],
        bot:          ['22A5',{mathvariant: MML.VARIANT.NORMAL}],
        angle:        ['2220',{mathvariant: MML.VARIANT.NORMAL}],
        triangle:     ['25B3',{mathvariant: MML.VARIANT.NORMAL}],
        backslash:    ['2216',{mathvariant: MML.VARIANT.NORMAL, variantForm:true}],
        forall:       ['2200',{mathvariant: MML.VARIANT.NORMAL}],
        exists:       ['2203',{mathvariant: MML.VARIANT.NORMAL}],
        neg:          ['00AC',{mathvariant: MML.VARIANT.NORMAL}],
        lnot:         ['00AC',{mathvariant: MML.VARIANT.NORMAL}],
        flat:         ['266D',{mathvariant: MML.VARIANT.NORMAL}],
        natural:      ['266E',{mathvariant: MML.VARIANT.NORMAL}],
        sharp:        ['266F',{mathvariant: MML.VARIANT.NORMAL}],
        clubsuit:     ['2663',{mathvariant: MML.VARIANT.NORMAL}],
        diamondsuit:  ['2662',{mathvariant: MML.VARIANT.NORMAL}],
        heartsuit:    ['2661',{mathvariant: MML.VARIANT.NORMAL}],
        spadesuit:    ['2660',{mathvariant: MML.VARIANT.NORMAL}]
      },

      mathchar0mo: {
        surd:         '221A',

        // big ops
        coprod:       ['2210',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        bigvee:       ['22C1',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        bigwedge:     ['22C0',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        biguplus:     ['2A04',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        bigcap:       ['22C2',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        bigcup:       ['22C3',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        'int':        ['222B',{texClass: MML.TEXCLASS.OP}],
        intop:        ['222B',{texClass: MML.TEXCLASS.OP, movesupsub:true, movablelimits:true}],
        iint:         ['222C',{texClass: MML.TEXCLASS.OP}],
        iiint:        ['222D',{texClass: MML.TEXCLASS.OP}],
        prod:         ['220F',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        sum:          ['2211',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        bigotimes:    ['2A02',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        bigoplus:     ['2A01',{texClass: MML.TEXCLASS.OP, movesupsub:true}],
        bigodot


/tt>

We can understand this in the following way:

<tt>(define (square  x)        (*         x     x))

 To      square something, multiply   it by itself.

</tt>

We have here a compound procedure, which has been given the name
<tt>square</tt>.  The procedure represents the operation of multiplying
something by itself.  The thing to be multiplied is given a local
name, <tt>x</tt>, which plays the same role that a pronoun plays in
natural language.  Evaluating the definition creates this
compound procedure and associates it with the name <tt>square</tt>.12

The general form of a procedure definition is

<tt>(define (<name> <formal parameters>) <body>)

</tt>

The <name> is a symbol to be associated with the procedure
definition in the environment.13
The <formal parameters> are
the names used within the body of the procedure to refer to the
corresponding arguments of the procedure.  The
<body> is an expression that will yield the value of
the procedure application when the formal parameters are replaced by
the actual arguments to which the procedure is applied.14
The <name>
and the <formal parameters>
are grouped within parentheses, just as they
would be in an actual call to the procedure being defined.

Having defined <tt>square</tt>, we can now use it:

<tt>(square 21)

441

(square (+ 2 5))

49

(square (square 3))

81

</tt>

We can also use <tt>square</tt> as a building block in defining other


>]]}
		local c = #list

		-- build main first
		list, c = CleanupMTL(mat, list, c)
		c = c + 1
		list[c] = [[	</Material>]]

		-- add any sub materials
		for key, sub_mat in pairs(mat) do
			if type(key) == "string" and key:sub(1, 19) == "_sub_material_index" then
				c = c + 1
				list[c] = [[	<Material>]]
				list, c = CleanupMTL(sub_mat, list, c)
				c = c + 1
				list[c] = [[	</Material>]]
			end
		end

		c = c + 1
		list[c] = [[</Materials>]]

		return table.concat(list, "\n")
	end
	ChoGGi_Funcs.Common.RetEntityMTLFile = RetEntityMTLFile

	local function ExamineExportMat(ex_dlg, mat)
		ChoGGi_Funcs.Common.OpenInMultiLineTextDlg{
			parent = ex_dlg,
			text = RetEntityMTLFile(mat),
			title = T(302535920001458--[[Material Properties]]) .. ": " .. mat.__mtl,
		}
	end

	local function RetEntityMats(entity, skip)
		-- some of these funcs can crash sm, so lets make sure it's valid
		if not skip and not IsValidEntity(entity) then
			return
		end

		local mats = {}
		local states = GetStates(entity) or ""
		for si = 1, #states do
			local state_str = states[si]
			local state = GetStateIdx(state_str)
			local num_lods = GetStateLODCount(entity, state) or 0
			for li = 1, num_lods do
				local mat_name = GetStateMaterial(entity, state, li - 1)
				local mat = GetMaterialProperties(mat_name, 0)

				-- add any sub materials
				local c = 1
				while true do
					local extra = GetMaterialProperties(mat_name, c)
					if not extra then
						break
					end
					mat["_sub_material_index" .. c] = extra
					c = c + 1
				end

				mat.__mtl = mat_name
				mat.__lod = li
				mat[1] = {
					ChoGGi_AddHyperLink = true,
					hint = T(302535920001174--[[Show an example .mtl file for this material (not complete).]]),
					name = T(302535920001177--[[Generate .mtl]]),
					func = function(ex_dlg)
						ExamineExportMat(ex_dlg, mat)
					end,
				}

				mats[mat_name .. ", LOD: " .. li .. ", State: " .. state_str .. " (" .. state .. ")"] = mat
			end
		end

		return mats
	end
	ChoGGi_Funcs.Common.RetEntityMats = RetEntityMats

	function ChoGGi_Funcs.Common.GetMaterialProperties(obj, parent_or_ret)
		if not GameMaps then
			return
		end

		-- If fired from action menu
		if IsKindOf(obj, "XAction") then
			obj = ChoGGi_Funcs.Common.SelObject()
			parent_or_ret = nil
		else
			obj = obj or ChoGGi_Funcs.Common.SelObject()
		end

		local materials

		if IsValidEntity(obj) then
			materials = RetEntityMats(obj, true)
		else
			local entity = obj and obj.GetEntity and obj:GetEntity()
			if IsValidEntity(entity) then
				materials = RetEntityMats(entity, true)
			else
				materials = {}
				local EntityData = EntityData
				for entity in pairs(


8, 10.0.128.0/17, 10.1.0.0/16, 10.2.0.0/15, 10.4.0.0/14, 10.8.0.0/13, 10.16.0.0/12, 10.32.0.0/11, 10.64.0.0/10, 10.128.0.0/9, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/1")]
    [DataRow("1.1.1.0/31", "1.1.1.1/32", "1.1.1.0/32")]
    [DataRow("1.1.1.0/30", "1.1.1.1/32", "1.1.1.0/32, 1.1.1.2/31")]
    [DataRow("0.0.0.0/24", "0.0.0.1/32", "0.0.0.0/32, 0.0.0.2/31, 0.0.0.4/30, 0.0.0.8/29, 0.0.0.16/28, 0.0.0.32/27, 0.0.0.64/26, 0.0.0.128/25")]
    [DataRow("0.0.0.0/24", "1.0.0.0/24", "0.0.0.0/24")]
    [DataRow("0.0.0.0/24", "0.0.0.0/24", "")]
    [DataRow("0.0.0.0/24", "0.0.0.0/23", "")]
    [DataRow("0.0.0.0/24", "0.0.0.0/0", "")]
    [DataRow("0.0.0.0/0", "0.0.0.0/0", "")]
    public void Test_IPNetwork_TrySubtract(string ipnetwork1, string ipnetwork2, string expected)
    {
        // Prepare
        var network1 = IPNetwork2.Parse(ipnetwork1);
        var network2 = IPNetwork2.Parse(ipnetwork2);

        // Act
        bool subtracted = network1.TrySubtract(network2, out var result);

        // Assert
        string ips = string.Join(", ", result);

        Assert.IsTrue(subtracted);
        Assert.AreEqual(expected, ips);
    }

    /// <summary>
    /// subtract.
    /// </summary>
    [TestMethod]
    public void Test_IPNetwork_TrySubtract_Failed()
    {
        // Prepare
        var network1 = IPNetwork2.Parse("0.0.0.0");

        // Act
        bool subtracted = network1.TrySubtract(null, out var result);
        Assert.IsFalse(subtracted);
        Assert.IsNull(result);
    }
}


      ..writeByte(9)
      ..write(obj.torrent)
      ..writeByte(10)
      ..write(obj.tags);
  }

  @override
  int get hashCode => typeId.hashCode;

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is RecordItemAdapter &&
          runtimeType == other.runtimeType &&
          typeId == other.typeId;
}
import 'dart:collection';

import 'package:collection/collection.dart';
import 'package:html/dom.dart';
import 'package:jiffy/jiffy.dart';

import '../model/announcement.dart';
import '../model/bangumi.dart';
import '../model/bangumi_details.dart';
import '../model/bangumi_row.dart';
import '../model/carousel.dart';
import '../model/index.dart';
import '../model/record_details.dart';
import '../model/record_item.dart';
import '../model/search.dart';
import '../model/season.dart';
import '../model/season_gallery.dart';
import '../model/subgroup.dart';
import '../model/subgroup_bangumi.dart';
import '../model/user.dart';
import '../model/year_season.dart';
import 'caches.dart';
import 'consts.dart';
import 'enums.dart';
import 'extension.dart';

class Resolver {
  const Resolver._();

  static List<BangumiRow> parseSeason(Document document) {
    final List<Element> rowElements =
        document.querySelectorAll('div.sk-bangumi');
    final List<BangumiRow> list = [];
    BangumiRow bangumiRow;
    Bangumi bangumi;
    List<Bangumi> bangumis;
    List<Element> bangumiElements;
    Map<dynamic, String>? attributes;
    String? temp;
    for (final Element rowEle in rowElements) {
      bangumiRow = BangumiRow();
      temp = rowEle.children[0].text.trim();
      bangumiRow.name = temp;
      temp = WeekSection.getByName(temp)?.name ?? temp;
      bangumiRow.sname = temp;
      bangumiElements = rowEle.querySelectorAll('li');
      bangumis = [];
      for (final Element ele in bangumiElements) {
        bangumi = Bangumi();
        attributes = ele.querySelector('span')?.attributes ?? {};
        bangumi.id = attributes['data-bangumiid']?.trim() ?? '';
        bangumi.cover = MikanUrls.baseUrl +
            (attributes['data-src']?.split('?').first.trim() ?? '');
        bangumi.grey = ele.querySelector('span.greyout') != null;
        bangumi.updateAt = ele.querySelector('.date-text')?.text.trim() ?? '';
        attributes = (ele.querySelector('.an-text') ??
                    ele.querySelector('.date-text[title]'))
                ?.attributes ??
            {};
        bangumi.name = attributes['title']?.trim() ?? '';
        bangumi.subscribed = ele.querySelector('.active') != null;
        bangumi.num =
            int.tryParse(ele.querySelector('.num-node')?.text.trim() ?? '0') ??
                0;
        bangumis.add(bangumi);
        bangumi.week = temp;
      }
      bangumiRow.num = bangumis.length;
      bangumiRow.updatedNum =
          bangumis.where((it) => it.num != null && it.num! > 0).length;
      bangumiRow.subscribedNum =
          bangumis.where((element) => element.subscribed).length;
      bangumiRow.subscribedUpdatedNum = bangumis
          .where((it) => it.subscribed && it.num != null && it.num! > 0)
          .length;


ar.getSolar();
    expect(solar.toString(), '7013-12-24');
  });

  test('test39', () {
    Solar solar = Solar.fromYmd(1987, 4, 12);
    Lunar lunar = solar.getLunar();
    expect(lunar.toString(), '一九八七年三月十五');
  });

  test('test40', () {
    Solar solar = Solar.fromYmd(1987, 4, 13);
    Lunar lunar = solar.getLunar();
    expect(lunar.toString(), '一九八七年三月十六');
  });

  test('test41', () {
    Solar solar = Solar.fromYmd(4, 2, 10);
    Lunar lunar = solar.getLunar();
    expect(lunar.getYearShengXiao(), '鼠');
  });

  test('test42', () {
    Solar solar = Solar.fromYmd(4, 2, 9);
    Lunar lunar = solar.getLunar();
    expect(lunar.getYearShengXiao(), '猪');
  });

  test('test43', () {
    Solar solar = Solar.fromYmd(1, 2, 12);
    Lunar lunar = solar.getLunar();
    expect(lunar.getYearShengXiao(), '鸡');
  });

  test('test44', () {
    Solar solar = Solar.fromYmd(1, 1, 1);
    Lunar lunar = solar.getLunar();
    expect(lunar.getYearShengXiao(), '猴');
  });

  test('test45', () {
    Solar solar = Solar.fromYmd(2017, 2, 15);
    Lunar lunar = solar.getLunar();
    expect(lunar.getDayLu(), '子命互禄 辛命进禄');
  });

  test('test57', () {
    Solar solar = Solar.fromYmd(1991, 2, 5);
    Lunar lunar = solar.getLunar();
    expect(lunar.getMonthInGanZhi(), '庚寅');
  });

  test('test58', () {
    Solar solar = Solar.fromYmd(2021, 3, 21);
    Lunar lunar = solar.getLunar();
    expect(lunar.getOtherFestivals(), ['春社']);
  });

  test('test59', () {
    Solar solar = Solar.fromYmd(2022, 3, 16);
    Lunar lunar = solar.getLunar();
    expect(lunar.getOtherFestivals(), ['春社']);
  });

  test('test60', () {
    Solar solar = Solar.fromYmd(1722, 9, 25);
    Lunar lunar = solar.getLunar();
    expect(lunar.getOtherFestivals(), ['秋社']);
  });

  test('test61', () {
    Solar solar = Solar.fromYmd(840, 9, 14);
    Lunar lunar = solar.getLunar();
    expect(lunar.getOtherFestivals(), ['秋社']);
  });

  test('test62', () {
    Lunar lunar = Lunar.fromYmd(1582, 9, 18);
    expect(lunar.getSolar().toYmd(), '1582-10-04');
  });

  test('test63', () {
    Lunar lunar = Lunar.fromYmd(1582, 9, 19);
    expect(lunar.getSolar().toYmd(), '1582-10-15');
  });

  test('test64', () {
    Lunar lunar = Lunar.fromYmd(41, 1, 1);
    expect(lunar.getSolar().toYmd(), '0041-02-20');
  });

  test('


-stdlib:1.3.60 -> 1.5.30 (*)
                    |    |    +--- org.jetbrains.kotlinx:atomicfu:0.14.1
                    |    |    +--- org.jetbrains.kotlinx:atomicfu-common:0.14.1
                    |    |    \--- org.jetbrains.kotlinx:kotlinx-io:0.1.16
                    |    |         \--- org.jetbrains.kotlinx:atomicfu-common:0.14.1
                     */
        exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
        exclude("org.jetbrains.kotlinx", "atomicfu")
        exclude("org.jetbrains.kotlinx", "atomicfu-common")
    }
}

class DependencyNotation(
    val groupId: String,
    val artifactId: String,
) {
    fun toMap(): Map<String, String> {
        return mapOf("group" to groupId, "module" to artifactId)
    }

    override fun toString(): String {
        return "$groupId:$artifactId"
    }
}

sealed interface RelocatableDependency {
    fun notations(): Sequence<DependencyNotation>
}

class SinglePlatformDependency(
    val groupId: String,
    val artifactId: String
) : RelocatableDependency {
    override fun notations(): Sequence<DependencyNotation> {
        return sequenceOf(DependencyNotation(groupId, artifactId))
    }
}

class CompositeDependency(
    private val dependencies: List<RelocatableDependency>
) : RelocatableDependency {
    constructor(vararg dependencies: RelocatableDependency) : this(dependencies.toList())

    override fun notations(): Sequence<DependencyNotation> = dependencies.asSequence().flatMap { it.notations() }
}

class MultiplatformDependency private constructor(
    private val groupId: String,
    private val baseArtifactId: String,
    vararg val targets: String,
) : RelocatableDependency {
    override fun notations(): Sequence<DependencyNotation> {
        return sequenceOf(DependencyNotation(groupId, baseArtifactId))
            .plus(targets.asSequence().map { DependencyNotation(groupId, "$baseArtifactId-$it") })
    }

    companion object {
        fun jvm(groupId: String, baseArtifactId: String): MultiplatformDependency {
            return MultiplatformDependency(groupId, baseArtifactId, "common", "metadata", "jvm", "jdk8", "jdk7")
        }
    }
}

fun ModuleDependency.exclude(multiplatformDependency: MultiplatformDependency) {
    multiplatformDependency.notations().forEach {
        exclude(it.toMap())
    }
}

object ExcludeProperties {
    val `everything from kotlin` = exclude(groupId = "org.jetbrains.kotlin", null)
    val `everything from kotlinx` = exclude(groupId = "org.jetbrains.kotlinx", null)
    val `kotlin-stdlib` = multiplatformJvm(groupId = "org.jetbrains.kotlin", "kotlin-stdlib")
    val `kotlinx-coroutines` = multiplatformJvm(groupId = "org.jetbrains.kotlinx", "kotlinx-coroutines")
    val `ktor-io` = multiplatformJvm(groupId = "io.ktor", "ktor-io")
    val `everything from slf4j` = exclude(groupId = "org.slf4j", null)
    val `slf4j-api` = exclude(groupId = "org.slf4j", "slf4j-api")

    /**
     * @see org.gradle.kotlin.dsl.exclude
     */
    @OptIn(ExperimentalStdlibApi::class)
    private fun exclude(
        groupId: String?, artifact


�入APK文件路径（支持APK/APEX）",
    chooseFail = "选择失败",
    chooseFailMessage = "不受支持的文件类型：%s",
    apkInstalling = "应用安装中，请稍候...",
    installSuccess = "安装成功！",
    installSuccessMessage = "已将【%s】安装到设备【%s】中",
    installFail = "安装失败！",
    pleaseLinkDevice = "请连接设备",
    pleaseChooseDevice = "请选择设备",
    pleaseAuthorizeDevice = "请重新连接此设备并在手机上授予权限",
    pleaseLinkAdbDevice = "请连接一个ADB设备",
    linkedAdbDevice = "已连接设备：%s",
    loading = "加载中...",
    deviceInfo = "设备详情",
    adbAreaFunctions = "ADB专属功能",
    insufficientPermissions = "权限不足！",
    adbPhoneInfo = "设备：\n%s\n系统版本：\nAndroid %s（%s）\n处理器：\n%s\n核心数：%d核心\n电池电量：%s\n电池温度：%s\n%sGPU：%s",
    externalStorageInfo = "总空间：%s GB\n已使用：%s GB\n剩余：%s GB",
    externalStorageSpace = "存储空间",
    memorySpace = "物理内存    %.2f%s（%dGB）",
    swapSpace = "交换分区    %.2f%s（%dGB）",
    coreLoad = "负载：%.2f%s",
    flashImage = "刷入镜像",
    flashConfirm = "确认刷写",
    flashMessage = "是否执行镜像刷写任务？\n\n已选择文件：%s\n已选择分区：%s",
    flashing = "刷写任务执行中，请稍候...",
    flashSuccess = "刷写成功！",
    flashSuccessMessage = "总耗时：%s秒",
    flashFail = "刷写失败！",
    inputImagePath = "输入镜像文件路径",
    choosePartition = "选择要刷入的分区",
    partitionSelected = "已选择分区：%s",
    aBSlotFilter = "过滤A/B分区",
    textChoosePartition = "选择分区",
    startPatcherImage = "开始修补镜像",
    notChooseBoot = "未选择Boot文件",
    inputBootPath = "输入镜像文件路径（支持boot/init_boot）",
    bootOutputPath = "Boot文件输出路径",
    bootPatching = "Boot修补中，请稍候...",
    patchSuccess = "修补成功！",
    patchSuccessMessage = "已将修补好的镜像文件【%s】存放于%s路径下",
    patchFail = "修补失败！",
    searchMagiskVersion = "搜索Magisk版本",
    magiskList = "Magisk历史版本",
    fastLoading = "拼命加载中...",
    magiskVersionSubtitle = "版本：%s  大小：%sMB  下载次数：%d",
    downloadApk = "下载APK",
    lineOne = "线路1",
    lineTwo = "线路2",
    loadFailAn


/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_loading-spinner.scss */
  66.66% {
    -webkit-transform: rotate(240deg);
  }

  /* line 110, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_loading-spinner.scss */
  74.99% {
    -webkit-transform: rotate(240deg);
  }

  /* line 112, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_loading-spinner.scss */
  75% {
    -webkit-transform: rotate(270deg);
  }

  /* line 113, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_loading-spinner.scss */
  83.32% {
    -webkit-transform: rotate(270deg);
  }

  /* line 115, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_loading-spinner.scss */
  83.33% {
    -webkit-transform: rotate(300deg);
  }

  /* line 116, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_loading-spinner.scss */
  91.65% {
    -webkit-transform: rotate(300deg);
  }

  /* line 118, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_loading-spinner.scss */
  91.66% {
    -webkit-transform: rotate(330deg);
  }

  /* line 119, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_loading-spinner.scss */
  100% {
    -webkit-transform: rotate(330deg);
  }
}

/* line 4, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_draw.scss */
.x-android-3 .x-surface-wrap, .x-android-3 .x-surface-wrap > * {
  -webkit-perspective: 1;
}

/* line 8, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_draw.scss */
.x-draw-component .x-inner {
  overflow: hidden;
}

/* line 12, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_draw.scss */
.x-surface {
  position: absolute;
}

/* line 16, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_draw.scss */
.x-chart-watermark {
  opacity: 0.5;
  z-index: 9;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  color: white;
  padding: 4px 6px;
  font-family: "Helvetica";
  font-size: 12px;
  position: absolute;
  border-top-left-radius: 4px;
  white-space: nowrap;
  -webkit-border-top-left-radius: 4px;
}

/* line 4, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_draw.scss */
.x-android-3 .x-surface-wrap, .x-android-3 .x-surface-wrap > * {
  -webkit-perspective: 1;
}

/* line 8, /Users/jamieavins/git/SDK/touch/resources/themes/stylesheets/sencha-touch/default/widgets/_draw.scss */
.x-


LactoseFree: true,  // it calls Meal class in meal.dart
  ),
  Meal(
    id: 'm2',
    categories: [
      'c2',
    ],
    title: 'Toast Hawaii',
    affordability: Affordability.affordable,
    complexity: Complexity.simple,
    imageUrl:
    'https://cdn.pixabay.com/photo/2018/07/11/21/51/toast-3532016_1280.jpg',
    duration: 10,
    ingredients: [
      '1 Slice White Bread',
      '1 Slice Ham',
      '1 Slice Pineapple',
      '1-2 Slices of Cheese',
      'Butter'
    ],
    steps: [
      'Butter one side of the white bread',
      'Layer ham, the pineapple and cheese on the white bread',
      'Bake the toast for round about 10 minutes in the oven at 200°C'
    ],
    isGlutenFree: false,
    isVegan: false,
    isVegetarian: false,
    isLactoseFree: false,
  ),
  Meal(
    id: 'm3',
    categories: [
      'c2',
      'c3',
    ],
    title: 'Classic Hamburger',
    affordability: Affordability.pricey,
    complexity: Complexity.simple,
    imageUrl:
    'https://cdn.pixabay.com/photo/2014/10/23/18/05/burger-500054_1280.jpg',
    duration: 45,
    ingredients: [
      '300g Cattle Hack',
      '1 Tomato',
      '1 Cucumber',
      '1 Onion',
      'Ketchup',
      '2 Burger Buns'
    ],
    steps: [
      'Form 2 patties',
      'Fry the patties for c. 4 minutes on each side',
      'Quickly fry the buns for c. 1 minute on each side',
      'Bruch buns with ketchup',
      'Serve burger with tomato, cucumber and onion'
    ],
    isGlutenFree: false,
    isVegan: false,
    isVegetarian: false,
    isLactoseFree: true,
  ),
  Meal(
    id: 'm4',
    categories: [
      'c4',
    ],
    title: 'Wiener Schnitzel',
    affordability: Affordability.luxurious,
    complexity: Complexity.challenging,
    imageUrl:
    'https://cdn.pixabay.com/photo/2018/03/31/19/29/schnitzel-3279045_1280.jpg',
    duration: 60,
    ingredients: [
      '8 Veal Cutlets',
      '4 Eggs',
      '200g Bread Crumbs',
      '100g Flour',
      '300ml Butter',
      '100g Vegetable Oil',
      'Salt',
      'Lemon Slices'
    ],
    steps: [
      'Tenderize the veal to about 2–4mm, and salt on both sides.',
      'On a flat plate, stir the eggs briefly with a fork.',
      'Lightly coat the cutlets in flour then dip into the egg, and finally, coat in breadcrumbs.',
      'Heat the butter and oil in a large pan (allow the fat to get very hot) and fry the schnitzels until golden brown on both sides.',
      'Make sure to toss the pan regularly so that the schnitzels are surrounded by oil and the crumbing becomes ‘fluffy’.',
      'Remove, and drain on kitchen paper. Fry the parsley in the remaining oil and drain.',
      'Place the schnitzels on awarmed plate and serve garnishedwith parsley and slices of lemon.'
    ],
    isGlutenFree: false,
    isVegan: false,
    isVegetarian: false,
    isLactoseFree: false,
  ),
  Meal(
    id: 'm5',
    categories: [
      'c2',
          'c5',
      'c10',
    ],
    title: 'Salad with Smoked Salmon',
    affordability:


/* $NetBSD: memset.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */

/*-
 * Copyright (c) 2014 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Matt Thomas of 3am Software Foundry.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#include <machine/asm.h>

ENTRY(memset)
	cbz	x2, .Lret
	mov	x15, x0			/* working data pointer */
	cbz	x1, .Lzerofill
	cbz	x1, .Lfilled
	/*
	 * Non zero fill, replicate to all 64 bits of x1.
	 */
	and	x1, x1, #0xff
	orr	x1, x1, x1, lsl #8
	orr	x1, x1, x1, lsl #16
	orr	x1, x1, x1, lsl #32
.Lfilled:
	cmp	x2, #15			/* if it's small, ignore alignment */
	b.ls	.Llast_subqword

	mov	x6, x1
	tst	x15, #15
	b.eq	.Lqword_loop

/*
 * We have at least 15 to copy which means we can get qword alignment
 * without having to check the amount left.
 */
	tbz	x15, #0, .Lhword_aligned
	strb	w1, [x15], #1
.Lhword_aligned:
	tbz	x15, #1, .Lword_aligned
	strh	w1, [x15], #2
.Lword_aligned:
	tbz	x15, #2, .Ldword_aligned
	str	w1, [x15], #4
.Ldword_aligned:
	tbz	x15, #3, .Lqword_aligned
	str	x1, [x15], #8
/*
 * Now we qword aligned. Figure how much we have to write to get here.
 * Then subtract from the length.  If we get 0, we're done.
 */
.Lqword_aligned:
	sub	x5, x15, x0
	subs	x2, x2, x5


.0">
    <title>Tag-Based Search</title>

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/atom-one-dark.min.css">

    <link rel="stylesheet" href="/textarea/styles.css">

Search Results


tring::from("v3"));

    let expected_metadata = metadata.clone();

    let field = Field::new_with_metadata(String::from("f3"), Ty::int64(), metadata);
    assert_eq!("f3", field.name().as_str());
    assert_eq!(&Ty::Int64, field.data_type());
    assert_eq!(true, field.nullable());
    assert_eq!(&Some(expected_metadata), field.metadata());
  }

  #[test]
  fn test_null() {
    let ty = Ty::null();
    assert_eq!(Ty::NA, ty);
    assert_eq!("null", ty.name());
    assert_eq!(Vec::<BufferDesc>::new(), ty.get_buffer_layout());
  }

  #[test]
  fn test_boolean() {
    let ty = Ty::bool();
    assert_eq!(Ty::Bool, ty);
    assert_eq!("bool", ty.name());
    assert_eq!(
      vec![BufferDesc::validity_buffer(), BufferDesc::new(BufferType::Data, 1)],
      ty.get_buffer_layout()
    );
  }

  macro_rules! test_primitive_types {
    ($test_name: ident, $type_name: ident, $str_name: expr, $ty: path, $width: expr, $buffer_layout: expr) => (
      #[test]
      fn $test_name() {
        let ty = Ty::$type_name();
        assert_eq!($ty, ty);
        assert_eq!($str_name, ty.name());
        assert_eq!($width, ty.bit_width());
        assert_eq!($buffer_layout, ty.get_buffer_layout());
      }
    );
  }

  test_primitive_types!(test_uint8_fixed_width, uint8, "uint8", Ty::UInt8, 8, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(8)]);
  test_primitive_types!(test_uint16_fixed_width, uint16, "uint16", Ty::UInt16, 16, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(16)]);
  test_primitive_types!(test_uint32_fixed_width, uint32, "uint32", Ty::UInt32, 32, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(32)]);
  test_primitive_types!(test_uint64_fixed_width, uint64, "uint64", Ty::UInt64, 64, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(64)]);
  test_primitive_types!(test_int8_fixed_width, int8, "int8", Ty::Int8, 8, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(8)]);
  test_primitive_types!(test_int16_fixed_width, int16, "int16", Ty::Int16, 16, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(16)]);
  test_primitive_types!(test_int32_fixed_width, int32, "int32", Ty::Int32, 32, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(32)]);
  test_primitive_types!(test_int64_fixed_width, int64, "int64", Ty::Int64, 64, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(64)]);

  test_primitive_types!(test_half_float_fixed_width, halffloat, "halffloat", Ty::HalfFloat, 16, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(16)]);
  test_primitive_types!(test_float_fixed_width, float, "float", Ty::Float, 32, vec![BufferDesc::validity_buffer(), BufferDesc::data_buffer(32)]);
  test_primitive_types!(test_double_fixed_width, double, "double", Ty::Double, 64, vec![BufferDesc::validity_buffer(), BufferDesc::


 API met `RestSharp`: [http://restsharp.org/](http://restsharp.org/)
- Vloeiende HTTP (HTTP made fluent) met `Flurl`: [https://flurl.dev/](https://flurl.dev/)
---
changelog:
- 2024-02-03, gpt-4-0125-preview, translated from English
date: 2024-02-03 19:30:06.251652-07:00
description: "\u65B9\u6CD5: C++\u3067\u30C6\u30B9\u30C8\u3092\u66F8\u304F\u305F\u3081\
  \u306E\u6700\u3082\u4EBA\u6C17\u306E\u3042\u308B\u30B5\u30FC\u30C9\u30D1\u30FC\u30C6\
  \u30A3\u30E9\u30A4\u30D6\u30E9\u30EA\u306E1\u3064\u306FGoogle Test\u3067\u3059\u3002\
  \u307E\u305A\u3001Google Test\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3001\
  \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3068\u30EA\u30F3\u30AF\u3059\u308B\u5FC5\u8981\
  \u304C\u3042\u308A\u307E\u3059\u3002\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u304C\u5B8C\
  \u4E86\u3057\u305F\u3089\u3001\u30C6\u30B9\u30C8\u30B1\u30FC\u30B9\u306E\u8A18\u8FF0\
  \u3092\u958B\u59CB\u3067\u304D\u307E\u3059\u3002"
lastmod: '2024-04-05T21:53:43.368173-06:00'
model: gpt-4-0125-preview
summary: "C++\u3067\u30C6\u30B9\u30C8\u3092\u66F8\u304F\u305F\u3081\u306E\u6700\u3082\
  \u4EBA\u6C17\u306E\u3042\u308B\u30B5\u30FC\u30C9\u30D1\u30FC\u30C6\u30A3\u30E9\u30A4\
  \u30D6\u30E9\u30EA\u306E1\u3064\u306FGoogle Test\u3067\u3059\u3002\u307E\u305A\u3001\
  Google Test\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3001\u30D7\u30ED\u30B8\
  \u30A7\u30AF\u30C8\u3068\u30EA\u30F3\u30AF\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\
  \u307E\u3059\u3002\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u304C\u5B8C\u4E86\u3057\u305F\
  \u3089\u3001\u30C6\u30B9\u30C8\u30B1\u30FC\u30B9\u306E\u8A18\u8FF0\u3092\u958B\u59CB\
  \u3067\u304D\u307E\u3059\u3002"
title: "\u30C6\u30B9\u30C8\u306E\u4F5C\u6210"
weight: 36
---

## 方法:


qFAop/8E21dSi9kxWDX9olYgom81SsVgkANjLz0R2jgx+Uyms//mt0COmaXq5xsCFHGrAU/s2le9Wpsv9z7lcro3GL1O/syyLcrmc8sfgOnO4W1pBmUymc7gqTa8/O5PJUCKR2HD+3d9Rm4ad/dnpOkP9wawV+96d12g/pOulaXtl7Xdmw9u2zXq917J0Gzoy5r0lyVYz+S/Gv+2SvD5I/BcoeB7C+fyYbAAAAABJRU5ErkJggg==) no-repeat;background-size:cover}.musicBody .mainBox .contentBox .content .contentItem[data-v-f86aa1ed]{display:flex;flex-direction:column;justify-content:space-between;border-radius:.375rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;background:linear-gradient(0deg,rgba(251,211,141,0) 0%,rgba(251,211,141,.2) 200%),rgb(39,38,38);width:100%;height:100%;overflow:visible;position:relative;cursor:pointer;margin-bottom:.25rem;border-radius:12px}.musicBody .mainBox .contentBox .content .contentItem[data-v-f86aa1ed]:hover{background:#45423D}.musicBody .mainBox .contentBox .content .contentItem .itemTop[data-v-f86aa1ed],.musicBody .mainBox .contentBox .content .contentItem .itemTops[data-v-f86aa1ed]{padding:10px 10px 20px;display:flex}.musicBody .mainBox .contentBox .content .contentItem .itemTop .topImg[data-v-f86aa1ed],.musicBody .mainBox .contentBox .content .contentItem .itemTops .topImg[data-v-f86aa1ed]{width:115px;height:115px;border-radius:8px;margin-right:12px;flex-shrink:0;position:relative}.musicBody .mainBox .contentBox .content .contentItem .itemTop .topImg .playImg[data-v-f86aa1ed],.musicBody .mainBox .contentBox .content .contentItem .itemTops .topImg .playImg[data-v-f86aa1ed]{position:absolute;right:40px;bottom:40px;cursor:pointer}.musicBody .mainBox .contentBox .content .contentItem .itemTop .topImg .bgImg[data-v-f86aa1ed],.musicBody .mainBox .contentBox .content .contentItem .itemTops .topImg .bgImg[data-v-f86aa1ed]{border-radius:8px;width:100%;height:100%}.musicBody .mainBox .contentBox .content .contentItem .itemTop .topImg span[data-v-f86aa1ed],.musicBody .mainBox .contentBox .content .contentItem .itemTops .topImg span[data-v-f86aa1ed]{position:absolute;left:9px;top:9px;padding:2px 5px;background:rgba(36,37,43,.55);border-radius:4px;font-size:10px;color:#cdcfdd}.musicBody .mainBox .contentBox .content .contentItem .itemTop .topTitle .title[data-v-f86aa1ed],.musicBody .mainBox .contentBox .content .contentItem .itemTops .topTitle .title[data-v-f86aa1ed]{font-size:17px;font-weight:550}.musicBody .mainBox .contentBox .content .contentItem .itemTop .topTitle .intro[data-v-f86aa1ed],.musicBody .mainBox .contentBox .content .contentItem .itemTops .topTitle .intro[data-v-f86aa1ed]{margin-top:8px;display:flex}.musicBody .mainBox .contentBox .content .contentItem .itemTop .topTitle .intro span[data-v-f86aa1ed],.musicBody .mainBox .contentBox .content


; TROGDOR 2024

.include "hardware.inc"
.include "zp.inc"
.include "qload.inc"
.include "music.inc"
.include "flames.inc"

hposn_low       = $1e00
hposn_high      = $1f00

trogdor_main:

	;======================================
	; init
	;======================================

	; clear screen to white0

	lda	#$0
	sta	DRAW_PAGE

	; clear PAGE1 to white

	ldy	#$7f
	jsr	hgr_clear_screen

	; set to HIRES PAGE1

	bit     SET_GR
        bit     HIRES
        bit     FULLGR
        bit     PAGE1

	lda	#$20
	sta	DRAW_PAGE

	lda	SOUND_STATUS
	and	#SOUND_MOCKINGBOARD
	beq	trog_no_music

	cli			; start music
trog_no_music:

	;======================================
	; draw SCENE 1
	;======================================
	; o/~ TRODOR! o/~

	; scroll in zoomed in trogdor from right to left
	; for 60 frames (roughly 2s)

	; decompress trogdor to $6000

	lda	#<trog00_graphics
	sta	zx_src_l+1
	lda	#>trog00_graphics
	sta	zx_src_h+1
	lda	#$60
	jsr	zx02_full_decomp

	; copy+magnify to PAGE2

	lda	#20
	sta	SPRITE_Y
	lda	#0
	sta	SPRITE_X

	lda	#$60
	jsr	hgr_copy_magnify

	jsr	horiz_pan_skip

	; clear to white
	ldy	#$7f
	jsr	hgr_clear_screen

	jsr	horiz_pan_skip

	jsr	hgr_page_flip

	;======================================
	; draw SCENE 2
	;======================================
	; 156
	;
	; draw flames on white background
	;	left flame short 2 frames
	;	left tall 1212 roughly 10 frames (1/2 s)
	;	both short 2 frames
	;	right tall 1212 roughly 10 frames
	;	right short 2 frames
	; 	left frame short 2 frames
	;	left tall 1212 roughly 10 frames (1/2 s)
	;	left short 2 frames

	; clear to white
	ldy	#$7f
	jsr	hgr_clear_screen
	jsr	hgr_page_flip

	ldy	#$7f
	jsr	hgr_clear_screen
	jsr	hgr_page_flip

	lda	#0			; blank bg
	sta	FLAME_BG

	lda	#8			; x-coords for two flames
	sta	FLAME_L
	lda	#24
	sta	FLAME_R

	jsr	do_flames

	;=============================
	;	blank screen

	ldy	#$7f
	jsr	hgr_clear_screen
	jsr	hgr_page_flip

	;======================================
	; draw SCENE 3
	;======================================
	; o/~ TROGDOR! o/~

	; scroll trogdor intro place

	; takes rougly 90 frames (3s) to scroll in
	; 	remains there 10 frames (almost .5s)

	; orignal: 28s, want 9 times faster???
	; can easily do 8 times...

	; now should be on PAGE1??

	ldy	#$7f
	jsr	hgr_clear_screen
	jsr	hgr_page_flip

	lda	#0
	sta	COUNT

scroll_in_loop:

	jsr	hgr_vertica


 = selectedSources.size == 1
		menu.findItem(R.id.action_settings).isVisible = isSingleSelection
		menu.findItem(R.id.action_shortcut).isVisible = isSingleSelection
		menu.findItem(R.id.action_pin).isVisible = selectedSources.all { !it.isPinned }
		menu.findItem(R.id.action_unpin).isVisible = selectedSources.all { it.isPinned }
		menu.findItem(R.id.action_disable)?.isVisible = !viewModel.isAllSourcesEnabled.value &&
			selectedSources.all { it.mangaSource is MangaParserSource }
		menu.findItem(R.id.action_delete)?.isVisible = selectedSources.all { it.mangaSource is ExternalMangaSource }
		return super.onPrepareActionMode(controller, mode, menu)
	}

	override fun onActionItemClicked(controller: ListSelectionController, mode: ActionMode?, item: MenuItem): Boolean {
		val selectedSources = viewModel.sourcesSnapshot(controller.peekCheckedIds())
		if (selectedSources.isEmpty()) {
			return false
		}
		when (item.itemId) {
			R.id.action_settings -> {
				val source = selectedSources.singleOrNull() ?: return false
				router.openSourceSettings(source)
				mode?.finish()
			}

			R.id.action_disable -> {
				viewModel.disableSources(selectedSources)
				mode?.finish()
			}

			R.id.action_delete -> {
				selectedSources.forEach {
					(it.mangaSource as? ExternalMangaSource)?.let { uninstallExternalSource(it) }
				}
				mode?.finish()
			}

			R.id.action_shortcut -> {
				val source = selectedSources.singleOrNull() ?: return false
				viewModel.requestPinShortcut(source)
				mode?.finish()
			}

			R.id.action_pin -> {
				viewModel.setSourcesPinned(selectedSources, isPinned = true)
				mode?.finish()
			}

			R.id.action_unpin -> {
				viewModel.setSourcesPinned(selectedSources, isPinned = false)
				mode?.finish()
			}

			else -> return false
		}
		return true
	}

	private fun onOpenManga(manga: Manga) {
		router.openDetails(manga)
	}

	private fun onGridModeChanged(isGrid: Boolean) {
		requireViewBinding().recyclerView.layoutManager = if (isGrid) {
			GridLayoutManager(requireContext(), 4).also { lm ->
				lm.spanSizeLookup = ExploreGridSpanSizeLookup(checkNotNull(exploreAdapter), lm)
			}
		} else {
			LinearLayoutManager(requireContext())
		}
	}

	private fun showSuggestionsTip() {
		val listener = DialogInterface.OnClickListener { _, which ->
			viewModel.respondSuggestionTip(which == DialogInterface.BUTTON_POSITIVE)
		}
		BigButtonsAlertDialog.Builder(requireContext())
			.setIcon(R.drawable.ic_suggestion)
			.setTitle(R.string.suggestions_enable_prompt)
			.setPositiveButton(R.string.enable, listener)
			.setNegativeButton(R.string.no_thanks, listener)
			.create()
			.show()
	}

	private fun uninstallExternalSource(source: ExternalMangaSource) {
		val uri = Uri.fromParts("package", source.packageName, null)
		val action = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
			Intent.ACTION_DELETE
		} else {
			@Suppress("DEPRECATION")
			Intent.ACTION_UNINSTALL_PACKAGE
		}
		context?.startActivity(Intent(action, uri))
	}
}
package org.koitharu.kotatsu.details.data

import android.content.res.Resources
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.util.ext.getQuantityStringSafe


false,"count_default":false},"active":{"background_active":false,"border_active":false,"text_active":false,"icon_active":false,"count_active":false}},"authentication_modal_content":"
Please login to add favorites.<\/p>
Dismiss this notice<\/a><\/p>","authentication_redirect":"","dev_mode":"","logged_in":"","user_id":"0",};/* ]]> */</script><link rel="canonical" href="https://Beats0.github.io/www.mygalgame.com/tag/%e7%ba%af%e7%88%b1/"/>

 首页 下一页 留言版 热门排行 <a href="https://Beats0.gi