splayStrategy)
    return RawForwardMessage(
        this.map { ForwardMessage.Node(it.sender.id, it.time, it.senderName, it.message) }
    ).render(displayStrategy)
}

/**
 * 转换为 [ForwardMessage]
 */
@JvmOverloads
public fun Message.toForwardMessage(
    sender: User,
    time: Int = currentTimeSeconds().toInt(),
    displayStrategy: DisplayStrategy = DisplayStrategy
): ForwardMessage = this.toForwardMessage(sender.id, sender.nameCardOrNick, time, displayStrategy)

/**
 * 转换为 [ForwardMessage]
 */
@JvmOverloads
public fun Message.toForwardMessage(
    senderId: Long,
    senderName: String,
    time: Int = currentTimeSeconds().toInt(),
    displayStrategy: DisplayStrategy = DisplayStrategy
): ForwardMessage =
    RawForwardMessage(listOf(ForwardMessage.Node(senderId, time, senderName, this))).render(displayStrategy)

/**
 * 构造一条 [ForwardMessage]
 *
 * @see ForwardMessageBuilder 查看 DSL 帮助
 * @see ForwardMessage 查看转发消息说明
 */
@JvmSynthetic
public inline fun buildForwardMessage(
    context: Contact,
    displayStrategy: DisplayStrategy = DisplayStrategy,
    block: ForwardMessageBuilder.() -> Unit
): ForwardMessage = ForwardMessageBuilder(context).apply { this.displayStrategy = displayStrategy }.apply(block).build()

/**
 * 使用 DSL 构建一个 [ForwardMessage].
 *
 * @see ForwardMessageBuilder 查看 DSL 帮助
 * @see ForwardMessage 查看转发消息说明
 */
@JvmSynthetic
public inline fun MessageEvent.buildForwardMessage(
    context: Contact = this.subject,
    displayStrategy: DisplayStrategy = DisplayStrategy,
    block: ForwardMessageBuilder.() -> Unit
): ForwardMessage = ForwardMessageBuilder(context).apply {
    this.displayStrategy = displayStrategy
}.apply(block).build()

/**
 * 标记转发消息 DSL
 */
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.TYPE)
@DslMarker
public annotation class ForwardMessageDsl

/**
 * 转发消息 DSL 构建器.
 *
 * # 总览
 *
 *
 * 在 Java 使用一般方法添加消息构建转发:
 * ```
 * ForwardMessageBuilder builder = new ForwardMessageBuilder(group);
 *
 * builder.add(123456L, "群员A", new PlainText("消息"))
 * builder.add(user, new PlainText("msg"));
 * builder.add(user, (chain) -> {
 *     chain.add(new At(user));
 *     chain.add(new PlainText("Hello"))
 * }); // 使用 Java 8 lambda 语法, MessageChainBuilder 快速构建消息链
 * builder.add(event); // 可添加 MessageEvent
 *
 * builder.setDisplayStrategy(new ForwardMessage.DisplayStrategy() {
 * }); // 可选, 修改显示策略
 *
 * ForwardMessage forward = builder.build();
 * group.sendMessage(forward);
 * ```
 *
 * 在 Kotlin 使用一般方法添加消息构建转发:
 * ```
 * val forward: ForwardMessage = buildForwardMessage {
 *     add(123456L, "群员A", PlainText("消息"))
 *     add(user, PlainText("msg"))
 *     add(user) {
 *         // this: MessageChainBuilder
 *         add(At(user))
 *         add(PlainText("msg"))
 *     };
 *     add(event) // 可添加 MessageEvent
 * }
 *
 * group.sendMessage(forward);
 * friend.sendMessage(forward);
 * ```
 *
 * 在 Kotlin 也可以使用 DSL 构建一个转发:
 * ```
 * buildForwardMessage {
 *     123456789 named "鸽子 A" says


FileSpec
import com.squareup.kotlinpoet.FunSpec
import com.squareup.kotlinpoet.LIST
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
import com.squareup.kotlinpoet.TypeName
import com.squareup.kotlinpoet.TypeSpec
import com.squareup.kotlinpoet.ksp.writeTo

@Suppress("LongParameterList")
internal fun generateCode(
    generatedPropertyNames: List<String>,
    originalClassTypeName: TypeName,
    objectBuilder: TypeSpec.Builder,
    fileBuilder: FileSpec.Builder,
    classDeclaration: KSClassDeclaration,
    codeGenerator: CodeGenerator,
    packageName: String,
    generatedObjectName: String,
    originalClassNameString: String,
    logger: KSPLogger,
) {
    if (generatedPropertyNames.isNotEmpty()) {
        val listType = LIST.parameterizedBy(originalClassTypeName)
        val getAllFunBuilder =
            FunSpec
                .builder("getAllCombinations")
                .addKdoc("Returns a list of all pre-configured [%T] instances.", originalClassTypeName)
                .returns(listType)
        val codeBlockBuilder = CodeBlock.builder().add("return listOf(⇥")
        generatedPropertyNames.forEachIndexed { index, propName ->
            if (index == 0) {
                codeBlockBuilder.add("\n%N", propName)
            } else {
                codeBlockBuilder.add(",\n%N", propName)
            }
        }
        codeBlockBuilder.add("\n⇤)")
        getAllFunBuilder.addCode(codeBlockBuilder.build())
        objectBuilder.addFunction(getAllFunBuilder.build())
    }

    fileBuilder.addType(objectBuilder.build())
    val fileSpec = fileBuilder.build()

    classDeclaration.containingFile?.let { file ->
        fileSpec.writeTo(codeGenerator, Dependencies(aggregating = false, file))
        logger.info("Generated: $packageName.$generatedObjectName")
    } ?: logger.error("Containing file is null for $originalClassNameString.", classDeclaration)
}
package database.entity

import main.util.Constants.GAMES_TABLE
import org.ktorm.entity.Entity
import org.ktorm.schema.Table
import org.ktorm.schema.double
import org.ktorm.schema.int
import org.ktorm.schema.varchar

object GamesTable : Table<GamesEntity>(GAMES_TABLE) {
    val id = int("id").primaryKey().bindTo { it.id }
    val name = varchar("name").bindTo { it.name }
    val description = varchar("description").bindTo { it.description }
    val category = varchar("category").bindTo { it.categoty }
    val released = varchar("released").bindTo { it.released }
    val image = varchar("image").bindTo { it.image }
    val video = varchar("video").bindTo { it.video }
    val developer = int("developer").bindTo { it.developer }
    val rating = double("rating").bindTo { it.rating }
    val trending = int("trending").bindTo { it.trending }
    val screenshot1 = varchar("screenshot1").bindTo { it.screenshot1 }
    val screenshot2 = varchar("screenshot2").bindTo { it.screenshot2 }
    val screenshot3 = varchar("screenshot3").bindTo { it.screenshot3 }
    val screenshot4 = varchar("screenshot4").bindTo { it.screenshot4 }
}

interface GamesEntity : Entity<GamesEntity> {
    companion object : Entity.Factory<GamesEntity>()
    val id: Int
    var name: String
    var description: String
    var released: String
    var categoty: String
    var image: String
    var video: String
    var developer: Int
    var rating: Double
    var trending: Int
    var screenshot1: String
    var screenshot2: String
    var screenshot3: String
    var screenshot4: String
}package com.example.gamebaaz.view

import android.util.Log
import androidx.lifecycle.L


16 22-10-12h20z"/%3e%3c/svg%3e')}.ic_b_move{background-image:url('data:image/svg+xml,%3csvg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"%3e%3cpath fill="%2320c997" d="m14 12v18h4v-18zm-10 4v14h8v-14zm16 0v14h8v-14zm-14 2h4v4h-4zm16 0h4v4h-4zm-16 6h4v4h-4zm16 0h4v4h-4z"/%3e%3cpath fill="%2320c997" d="m10 2-6 6 6 6v-4h12v4l6-6-6-6v4h-12z"/%3e%3c/svg%3e')}.ic_b_newdb{background-image:url('data:image/svg+xml,%3csvg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"%3e%3cpath fill="%2320c997" d="m16 2c-6.6 0-12 2.2-12 5v4c0 2.8 5.4 5 12 5s12-2.2 12-5v-4c0-2.8-5.4-5-12-5zm0 2c5 0 9 1.6 9 3.5s-4 3.5-9 3.5-9-1.6-9-3.5 4-3.5 9-3.5zm-12 9v5c0 2.8 5.4 5 12 5h.2c.5-2.1 1.8-3.9 3.5-5.2-1.2.2-2.4.2-3.7.2-6.6 0-12-2.2-12-5zm24 0c0 1.1-.9 2.1-2.5 3 .8.1 1.7.2 2.5.5zm-24 7v5c0 2.8 5.4 5 12 5 .5 0 1 0 1.5-.1-1-1.5-1.5-3.1-1.5-4.9-6.6 0-12-2.2-12-5z"/%3e%3cpath fill="%2320c997" d="m25 18c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm5 6v2h-4v4h-2v-4h-4v-2h4v-4h2v4z"/%3e%3c/svg%3e')}.ic_db_drop{background-image:url('data:image/svg+xml,%3csvg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"%3e%3cpath fill="%23dc3545" d="m16 2c-6.6 0-12 2.2-12 5v4c0 2.8 5.4 5 12 5s12-2.2 12-5v-4c0-2.8-5.4-5-12-5zm0 2c5 0 9 1.6 9 3.5s-4 3.5-9 3.5-9-1.6-9-3.5 4-3.5 9-3.5zm-12 9v5c0 2.8 5.4 5 12 5h.2c.5-2.1 1.8-3.9 3.5-5.2-1.2.2-2.4.2-3.7.2-6.6 0-12-2.2-12-5zm24 0c0 1.1-.9 2.1-2.5 3 .8.1 1.7.2 2.5.5zm-24 7v5c0 2.8 5.4 5 12 5 .5 0 1 0 1.5-.1-1-1.5-1.5-3.1-1.5-4.9-6.6 0-12-2.2-12-5z"/%3e%3cpath fill="%23dc3545" d="m25 18c-3


KV Project Authors. Licensed under Apache-2.0.

use crate::{spawn_unary_success, MOCK_TIKV_PORT};
use futures::{FutureExt, StreamExt, TryFutureExt};
use grpcio::{Environment, Server, ServerBuilder, WriteFlags};
use kvproto::pdpb::*;
use std::sync::Arc;

pub const MOCK_PD_PORT: u16 = 50021;
/// This is mock pd server, used with mock tikv server.
#[derive(Debug, Clone)]
pub struct MockPd {
    ts: i64,
}

impl MockPd {
    fn new() -> MockPd {
        MockPd { ts: 0 }
    }

    fn region() -> kvproto::metapb::Region {
        kvproto::metapb::Region {
            start_key: vec![],
            end_key: vec![],
            peers: vec![Self::leader()],
            ..Default::default()
        }
    }

    fn leader() -> kvproto::metapb::Peer {
        kvproto::metapb::Peer::default()
    }

    fn store() -> kvproto::metapb::Store {
        // TODO: start_timestamp?
        kvproto::metapb::Store {
            address: format!("localhost:{}", MOCK_TIKV_PORT),
            ..Default::default()
        }
    }
}

pub fn start_mock_pd_server() -> Server {
    let env = Arc::new(Environment::new(1));
    let mut server = ServerBuilder::new(env)
        .register_service(create_pd(MockPd::new()))
        .bind("localhost", MOCK_PD_PORT)
        .build()
        .unwrap();
    server.start();
    server
}

impl Pd for MockPd {
    fn get_members(
        &mut self,
        ctx: ::grpcio::RpcContext,
        req: GetMembersRequest,
        sink: ::grpcio::UnarySink<GetMembersResponse>,
    ) {
        let member = Member {
            name: "<NAME>".to_owned(),
            client_urls: vec![format!("localhost:{}", MOCK_PD_PORT)],
            ..Default::default()
        };
        let resp = GetMembersResponse {
            members: vec![member.clone()],
            leader: Some(member),
            ..Default::default()
        };
        spawn_unary_success!(ctx, req, resp, sink);
    }

    fn tso(
        &mut self,
        ctx: ::grpcio::RpcContext,
        stream: ::grpcio::RequestStream<TsoRequest>,
        sink: ::grpcio::DuplexSink<TsoResponse>,
    ) {
        let f = stream
            .map(|_| {
                let resp = TsoResponse::default();
                // TODO: make ts monotonic
                Ok((resp, WriteFlags::default()))
            })
            .forward(sink)
            .map(|_| ());
        ctx.spawn(f);
    }

    fn bootstrap(
        &mut self,
        _ctx: ::grpcio::RpcContext,
        _req: BootstrapRequest,
        _sink: ::grpcio::UnarySink<BootstrapResponse>,
    ) {
        todo!()
    }

    fn is_bootstrapped(
        &mut self,
        _ctx: ::grpcio::RpcContext,
        _req: IsBootstrappedRequest,
        _sink: ::grpcio::UnarySink<IsBootstrappedResponse>,
    ) {
        todo!()
    }

    fn alloc_id(
        &mut self,
        _ctx: ::grpcio::RpcContext,
        _req: AllocIdRequest,
        _sink: ::grpcio::UnarySink<AllocIdResponse>,
    ) {
        todo!()
    }

    fn get_store(
        &mut self,
        ct


s.+)*)/,UC=0,BC=/^>+(\s)./,KC=/(>)+(\s)/,_C="> ",jC=[],qC=[],GC=hc,JC=_(Rm,16,16,Ou),XC=_(Xm,16,16,Ou),ZC=_(Gm,16,16,Ou),YC=_(l$,16,16,Ou),QC=_(Vm,16,16,Ou),tV=$c,eV=$c,nV=$c,aV=$c,iV=1,oV="T1!",rV="(r[do]|og|ye|l[am]|g[nyd]|aq|cy|wt|b[unk]|se|vn|p[uk]|[mw]n|ol|t[12])",cV=new RegExp(`^(${rV}+)(!)?$`,"i"),lV=new RegExp(`^\\((${rV}+)(!)?\\)$`,"i"),uV=/ye|lm|aq|la|pk|gd|cy/i,sV=0,hV=/^(.+)$/i,fV="t2-a",dV=0,pV=/^#([^|]*)\|([^|]+)(\|([^|]+))?#$/i,mV=/^(.*)({{.+}}|%.+%|\${.+}|#{.+}|\$.+\$|var\(.+\))(.*)$/i,$V="t1",vV=0,zV="t1",gV=0,bV="gy",wV=/^{(.+)}\((.+)\)$/,yV=new IntersectionObserver(((t,e)=>{t.forEach((t=>{if(t.isIntersecting){let n=$(t.target);n.a(Ts,n.a(Wf)),h(n,Wf),n.a(Ws)&&(n.a(Ws,n.a(Of)),h(n,Of)),e.unobserve(n[0]),Ke(n)===Xf&&(Ve(n),lc(n,n.a(Ts),ze(b(n.a(Ts)))))}}))}));$((()=>{Gt().hide(),te(),Sc=ve("pdf")!==Lz,!Sc&&u(qt(),"pdf"+Lz),yc=ve(nl)===Tz,Sc&&yc&&u(qt(),nl),!yc&&cc(),Vt(),bc=p(Te(Vw+"-js")),wc=p(Te(Vw+"-l-js")),ve(zg)===xb&&(n("!!! RESET VLOOK DATA !!!"),oe(gz,zc),oe(gv),oe(ag,zc),oe(vp,zc)),ve(Jz)===Gv&&(fk=Gv),un(),lk.os.Windows?u(qt(),"os-windows"):u(qt(),Yh+`-${Js}-mac`),e("- "+$g),Ec=Pc.ed(Jc),lk.info(),Pc.st(),e(`=== Load ${Np} ===`),uc(),yc&&Ei(),!yc&&cn();let a=ve(Pd);Dx=a===vc?2:p(a),Dx=re()?0:Dx,t(`    └ Level [ ${Dx} ]`),Pc.st("* Welcome Page Init");let i=ve("ws");if(i=i===vc?yl:i,t(`    └ ${Af}: `+i),ta(i),!Ze())return ne(tp).hide(),ne(rM).hide(),void ne(Rw).hide();Pc.ed(Cs),Pc.st("* Intance"),an(),Pc.ed(Cs),jc=xc.styleSheets[0],tn(sc,100)})),xc.fonts.ready.then((()=>{t(`!!! All ${mp} ${$g} !!!`)}))}();
//# sourceMappingURL=vlook-min.js.map
/* ↑↑↑ VLOOK.js ↑↑↑ */
</script>
<!--===============================-->
<!-- END • VLOOK plugin for <head /> -->
<!--===============================-->

<style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color: #ffffff; --text-color: #333333; --select-text-bg-color: #B5D6FC; --select-text-font-color: auto; --monospace: "Lucida Console",Consolas,"Courier",monospace; --title-bar-height: 20px; }
.mac-os-11 { --title-bar-height: 28px; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5 { white-space: pre-wrap; }
body { margin: 0px; paddi


 getSurfaceTriangles(pts);
	if(tri==null) return null; // too less pts

	IVertex[] vtx = new IVertex[pts.length];
	List<IVecI> plist = Arrays.asList(pts);
	IFace[] fcs = new IFace[tri.length];
	for(int i=0; i<tri.length; i++){
	    int idx1 = plist.indexOf(tri[i][0]);
	    int idx2 = plist.indexOf(tri[i][1]);
	    int idx3 = plist.indexOf(tri[i][2]);
	    if(vtx[idx1]==null) vtx[idx1] = new IVertex(pts[idx1]);
	    if(vtx[idx2]==null) vtx[idx2] = new IVertex(pts[idx2]);
	    if(vtx[idx3]==null) vtx[idx3] = new IVertex(pts[idx3]);
	    fcs[i] = new IFace(vtx[idx1],vtx[idx2],vtx[idx3]);
	}
	return new IMesh(fcs);
    }

    /**
       Getting edges of delaunay tetrahedron out of array of points.
       @return array of pairs of points, which represent edges.
    */
    public static IVec[][] getEdges(IVec[] pts){
        IVec[][] tet = getTetrahedron(pts);
        ArrayList<IVec[]> pairs = new ArrayList<IVec[]>();
        for(int i=0; i<tet.length; i++){
            for(int j=0; j<tet[i].length; j++){
                boolean exists=false;
                for(int k=0; k<pairs.size()&&!exists; k++){
                    if(pairs.get(k)[0] == tet[i][j] &&
                       pairs.get(k)[1] == tet[i][(j+1)%tet[i].length] ||
                       pairs.get(k)[1] == tet[i][j] &&
                       pairs.get(k)[0] == tet[i][(j+1)%tet[i].length]){
                        exists=true;
                    }
                }
                if(!exists){
                    pairs.add(new IVec[]{ tet[i][j], tet[i][(j+1)%tet[i].length] });
                }
            }
        }
        return pairs.toArray(new IVec[pairs.size()][]);
    }

    /**
       Getting edges of delaunay tetrahedron out of array of points.
       @return array of pairs of points, which represent edges.
    */
    public static IVecI[][] getEdges(IVecI[] pts){
        IVecI[][] tet = getTetrahedron(pts);
        ArrayList<IVecI[]> pairs = new ArrayList<IVecI[]>();
        for(int i=0; i<tet.length; i++){
            for(int j=0; j<tet[i].length; j++){
                boolean exists=false;
                for(int k=0; k<pairs.size()&&!exists; k++){
                    if(pairs.get(k)[0] == tet[i][j] &&
                       pairs.get(k)[1] == tet[i][(j+1)%tet[i].length] ||
                       pairs.get(k)[1] == tet[i][j] &&
                       pairs.get(k)[0] == tet[i][(j+1)%tet[i].length]){
                        exists=true;
                    }
                }
                if(!exists){
                    pairs.add(new IVecI[]{ tet[i][j], tet[i][(j+1)%tet[i].length] });
                }
            }
        }
        return pairs.toArray(new IVecI[pairs.size()][]);
    }

    /** check if two triangle points are same in terms of same instance
	@param tri1 array of 3 po


/* Copyright (C) 1992 Free Software Foundation, Inc.
This file is part of the GNU C Library.

The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.

The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB.  If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA.  */

#include <ansidecl.h>
#include <termios.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ioctl.h>

/* Return the foreground process group ID of FD.  */
pid_t
DEFUN(tcgetpgrp, (fd), int fd)
{
  int pgrp;
  if (__ioctl(fd, TIOCGPGRP, &pgrp) < 0)
    return (pid_t) -1;
  return (pid_t) pgrp;
}


tdownMode = System.Windows.ShutdownMode.OnExplicitShutdown };

            var assemblyContainingViewModels = typeof(ThisAddIn).Assembly; // This should be the assembly containing all your VSTOContrib viewmodels
            return new VSTOContrib.PowerPoint.RibbonFactory.PowerPointRibbonFactory(new VSTOContrib.Core.DefaultViewModelFactory(), () => CustomTaskPanes, Globals.Factory, assemblyContainingViewModels);
        }

        #region VSTO generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }

        #endregion
    }
}


0;
			margin-bottom: 0;
		}
	}

	// Block Styles
	&.is-style-twentytwentyone-border {
		border: calc(3 * var(--separator--height)) solid var(--global--color-border);
		padding: var(--global--spacing-vertical);

		.wp-block-group__inner-container > [data-align="full"] {
			max-width: calc(var(--responsive--alignfull-width) + (2 * var(--global--spacing-vertical)));
			width: calc(var(--responsive--alignfull-width) + (2 * var(--global--spacing-vertical)));
			margin-left: calc(-1 * var(--global--spacing-vertical));
		}
	}

	@include innerblock-margin-clear(".wp-block-group__inner-container");
}

.wp-block-group .wp-block-group.has-background > .block-editor-block-list__layout > [data-align="full"] {
	margin: 0;
	width: 100%;
}
.wp-block-group {
	// Start IE clearfix.
	// This hack is only necessary because we want to support IE11.
	// If we don't want to support IE11, then "display: flow-root" would suffice.
	display: block;
	clear: both;

	display: flow-root; // stylelint-disable-line declaration-block-no-duplicate-properties

	&:before,
	&:after {
		content: "";
		display: block;
		clear: both;
	}
	// End IE clearfix.

	.wp-block-group__inner-container {
		margin-left: auto;
		margin-right: auto;

		> * {
			margin-top: calc(0.666 * var(--global--spacing-vertical));
			margin-bottom: calc(0.666 * var(--global--spacing-vertical));

			&.alignfull {
				@extend %responsive-alignfull-width-mobile;
			}

			@include media(mobile) {
				margin-top: var(--global--spacing-vertical);
				margin-bottom: var(--global--spacing-vertical);
			}

			&:first-child {
				margin-top: 0;
			}

			&:last-child {
				margin-bottom: 0;
			}
		}
	}

	&.has-background {
		padding: calc(0.666 * var(--global--spacing-vertical));

		@include media(mobile) {
			padding: var(--global--spacing-vertical);
		}
	}

	// Block Styles
	&.is-style-twentytwentyone-border {
		border: calc(3 * var(--separator--height)) solid var(--global--color-border);
		padding: var(--global--spacing-vertical);
	}

	// Adjust alignfull items to account for left and right padding.
	&.has-background,
	&.is-style-twentytwentyone-border {

		.wp-block-group__inner-container > .alignfull,
		.wp-block-group__inner-container > hr.wp-block-separator:not(.is-style-dots):not(.alignwide).alignfull {
			max-width: calc(var(--responsive--alignfull-width) + (2 * var(--global--spacing-vertical)));
			width: calc(var(--responsive--alignfull-width) + (2 * var(--global--spacing-vertical)));
			margin-left: calc(-1 * var(--global--spacing-vertical));
		}
	}
}
.wp-block-rss {
	padding-left: 0;

	> li {
		list-style: none;
	}

	// Vertical margins logic
	&:not(.is-grid) > li {
		margin-top: calc(1.666 * var(--global--spacing-vertical));
		margin-bottom: calc(1.666 * var(--global--spacing-vertical));

		&:first-child {
			margin-top: 0;
		}

		&:last-child


)
    @Suppress("LongParameterList")
    fun getComponentPkgDownloadUrl(
        @HeaderParam(AUTH_HEADER_DEVOPS_BK_TOKEN)
        @Parameter(description = "认证token", required = true)
        token: String,
        @Parameter(description = "用户Id", required = true)
        @HeaderParam(AUTH_HEADER_USER_ID)
        userId: String,
        @Parameter(description = "项目Id", required = true)
        @HeaderParam(AUTH_HEADER_DEVOPS_PROJECT_ID)
        projectId: String,
        @Parameter(description = "组件类型", required = true)
        @PathParam("storeType")
        @BkField(patternStyle = BkStyleEnum.CODE_STYLE)
        storeType: StoreTypeEnum,
        @Parameter(description = "组件标识", required = true)
        @PathParam("storeCode")
        @BkField(patternStyle = BkStyleEnum.CODE_STYLE)
        storeCode: String,
        @Parameter(description = "组件版本号", required = true)
        @PathParam("version")
        version: String,
        @Parameter(description = "实例ID", required = false)
        @QueryParam("instanceId")
        instanceId: String? = null,
        @Parameter(description = "操作系统名称", required = false)
        @QueryParam("osName")
        osName: String? = null,
        @Parameter(description = "操作系统架构", required = false)
        @QueryParam("osArch")
        osArch: String? = null
    ): Result<String>
}
/*
 * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available.
 *
 * Copyright (C) 2019 Tencent.  All rights reserved.
 *
 * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license.
 *
 * A copy of the MIT License is included in this file.
 *
 *
 * Terms of the MIT License:
 * ---------------------------------------------------
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
 * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of
 * the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package com.tencent.devops.artifactory.pojo

import com.tencent.devops.artifactory.pojo.enums.ArtifactoryType
import io.swagger.v3.oas.annotations.media.Schema

@Schema(title = "版本仓库-文件信息")
data class FileInfo(
    @get:Schema(title = "文件名", required = true)
    val name: String,
    @get:Schema(title = "文件全名", required = true)
    val fullName: String,
    @get:Schema(title = "文件路径", required = true)
    val path: String,
    @get:Schema(title = "文件全路径", required = true)
    val fullPath: String,
    @get:Schema(title = "文件大小(byte)", required = true)
    val size: Long,
    @


485: !ST [6] (maybe <- 0x1800113) (Int)
stw   %l4, [%i1 + 80 ]
add   %l4, 1, %l4

P3486: !CAS [1] (maybe <- 0x1800114) (Int)
add %i0, 4, %l3
lduw [%l3], %l7
mov %l7, %o5
! move %o5(lower) -> %o4(lower)
or %o5, %o4, %o4
!---- flushing int results buffer----
mov %o0, %l5
mov %o1, %l5
mov %o2, %l5
mov %o3, %l5
mov %o4, %l5
mov %l4, %o0
cas [%l3], %o5, %o0
! move %o0(lower) -> %o0(upper)
sllx %o0, 32, %o0
add   %l4, 1, %l4

P3487: !ST [11] (maybe <- 0x1800115) (Int) (LE)
wr %g0, 0x88, %asi
! Change single-word-level endianess (big endian <-> little endian)
sethi %hi(0xff00ff00), %l3
or %l3, %lo(0xff00ff00), %l3
and %l4, %l3, %l6
srl %l6, 8, %l6
sll %l4, 8, %o5
and %o5, %l3, %o5
or %o5, %l6, %o5
srl %o5, 16, %l6
sll %o5, 16, %o5
srl %o5, 0, %o5
or %o5, %l6, %o5
stwa   %o5, [%i2 + 64] %asi
add   %l4, 1, %l4

P3488: !DWST [12] (maybe <- 0x1800116) (Int) (CBR)
mov %l4, %l7
sllx %l7, 32, %l7
stx %l7, [%i3 + 0 ]
add   %l4, 1, %l4

! cbranch
andcc %l0, 1, %g0
be,pn  %xcc, TARGET3488
nop
RET3488:

! lfsr step begin
srlx %l0, 1, %l6
xnor %l6, %l0, %l6
sllx %l6, 63, %l6
or  %l6, %l0, %l0
srlx %l0, 1, %l0

P3489: !CAS [13] (maybe <- 0x1800117) (Int)
add %i3, 64, %o5
lduw [%o5], %l6
mov %l6, %l7
! move %l7(lower) -> %o0(lower)
or %l7, %o0, %o0
mov %l4, %o1
cas [%o5], %l7, %o1
! move %o1(lower) -> %o1(upper)
sllx %o1, 32, %o1
add   %l4, 1, %l4

P3490: !PREFETCH [7] (Int)
prefetch [%i1 + 84], 1

P3491: !PREFETCH [4] (Int)
prefetch [%i0 + 64], 1

P3492: !ST [10] (maybe <- 0x1800118) (Int)
stw   %l4, [%i2 + 32 ]
add   %l4, 1, %l4

P3493: !DWST [0] (maybe <- 0x1800119) (Int)
sllx %l4, 32, %l6
add   %l4, 1, %l4
or %l6, %l4, %l6
stx %l6, [%i0 + 0]
add   %l4, 1, %


def load_ratings_df(self):
    folder_path = self._get_rawdata_folder_path()
    file_path = folder_path.joinpath('ratings.csv')
    df = pd.read_csv(file_path)
    df.columns = ['uid', 'sid', 'rating', 'timestamp']
    return df


MG,
  Type92MG = Type92MG,
  TE4 = TE4,
  -- 13mm
  Twin05CalVickers = Twin05CalVickers,
  DShK = DShK,
  Twin_DShK = Twin_DShK,
  BeresinUBS = BeresinUBS,
  M2Browning = M2Browning,
  M2BrowningAA = M2BrowningAA,
  M2BrowningAMG = M2BrowningAMG,
  BredaM1931 = BredaM1931,
  BredaM1931AA = BredaM1931AA,
  BredaSafat05 = BredaSafat05,
  Type93HMG = Type93HMG,
  Type93AA = Type93AA,
  Type1Ho103 = Type1Ho103,
  ksp_m1936 = ksp_m1936,
  ksp_m1936AMG = ksp_m1936AMG,
  ksp_m1936AA = ksp_m1936AA,
  ksp_m1936_deployed = ksp_m1936_deployed,
  ksp_m1939 = ksp_m1939,
  mg30 = mg30,
  mg7_deployed = Schwarzlose,
  gebauer_1934_37m = gebauer_1934_37m,
  MACmle1931 = MACmle1931,
})


(&20));
    /// ```
    pub fn remove_mut(&mut self, value: &T) -> bool {
        unsafe { self.inner.remove_mut_unchecked(value) }.is_some()
    }

    /// Returns the node with the left-most value (smallest) or `None` if the
    /// tree is empty.
    ///
    /// # Example
    ///
    /// ```
    /// use collections_ext::tree::redblack::RedBlackTree;
    ///
    /// let tree = RedBlackTree::new(5).insert(10);
    /// assert_eq!(Some(&5), tree.min());
    /// ```
    pub fn min(&self) -> Option<&T> {
        self.inner.min().map(|(value, _)| value)
    }

    /// Returns the node with the right-most value (largest) or `None` if the
    /// tree is empty.
    ///
    /// # Example
    ///
    /// ```
    /// use collections_ext::tree::redblack::RedBlackTree;
    ///
    /// let tree = RedBlackTree::new(5).insert(10);
    /// assert_eq!(Some(&10), tree.max());
    /// ```
    pub fn max(&self) -> Option<&T> {
        self.inner.max().map(|(value, _)| value)
    }

    /// Returns an Iterator for traversing an array in order.
    ///
    /// # Example
    ///
    /// ```
    /// use collections_ext::tree::redblack::RedBlackTree;
    ///
    /// let tree = RedBlackTree::new(5);
    /// assert_eq!(Some(&5), tree.traverse_in_order().next());
    /// ```
    pub fn traverse_in_order(&self) -> IterInOrder<'_, T> {
        IterInOrder::new(&self.inner)
    }
}

impl<T> Default for RedBlackTree<T>
where
    T: PartialEq + PartialOrd,
{
    fn default() -> Self {
        Self {
            inner: KeyedRedBlackTree::default(),
        }
    }
}

/// An implementation of a Red-Black Tree
#[derive(Debug)]
pub struct KeyedRedBlackTree<K, V>
where
    K: PartialEq + PartialOrd,
{
    len: usize,
    root: Option<NodeRef<K, V, Color>>,
}

impl<K, V> KeyedRedBlackTree<K, V>
where
    K: PartialEq + PartialOrd,
{
    /// Instantiates a new Red-Black tree from an initial value.
    pub fn new(key: K, value: V) -> Self {
        let node = Node::new(key, value, None, None, None, Color::Black);
        let root_ptr = NodeRef::from(node);

        Self {
            len: 1,
            root: Some(root_ptr),
        }
    }
}

// helper methods
impl<K, V> KeyedRedBlackTree<K, V>
where
    K: PartialEq + PartialOrd,
{
    /// Returns a boolean representing if the tree is empty or not.
    ///
    /// # Example
    ///
    /// ```
    /// use collections_ext::tree::redblack::KeyedRedBlackTree;
    ///
    /// assert!(KeyedRedBlackTree::<usize, usize>::default().is_empty());
    /// ```
    pub fn is_empty(&self) -> bool {
        self.len == 0
    }

    /// Returns the number of nodes in a tree.
    ///
    /// # Example
    ///
    /// ```
    /// use collections_ext::tree::redblack::KeyedRedBlackTree;
    ///
    /// let tree = KeyedRedBlackTree::<usize, usize>::default();
    ///
    /// assert_eq!(0, tree.len());
    ///
    /// assert_eq!(2, tree.insert(5, 10).insert(15, 20).len());
    /// ```
    pub fn len(&self) -> usize {
        self.len
    }

    /// Searches for a value in the tree returning a SearchResult that
    /// captures if the search yield a hit, miss or empty tree.
    unsafe fn find_nearest_node(&self, ke


      ]
    )
    expect(result).toEqual(expected)
  })

  it("multiple conditions without and", function () {
    const result = selectExpr.tryParse(`
    select * from tile38
    where
      name = "Linh"
      age > 10
    `)

    const expected = new SelectStatement(
      [],
      new Document(DocumentKeyword.Tile38),
      new FieldDefinitionExpression(new AllField()),
      undefined,
      [
        new ConditionTree(Operator.Equal, "name", new Literal("Linh")),
        new ConditionTree(Operator.Greater, "age", new Literal(10)),
      ]
    )
    expect(result).toEqual(expected)
  })

  it("multiple conditions with semicolon", function () {
    const result = selectExpr.tryParse(`
    select * from tile38
    where
      name = "Linh",
      age > 10
    `)

    const expected = new SelectStatement(
      [],
      new Document(DocumentKeyword.Tile38),
      new FieldDefinitionExpression(new AllField()),
      undefined,
      [
        new ConditionTree(Operator.Equal, "name", new Literal("Linh")),
        new ConditionTree(Operator.Greater, "age", new Literal(10)),
      ]
    )
    expect(result).toEqual(expected)
  })

  it("multiple conditions with Chinese semicolon", function () {
    const result = selectExpr.tryParse(`
    select * from tile38
    where
      name = "陈俊岭"，
      age = 18
    `)

    const expected = new SelectStatement(
      [],
      new Document(DocumentKeyword.Tile38),
      new FieldDefinitionExpression(new AllField()),
      undefined,
      [
        new ConditionTree(Operator.Equal, "name", new Literal("陈俊岭")),
        new ConditionTree(Operator.Equal, "age", new Literal(18)),
      ]
    )
    expect(result).toEqual(expected)
  })

  it("condition with comment above", function () {
    const result = selectExpr.tryParse(`
    select * from tile38
    where
      -- name = "Linh",
      age > 10
    `)

    const expected = new SelectStatement(
      [],
      new Document(DocumentKeyword.Tile38),
      new FieldDefinitionExpression(new AllField()),
      undefined,
      [
        // new ConditionTree(Operator.Equal, 'name', new Literal("Linh")),
        new ConditionTree(Operator.Greater, "age", new Literal(10)),
      ]
    )
    expect(result).toEqual(expected)
  })

  it("condition with comment above and below", function () {
    const result = selectExpr.tryParse(`
    select * from tile38
    where
      -- this is the above comment,
      age > 10
      -- this is the below comment
    `)

    const expected = new SelectStatement(
      [],
      new Document(DocumentKeyword.Tile38),
      new FieldDefinitionExpression(new AllField()),
      undefined,
      [
        // new ConditionTree(Operator.Equal, 'name', new Literal("Linh")),
        new ConditionTree(Operator.Greater, "age", new Literal(10)),
      ]
    )
    expect(result).toEqual(expected)
  })

  it("comment between select and where", function () {
    const result = selectExpr.tryParse(`
    select * from tile38
    -- this is a comment
    where
      -- name = "Linh",
      age > 10
    `)

    const expected = new SelectStatement(
      [],
      new Document(DocumentKeyword.Tile38),
      new FieldDefinitionExpression(new AllField()),
      undefined,
      [
        // new ConditionTree(Operator.Equal, 'name', new Literal("Linh")),
        new ConditionTree


idth()
            .padding(vertical = 2.dp),
        horizontalArrangement = Arrangement.SpaceBetween
    ) {
        Text(
            text = label,
            style = MaterialTheme.typography.bodyMedium,
            fontWeight = FontWeight.Medium,
            modifier = Modifier.weight(1f)
        )
        Text(
            text = value,
            style = MaterialTheme.typography.bodyMedium,
            modifier = Modifier.weight(1f),
            textAlign = TextAlign.End
        )
    }
}

@Composable
fun TestHardwareInfo(report: DeviceInfoReport) {
    InfoSection(title = "Hardware Information") {
        val hardwareInfo = report.getHardwareInfo()

        if (hardwareInfo != null) {
            InfoRow("Manufacturer", hardwareInfo.manufacturer)
            InfoRow("Model", hardwareInfo.model)
            InfoRow("Device", hardwareInfo.device)
            InfoRow("Board", hardwareInfo.board)
            InfoRow("CPU Architecture", hardwareInfo.cpuArchitecture)
            InfoRow("Supported ABIs", hardwareInfo.supportedAbis.joinToString(", "))
            InfoRow("Total RAM", formatBytes(hardwareInfo.totalRamBytes))
            InfoRow("Available RAM", formatBytes(hardwareInfo.availableRamBytes))
            InfoRow("Total Storage", formatBytes(hardwareInfo.totalStorageBytes))
            InfoRow("Available Storage", formatBytes(hardwareInfo.availableStorageBytes))
            InfoRow("Sensors Count", "${hardwareInfo.sensors.size}")

            // Show first few sensors as examples
            if (hardwareInfo.sensors.isNotEmpty()) {
                Text(
                    text = "Sample Sensors:",
                    style = MaterialTheme.typography.bodyMedium,
                    fontWeight = FontWeight.Bold,
                    modifier = Modifier.padding(top = 8.dp)
                )
                hardwareInfo.sensors.forEach { sensor ->
                    Text(
                        text = "• ${sensor.name} (${sensor.type})",
                        style = MaterialTheme.typography.bodySmall,
                        modifier = Modifier.padding(start = 16.dp)
                    )
                }
            }
        } else {
            Text("Hardware info not available", color = MaterialTheme.colorScheme.error)
        }
    }
}

@Composable
fun TestSystemInfo(report: DeviceInfoReport) {
    InfoSection(title = "System Information") {
        val systemInfo = report.getSystemInfo()

        if (systemInfo != null) {
            InfoRow("Android Version", systemInfo.androidVersion)
            InfoRow("API Level", "${systemInfo.apiLevel}")
            InfoRow("Build ID", systemInfo.buildId)
            InfoRow("Fingerprint", systemInfo.fingerprint.take(50) + "...")
            InfoRow("Security Patch", systemInfo.securityPatchLevel ?: "Unknown")
            InfoRow("Bootloader", systemInfo.bootloaderVersion ?: "Unknown")
            InfoRow("Kernel Version", systemInfo.kernelVersion ?: "Unknown")
            InfoRow("Locale", systemInfo.locale)
            InfoRow("Timezone", systemInfo.timeZone)
            InfoRow("System Uptime", formatUptime(systemInfo.systemUptime))
            InfoRow("Is Rooted", if (systemInfo.isRooted) "Yes ✅" else "No ⚠")
            InfoRow("Developer Options", if (systemInfo.isDeveloperOptionsEnabled) "Enabled" else "Disabled")
            InfoRow("ADB Enabled", if (systemInfo.isAdbEnabled) "Yes" else "No")
            InfoRow("SELinux Status", systemInfo.seLinuxStatus)
            InfoRow("Is Emulator", if (systemInfo.isEmulator) "Yes" else "No")
            InfoRow("Play Services", systemInfo.playServicesVersion ?: "Not installed")
            InfoRow("Installer", systemInfo.installerPackageName ?: "Unknown")
        } else {
            Text("System info not available", color = MaterialTheme.colorScheme.error)
        }
    }
}

@Composable
fun TestNetworkInfo(report: DeviceInfoReport


d> showToast({
    required String message,
    required SnackDisplayDuration duration,
  }) async {
    // -- use in-app toast
    snackyy(message: message, displayDuration: duration);
  }

  @override
  Future<int> getPlatformSdk() async {
    return 0;
  }

  @override
  Future<bool> setMusicAs({required String path, required List<SetMusicAsAction> types}) async {
    // -- unsupported
    return false;
  }

  @override
  Future<bool> openSystemEqualizer(int? sessionId) async {
    // -- unsupported
    return false;
  }

  @override
  Future<bool> openNamidaSync(String backupFolder, String musicFoldersJoined) async {
    // -- unsupported natively
    return false;
  }
}
part of 'namida_channel.dart';

/// The new flutter update, calls AppLifecycleState.inactive whenever the app
/// loses focus, like swiping notification center, not ideal for what we need.
/// so we use a method channel whenever `onUserLeaveHint`, etc is called from FlutterActivity
class _NamidaChannelAndroid extends NamidaChannel {
  late final MethodChannel _channel;
  late final EventChannel _channelEvent;

  StreamSubscription? _streamSub;

  _NamidaChannelAndroid._init() {
    _channel = const MethodChannel('namida');
    _channelEvent = const EventChannel('namida_events');

    _initLiseners();
  }

  @override
  Future<void> updatePipRatio({int? width, int? height}) async {
    await _channel.invokeMethod('updatePipRatio', {'width': width, 'height': height});
  }

  @override
  Future<void> setCanEnterPip(bool canEnter) async {
    await _channel.invokeMethod('setCanEnterPip', {"canEnter": canEnter});
  }

  @override
  Future<void> showToast({
    required String message,
    required SnackDisplayDuration duration,
  }) async {
    final seconds = (duration.milliseconds / 1000).ceil();
    _channel.invokeMethod(
      'showToast',
      {
        "text": message,
        "seconds": seconds,
      },
    );
  }

  @override
  Future<int> getPlatformSdk() async {
    final version = await _channel.invokeMethod<int?>('sdk');
    return version ?? 0;
  }

  @override
  Future<bool> setMusicAs({required String path, required List<SetMusicAsAction> types}) async {
    final t = <int>[];
    types.loop((e) {
      final n = _setMusicAsActionConverter[e];
      if (n != null) t.add(n);
    });
    final res = await _channel.invokeMethod<bool?>('setMusicAs', {'path': path, 'types': t});
    return res ?? false;
  }

  @override
  Future<bool> openSystemEqualizer(int? sessionId) async {
    final res = await _channel.invokeMethod<bool?>('openEqualizer', {'sessionId': sessionId});
    return res ?? false;
  }

  @override
  Future<bool> openNamidaSync(String backupFolder, String musicFoldersJoined) async {
    try {
      final res = await _channel.invokeMethod(
        'openNamidaSync',
        {
          'backupPath': backupFolder,
          'musicFolders': musicFoldersJoined,
        },
      );
      return res ?? false;
    } on PlatformException catch (_) {
      // -- package doesn't exist
      return false;
    }
  }

  void _initLiseners() {
    _streamSub?.cancel();
    try {
      _streamSub = _channelEvent.receiveBroadcastStream().map((event) => event as bool).listen((message) {
        isInPip.


from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from fastapi import HTTPException, status
from sqlalchemy.exc import SQLAlchemyError
from models import *

async def get_best_seller_by_id(db: AsyncSession, id: int):
    result = await db.execute(select(BestSeller).where(BestSeller.id == id))
    best_seller = result.scalar_one_or_none()
    if not best_seller:
        raise HTTPException(status_code=404, detail="Best seller not found")
    return best_seller

async def get_all_best_sellers(db: AsyncSession, page: int = 0, limit: int = 10):
    result = await db.execute(select(BestSeller).offset(page * limit).limit(limit))
    return result.scalars().all()

async def create_best_seller(db: AsyncSession, vendor_id: int):
    try:
        result = await db.execute(
            select(Vendors).where(Vendors.id == vendor_id)
        )
        vendor = result.scalar_one_or_none()

        if not vendor:
            raise HTTPException(
                status_code=status.HTTP_404_NOT_FOUND,
                detail="Vendor not found"
            )

        if vendor.total_orders and vendor.total_orders > 0:
            rank = vendor.total_sales / vendor.total_orders
        else:
            rank = 0

        new_best_seller = BestSeller(
            vendor_id=vendor_id,
            rank=rank
        )

        db.add(new_best_seller)
        await db.commit()
        await db.refresh(new_best_seller)

        return new_best_seller

    except SQLAlchemyError as e:
        await db.rollback()
        raise HTTPException(
            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
            detail=f"Database error: {str(e)}"
        )

async def update_best_seller(db: AsyncSession, id: int, vendor_id: int):
    try:
        result = await db.execute(select(BestSeller).where(BestSeller.id == id))
        best_seller = result.scalar_one_or_none()
        if not best_seller:
            raise HTTPException(status_code=404, detail="Best seller not found")

        vendor_result = await db.execute(
            select(Vendors).where(Vendors.id == vendor_id)
        )
        vendor = vendor_result.scalar_one_or_none()
        if not vendor:
            raise HTTPException(status_code=404, detail="Vendor not found")

        if vendor.total_orders and vendor.total_orders > 0:
            rank = vendor.total_sales / vendor.total_orders
        else:
            rank = 0

        best_seller.vendor_id = vendor_id
        best_seller.rank = rank

        await db.commit()
        await db.refresh(best_seller)
        return best_seller

    except SQLAlchemyError as e:
        await db.rollback()
        raise HTTPException(
            status_code=500,
            detail=f"Database error: {str(e)}"
        )


ICON: &str = "";
// pub const COMMENT_EDIT_FONT_ICON: &str = "";
// pub const COMMENT_ALERT_FONT_ICON: &str = "";
// pub const COMMENT_MORE_FONT_ICON: &str = "";
// pub const COMMENT_OUTLINE_FONT_ICON: &str = "";
// pub const COMMENTS_FONT_ICON: &str = "";
// pub const COMMENT_VIDEO_TEXT_FONT_ICON: &str = "";
// pub const COMMENT_TEXT_FONT_ICON: &str = "";

// // category: Form
// pub const CHECK_ALL_FONT_ICON: &str = "";
// pub const CHECK_CIRCLE_U_FONT_ICON: &str = "";
// pub const CHECK_CIRCLE_FONT_ICON: &str = "";
// pub const CHECK_SQUARE_FONT_ICON: &str = "";
// pub const CHECK_FONT_ICON: &str = "";
// //pub const CHECK_FONT_ICON: &str = "";
// pub const CIRCLE_O_FONT_ICON: &str = "";
// pub const CIRCLE_FONT_ICON: &str = "";
// pub const DOT_CIRCLE_ALT_FONT_ICON: &str = "";
// pub const DOT_CIRCLE_FONT_ICON: &str = "";
// pub const MINUS_CIRCLE_OUTLINE_FONT_ICON: &str = "";
// pub const MINUS_CIRCLE_FONT_ICON: &str = "";
// pub const MINUS_SQUARE_FONT_ICON: &str = "";
// pub const MINUS_FONT_ICON: &str = "";
// //pub const MINUS_FONT_ICON: &str = "";
// pub const PLUS_CIRCLE_O_DUPLICATE_FONT_ICON: &str = "";
// pub const PLUS_CIRCLE_O_FONT_ICON: &str = "";
// pub const PLUS_CIRCLE_FONT_ICON: &str = "";
// pub const PLUS_SQUARE_FONT_ICON: &str = "";
// pub const PLUS_FONT_ICON: &str = "";
// pub const SQUARE_O_FONT_ICON: &str = "";
// pub const STAR_CIRCLE_FONT_ICON: &str = "";
// pub const STAR_HALF_FONT_ICON: &str = "";
// pub const STAR_OUTLINE_FONT_ICON: &str = "";
// pub const STAR_STAR_FONT_ICON: &str = "";

/// List of material font icons. Use this to generate a font Icon.
pub const FLOPPY_FONT_ICON: &str = "";
pub const CHECK_FONT_ICON: &str = "";
pub const ADD_FONT_ICON: &str = "";
pub const MINUS_FONT_ICON: &str = "";
pub const LOAD_FONT_ICON: &str = "";
pub const SAVE_FONT_ICON: &str = "";
pub const KEYBOARD_ARROW_LEFT_FONT_ICON: &str = "";
pub const KEYBOARD_ARROW_RIGHT_FONT_ICON: &str = "";
pub const REMOVE_ICON: &str = "";
pub const ARROW_DOWN_ICON: &str = "";//! API in rmw/topic_endpoint_info.h

use std::os::raw::c_char;


Amazon Aurora DB instances, the life cycle type is managed by the DB
  /// cluster.
  ///
  /// Valid Values: open-source-rds-extended-support |
  /// open-source-rds-extended-support-disabled
  ///
  /// Default: open-source-rds-extended-support
  ///
  /// Parameter [iops] :
  /// Specifies the amount of provisioned IOPS for the DB instance, expressed in
  /// I/O operations per second. If this parameter isn't specified, the IOPS
  /// value is taken from the backup. If this parameter is set to 0, the new
  /// instance is converted to a non-PIOPS instance. The conversion takes
  /// additional time, though your DB instance is available for connections
  /// before the conversion starts.
  ///
  /// The provisioned IOPS value must follow the requirements for your database
  /// engine. For more information, see Amazon
  /// RDS Provisioned IOPS storage in the Amazon RDS User Guide.
  ///
  /// Constraints: Must be an integer greater than 1000.
  ///
  /// Parameter [licenseModel] :
  /// License model information for the restored DB instance.
  /// <note>
  /// License models for RDS for Db2 require additional configuration. The Bring
  /// Your Own License (BYOL) model requires a custom parameter group. The Db2
  /// license through Amazon Web Services Marketplace model requires an Amazon
  /// Web Services Marketplace subscription. For more information, see RDS
  /// for Db2 licensing options in the Amazon RDS User Guide.
  /// </note>
  /// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
  ///
  /// Valid Values:
  ///
  ///

  ///

  /// RDS for Db2 - bring-your-own-license | marketplace-license
  ///

  ///

  /// RDS for MariaDB - general-public-license
  ///

  ///

  /// RDS for Microsoft SQL Server - license-included
  ///

  ///

  /// RDS for MySQL - general-public-license
  ///

  ///

  /// RDS for Oracle - bring-your-own-license | license-included
  ///

  ///

  /// RDS for PostgreSQL - postgresql-license
  ///

  ///

  /// Default: Same as the source.
  ///
  /// Parameter [multiAZ] :
  /// Specifies whether the DB instance is a Multi-AZ deployment.
  ///
  /// This setting doesn't apply to RDS Custom.
  ///
  /// Constraint: You can't specify the AvailabilityZone parameter
  /// if the DB instance is a Multi-AZ deployment.
  ///
  /// Parameter [networkType] :
  /// The network type of the DB instance.
  ///
  /// Valid Values:
  ///
  ///

  ///

  /// IPV4
  ///

  ///

  /// DUAL
  ///

  ///

  /// The network type is determined by the DBSubnetGroup specified
  /// for the DB instance. A DBSubnetGroup can support only the
  /// IPv4 protocol or the IPv4 and the IPv6 protocols (DUAL).
  ///
  /// For more information, see
  /// Working with a DB instance in a VPC in the Amazon RDS User
  /// Guide.
  ///
  /// Parameter [optionGroupName] :
  /// The name


T:
			value = 1;
			break;
		case GPIOC_CLEAR:
			value = 0;
			break;
		case GPIOC_TOGGLE:
			value = gpio_get_value(gpio);
			if (!IS_ERR_VALUE(value))
				value = !value;
			break;
		default:
			goto show_usage;
		}
		gpio_direction_output(gpio, value);
	}
	printf("gpio: pin %s (gpio %u) value is ", str_gpio, gpio);

	if (IS_ERR_VALUE(value)) {
		printf("unknown (ret=%d)\n", value);
		goto err;
	} else {
		printf("%d\n", value);
	}

	if (sub_cmd != GPIOC_INPUT && !IS_ERR_VALUE(value)) {
		int nval = gpio_get_value(gpio);

		if (IS_ERR_VALUE(nval)) {
			printf("   Warning: no access to GPIO output value\n");
			goto err;
		} else if (nval != value) {
			printf("   Warning: value of pin is still %d\n", nval);
			goto err;
		}
	}

	if (ret != -EBUSY)
		gpio_free(gpio);

	/*
	 * Whilst wrong, the legacy gpio input command returns the pin
	 * value, or CMD_RET_FAILURE (which is indistinguishable from a
	 * valid pin value).
	 */
	return (sub_cmd == GPIOC_INPUT) ? value : CMD_RET_SUCCESS;

err:
	if (ret != -EBUSY)
		gpio_free(gpio);
	return CMD_RET_FAILURE;
}

U_BOOT_CMD(gpio, 4, 0, do_gpio,
	   "query and control gpio pins",
	   "<input|set|clear|toggle> <pin>\n"
	   "    - input/set/clear/toggle the specified pin\n"
	   "gpio status [-a] [<bank> | <pin>]  - show [all/claimed] GPIOs");


            "PW",
            "PG",
            "WS",
            "SM",
            "ST",
            "SN",
            "SC",
            "SL",
            "SB",
            "KN",
            "LC",
            "VC",
            "SR",
            "TL",
            "TO",
            "TT",
            "TV",
            "VU",
            "AZ",
            "BN",
            "BI",
            "KH",
            "CM",
            "TD",
            "KM",
            "GQ",
            "SZ",
            "GA",
            "GN",
            "KG",
            "LA",
            "MO",
            "MR",
            "MN",
            "NP",
            "RW",
            "TG",
            "UZ",
            "ZW",
            "BJ",
            "MG",
            "MU",
            "MZ",
            "AO",
            "CI",
            "DJ",
            "ZM",
            "CD",
            "CG",
            "IQ",
            "LY",
            "TJ",
            "VE",
            "ET",
            "XK"
                                 ],
            "external_urls": {
                "spotify": "https://open.spotify.com/album/5CnpZV3q5BcESefcB3WJmz"
                             },
            "href": "https://api.spotify.com/v1/albums/5CnpZV3q5BcESefcB3WJmz",
            "id": "5CnpZV3q5BcESefcB3WJmz",
            "images": [
            {
                "height": 300,
                "url": "https://i.scdn.co/image/ab67616d00001e02cad190f1a73c024e5a40dddd",
                "width": 300
            },
            {
                "height": 64,
                "url": "https://i.scdn.co/image/ab67616d00004851cad190f1a73c024e5a40dddd",
                "width": 64
            },
            {
                "height": 640,
                "url": "https://i.scdn.co/image/ab67616d0000b273cad190f1a73c024e5a40dddd",
                "width": 640
            }
                      ],
            "name": "Donda",
            "release_date": "2021-08-29",
            "release_date_precision": "day",
            "total_tracks": 27,
            "type": "album",
            "uri": "spotify:album:5CnpZV3q5BcESefcB3WJmz"
        },
        {
            "album_type": "album",
            "artists": [
            {
                "external_urls": {
                    "spotify": "https://open.spotify.com/artist/1HY2Jd0NmPuamShAr6KMms"
                                 },
                "href": "https://api.spotify.com/v1/artists/1HY2Jd0NmPuamShAr6KMms",
                "id": "1HY2Jd0NmPuamShAr6KMms",
                "name": "Lady Gaga",
                "type": "artist",
                "uri": "spotify:artist:1HY2Jd0NmPuamShAr6KMms"
            }
                       ],
            "available_markets": [
            "AR",
            "AU",
            "AT",
            "BE",
            "BO",
            "BR",
            "BG",
            "CA",
            "CL",
            "CO",
            "CR",
            "CY",
            "CZ",
            "DK",
            "DO",
            "DE",
            "EC",
            "EE",
            "SV",
            "FI",
            "FR",
            "GR",
            "GT",
            "HN",
            "HK",
            "HU",
            "IS",
            "IE",
            "IT",
            "LV",
            "LT",
            "LU",
            "MY",


300);
  --jp-mirror-editor-link-color: var(--md-blue-700);
  --jp-mirror-editor-error-color: #f00;
  --jp-mirror-editor-hr-color: #999;

  /*
    RTC user specific colors.
    These colors are used for the cursor, username in the editor,
    and the icon of the user.
  */

  --jp-collaborator-color1: #ad4a00;
  --jp-collaborator-color2: #7b6a00;
  --jp-collaborator-color3: #007e00;
  --jp-collaborator-color4: #008772;
  --jp-collaborator-color5: #0079b9;
  --jp-collaborator-color6: #8b45c6;
  --jp-collaborator-color7: #be208b;

  /* Vega extension styles */

  --jp-vega-background: var(--md-grey-400);

  /* Sidebar-related styles */

  --jp-sidebar-min-width: 250px;

  /* Search-related styles */

  --jp-search-toggle-off-opacity: 0.6;
  --jp-search-toggle-hover-opacity: 0.8;
  --jp-search-toggle-on-opacity: 1;
  --jp-search-selected-match-background-color: rgb(255, 225, 0);
  --jp-search-selected-match-color: black;
  --jp-search-unselected-match-background-color: var(
    --jp-inverse-layout-color0
  );
  --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);

  /* scrollbar related styles. Supports every browser except Edge. */

  /* colors based on JetBrain's Darcula theme */

  --jp-scrollbar-background-color: #3f4244;
  --jp-scrollbar-thumb-color: 88, 96, 97; /* need to specify thumb color as an RGB triplet */
  --jp-scrollbar-endpad: 3px; /* the minimum gap between the thumb and the ends of a scrollbar */

  /* hacks for setting the thumb shape. These do nothing in Firefox */

  --jp-scrollbar-thumb-margin: 3.5px; /* the space in between the sides of the thumb and the track */
  --jp-scrollbar-thumb-radius: 9px; /* set to a large-ish value for rounded endcaps on the thumb */

  /* Icon colors that work well with light or dark backgrounds */
  --jp-icon-contrast-color0: var(--md-purple-600);
  --jp-icon-contrast-color1: var(--md-green-600);
  --jp-icon-contrast-color2: var(--md-pink-600);
  --jp-icon-contrast-color3: var(--md-blue-600);

  /* Button colors */
  --jp-accept-color-normal: var(--md-blue-700);
  --jp-accept-color-hover: var(--md-blue-800);
  --jp-accept-color-active: var(--md-blue-900);
  --jp-warn-color-normal: var(--md-red-700);
  --jp-warn-color-hover: var(--md-red-800);
  --jp-warn-color-active: var(--md-red-900);
  --jp-reject-color-normal: var(--md-grey-600);
  --jp-reject-color-hover: var(--md-grey-700);
  --jp-reject-color-active: var(--md-grey-800);

  /* File or activity icons and switch semantic variables */
  --jp-jupyter-icon-color: #f37626;
  --jp-notebook-icon-color: #f37626;
  --jp-json-icon-color: var(--md-orange-500);
  --jp-console-icon-background-color: var(--md-blue-500);
  --jp-console-icon-color: white;
  --jp-terminal-icon-background-color:


r);
            this._rules.push(rule);
            this.appendCharValidation(rule);
        }

        if(this._allpatterns.length > 0) {
            this._allregexp = new RegExp(this._allpatterns);
        }

        this.setLiteralsufix();
    }

    private nextRule(): RuleBase {

        let rule = this.rules[this._nextIndex];
        this._nextIndex++;

        return rule;
    }

    private setLiteralsufix(): void {

        let mindex: number;
        let rule: RuleBase;
        let literals: string[] = [];

        if(this.rules && this.rules.length > 0 && this.rules[this.rules.length-1].literal === false) {
            this._lsufix = '';
            return;
        }

        mindex = this.rules.length - 1;

        for(let i=mindex; i >= 0; i--) {

            rule = this.rules[i];
            if(rule.literal) {
                literals.push(rule.specifier);
            }
            else {
                break;
            }
        }

        this._lsufix = literals.reverse().join('');
    }

    private resetRules(): void {

        this._nextIndex = 0;
        this.rules.forEach(r => r.trySet(null));
    }

}import { Product } from './../../models/product'
import { ApiRequestExecutor, ApiRequest } from './../../base/requests-utils'

export class ByProjectKeyProductsByIDImagesRequestBuilder {
  constructor(
    protected readonly args: {
      pathArgs: {
        projectKey: string
        ID: string
      }
      apiRequestExecutor: ApiRequestExecutor
    }
  ) {}
  /**
   *	Uploads a binary image file to a given product variant. The supported image formats are JPEG, PNG and GIF.
   *
   */
  public post(methodArgs: {
    queryArgs?: {
      filename?: string | string[]
      variant?: number | number[]
      sku?: string | string[]
      staged?: boolean | boolean[]
    }
    body: Buffer
    headers: {
      'Content-Type': 'image/jpeg' | 'image/png' | 'image/gif'
      [key: string]: string
    }
  }): ApiRequest<Product> {
    return new ApiRequest<Product>(
      {
        baseURL: 'https://api.sphere.io',
        method: 'POST',
        uriTemplate: '/{projectKey}/products/{ID}/images',
        pathVariables: this.args.pathArgs,
        headers: {
          ...methodArgs?.headers,
        },
        queryParams: methodArgs?.queryArgs,
        body: methodArgs?.body,
      },
      this.args.apiRequestExecutor
    )
  }
}
abstract class ViewBase<T> {
    protected _element: Element;

    constructor(selector: string) {
        this._element = document.querySelector(selector);
    }

    onLoadCore(): any {
        window.onload = this.onLoad();
    }

    abstract onLoad(): any;

    update(modelo: T) {
        this._element.innerHTML = this.template(modelo);
        this.onLoadCore();
    }

    abstract template(modelo: T) : string;
}// eslint-disable-next-line import/prefer-default-export
export function oneOf<T>(array: Array<T>, item: T) {
  return array.some(it => {
    return it === item
  })
}
import { attr, fk, Model as ORMModel } from 'redux-orm';
import Web3 from 'web3';
import { TransactionReceipt } from 'web3-eth';
import { blockId } from '../block/model';
import { NetworkId } from '../network/model';

/**
 * Transaction object.
 * Extends the web3 interface.
 *
 * @param id - Tx id. Used to index transactions in redux-orm. Computed as `${networkId}-${hash}`.
 * @param networkId - A network id.
 * @param blockId - Tx id. Used to index the block this transaction is in. Computed as `${networkId}-${blockNumber}`.
 * @param receipt - Tx receipt. Applicable when this is a pending sent transaction.
 * @param confirmations - Tx confirmations. Applicable when this is a pending sent transaction.
 * @param hash - 32 Bytes - String: Hash of the transaction.
 * @param non


2 to implement
 * hi_sreg and lo_sreg by putting lhs into r1 and zeroing r2 thereby
 * creating a two word register r2:r1 with hi_sreg = r2 and lo_sreg = r1 ...
 */
	.globl	irem
irem:
	mov	r2,-(sp)	/ faster than csv/cret ...
	mov	r4,-(sp)
	mov	r1,-(sp)	/ save lhs
	bpl	1f		/ if lhs < 0
	neg	r1		/   r1 = abs(lhs)
1:
	tst	r0		/ r0 = rhs
	bge	2f		/ if rhs < 0
	neg	r0		/   rhs = -rhs
2:
	clr	r2		/ clear top of shift register
	mov	$16,r4		/ loop 16 times
3:
	clc			/ shift combined shift register and quotient
	rol	r1		/   left one place
	rol	r2
	cmp	r0,r2		/ How do r2:r1 (hi_sreg) and rhs compare?
	bgt	5f		/ r2:r1 (hi_sreg) >= rhs:
	sub	r0,r2		/   subtract rhs from r2:r1 (hi_sreg)
5:
	sob	r4,3b		/   and loop

	tst	(sp)+		/ test negative flag
	bge	6f		/ if lhs < 0
	neg	r2		/   quo = -quo
6:
	mov	r2,r1
	mov	(sp)+,r4	/ restore registers
	mov	(sp)+,r2
	rts	pc


 require a change to the governance doc.

### 2 meetings ago
2020-11-11
* TODO: Think about bringing in JOSS to provide context around how we might best write papers

### Move to Issue Tracker
2020-11-03
* [x] (MRB) proposed policy on when core pushes to the feedstocks they don't maintain
        * [x] (MRB) put in docs PR
        * [ ] (MRB) make PR on bot to mention the policy
* TODO: Check on Forrest Watters permissions for core
* [x] (FF) Outreachy would cost 6500 USD.
  * Next steps: write abstract and vote on spending of funds.

2020-10-28
2020-10-21
* [ ] (Marius?) Python 2.7 migration
    * ( ) [ ] make a hint
    * ( ) [ ] make an announcement
    * ( ) [ ] make the hint a lint

2020-10-07
* [ ] Make sure to add the NVBug info to the cudatoolkit package that conda-forge makes (if we make one)

2020-09-30

2020-09-23
* [x] (MRB)
    * do libgfortran name change
    * add target platform to hashes
    * do gfortran migration with bot
    * bump pinnings

2020-09-16
* [x] Get a call set up with Jon Mease about the kaleido staged recipes PR
    * Emailed on 2020-09-16
* [x] (FF) Open up a PR on the python feedstock for python 3.9 and see what fails

2020-09-09
* [ ] (ED) Update governance docs with similar voting model as what got put into conda-tools (+3 with no -1 is a pass)
* [ ] (SC) Write jinja template to turn institutional partners yaml into a website https://github.com/conda-forge/conda-forge.github.io/blob/2a2d3caaf7d74eb370ac40c679ba337a73d15c8a/src/inst_partners.yaml
* [ ] (SC) Document what needs to be done to create an OVH account and get access

2020-08-26
**Docker hub**
* [ ] (JK) Check in on Azure build workers to see if they have the docker hub limitation.
* [ ] (JK) work with dockerhub to see if we can get OSS status
    * [ ] Check in again at some point. We haven't heard back as of 2020-09-23
* [x] (MRB) start pushing images to quay (https://github.com/conda-forge/docker-images/pull/152)

**OVH**
* [ ] (???) build webpage to credit them (and others)
* [ ] If we're adding a logo, will want to make sure that we have permission to use it.
* [ ] Shout-out on twitter at some point. "Thanks forOVHCloud for providing a VM", etc. (maybe after we ship qt on windows with it?)

* [ ] Figure out how to communicate breaking changes to users. Likely should open up an issue immediately for futher discussion. Ping @kkraus, plus capture notes from further up in these meeting notes

* [ ] John K. will update the cuda toolkit feedstock on the git repo to note the NVBug link to the internal NVIDIA issue tracker
* [ ] Jonathan will update docs to note that some non-exhaustive list of packages (like cuda-toolkit, MKL, etc.)
* [ ] Jonathan will review this [PR](https://github.com/AnacondaRecipes/cudatoolkit-feedstock/pull/7)

* [ ] (Kale) schedule conda working group
* [ ] cfep-10 next steps: CJ to call a vote for feedback
* [ ] cfep-06 next steps: Ask staged recipes team to champion this CFEP and move it forward
* [ ] jakirkham & CJ-wright to sync on adding CUDA to the migration bot
* [ ] (Eric) Scheduling Anaconda <-> conda-forge sync on anaconda.org requirements gathering
    * Will try and get this scheduled in the next month.
* [ ] (Anthony) Reach out to NumFocus to figure out legal ramification


s-playing .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-pause:before, .video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before {
  content: "\f103";
}

.vjs-icon-volume-mute, .video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-volume-mute:before, .video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before {
  content: "\f104";
}

.vjs-icon-volume-low, .video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-volume-low:before, .video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before {
  content: "\f105";
}

.vjs-icon-volume-mid, .video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-volume-mid:before, .video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before {
  content: "\f106";
}

.vjs-icon-volume-high, .video-js .vjs-mute-control .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-volume-high:before, .video-js .vjs-mute-control .vjs-icon-placeholder:before {
  content: "\f107";
}

.vjs-icon-fullscreen-enter, .video-js .vjs-fullscreen-control .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-fullscreen-enter:before, .video-js .vjs-fullscreen-control .vjs-icon-placeholder:before {
  content: "\f108";
}

.vjs-icon-fullscreen-exit, .video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder {
  font-family: VideoJS;
  font-weight: normal;
  font-style: normal;
}
.vjs-icon-fullscreen-exit:before, .video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before {
  content: "\f109";
}

.vjs-icon-spinner {
  font-family: VideoJS;
  font-


ld. `key` fields are compared against each other when
/// extracting values from multiple rows. Rows are merged if the key fields in each row are
/// identical. You may have multiple `key` fields within a single container, but none of them may
/// have the `#[row(merge)]` attribute. Multiple `key` fields will be treated as a tuple in
/// comparisons.
///
///
/// ### `#[row(merge)]`
///
/// Specifies this field to be a `merge` field. This requires that the field's type implements the
/// [`Merge`] trait. When two rows have been deemed to be equal based on the `key` fields, the
/// corresponding `merge` fields in those rows will be merged. You may specify multiple `merge`
/// fields within one container, but none of them may have the `#[row(key)]` attribute.
///
/// [`Merge`]: extract/trait.Merge.html
pub use postgres_query_macro::FromSqlRow;

/// Constructs a new query at compile-time. See also `query_dyn!`.
///
/// # Usage
///
/// This macro expands to an expression with the type `Query`.
///
/// The first parameter is the SQL query and is always given as a string literal. This string
/// literal may contain parameter bindings on the form `$ident` where `ident` is any valid Rust
/// identifier (`$abc`, `$value_123`, etc.). The order of the parameters does not matter.
///
/// ```
/// # use postgres_query::query;
/// let age = 42;
/// let insert_person = query!(
///     "INSERT INTO people VALUES ($age, $name)",
///     name = "<NAME>", // Binds "$name" to "<NAME>"
///     age,                // Binds "$age" to the value of `age`
/// );
/// ```
///
/// During compilation the query is converted into the format expected by PostgreSQL: parameter
/// bindings are converted to using numbers (`$1`, `$2`, etc.) and the actual parameter values are
/// put into a 1-indexed array. The code snippet above would be expanded into the following:
///
/// ```
/// # use postgres_query::*;
/// let age = 42;
/// let insert_person = Query::new_static(
///     "INSERT INTO people VALUES ($1, $2)",
///     vec![&age, &"<NAME>"],
/// );
/// ```
#[macro_export]
macro_rules! query {
    ($($tt:tt)*) => {
        $crate::__query_static!($($tt)*)
    };
}

/// Constructs a new query dynamically at runtime. See also `query!`.
///
/// # Usage
///
/// This macro expands to an expression with the type `Result<Query>`.
///
/// The first parameter is the SQL query and is always given as a `&str`. This string may contain
/// parameter bindings on the form `$ident` where `ident` is any valid Rust identifier (`$abc`,
/// `$value_123`, etc.). The order of the parameters does not matter.
///
/// ```
/// # use postgres_query::{query_dyn, Result};
/// # fn foo() -> Result<()> {
/// // We can construct the actual query at runtime
/// let mut sql = "INSERT INTO people VALUES".to_owned();
/// sql.push_str("($age, $name)");
///
/// let age = 42;
///
/// let insert_person = query_dyn!(
///     &sql,
///     name = "<NAME>", // Binds "$name" to "<NAME>"
///     age,                // Binds "$age" to the value of `age`
/// )?;
/// # Ok(())
/// # }
/// ```
///
/// The query and all the parameters are passed into `Query::parse`, so the above would be expanded
/// into:
///
/// ```
/// # use postgres_query::Query;
/// // We can construct the actual query at runtime
/// let


--------------------------------------------
function Observer:SetPendingAction(setID, info, force)
	if force or self:IsUniqueAction(setID, info) then
		self.pendingAction = CreatePendingAction(setID, info, true)
		return true;
	end
end

function Observer:SetPendingRemove(setID, info)
	self.pendingAction = CreatePendingAction(setID, info, false)
	return true;
end

function Observer:HasPendingAction()
	return self.pendingAction;
end

function Observer:ClearPendingAction()
	self.pendingAction = nil;
end

function Observer:PostPendingAction(preferredIndex)
	local action = self.pendingAction;
	if action then
		if action.add then
			if self:AddAction(action.setID, preferredIndex, action.info) then
				self:AnnounceAddition(action.info.link, self:GetBindingSuffixForSet(action.setID), true)
			end
		else
			if self:ClearActionByAttribute(action.setID, 'link', action.info.link) then
				self:AnnounceRemoval(action.info.link)
			end
		end
		self.pendingAction = nil;
	end
end

---------------------------------------------------------------
-- Hyperlink handling
---------------------------------------------------------------
EventRegistry:RegisterCallback('SetItemRef', function(_, link, ...)
    local linkType, addonName, binding = strsplit(':', link)
    if not ( linkType == 'addon' and addonName == this ) then return end;
	-- TODO: Handle ring links
	print('Ring link clicked:', binding, ...)
end)


tring azureApiVersion,

            string id,

            Outputs.ModelVersionResponse modelVersionProperties,

            string name,

            Outputs.SystemDataResponse systemData,

            string type)
        {
            AzureApiVersion = azureApiVersion;
            Id = id;
            ModelVersionProperties = modelVersionProperties;
            Name = name;
            SystemData = systemData;
            Type = type;
        }
    }
}


-- lualoader, R"EOF(--
--   Copyright (C) 2022 PCSX-Redux authors
--
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 2 of the License, or
--   (at your option) any later version.
--
--   This program is distributed in the hope that it will be useful,
--   but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
--
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, write to the
--   Free Software Foundation, Inc.,
--   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
local C = ffi.load 'SUPPORT_FILE'

local function validateBuffer(buffer)
    if buffer:maxsize() < buffer.size then
        error('Invalid or corrupted LuaBuffer: claims size of ' .. buffer.size .. ' but actual size is ' ..
            buffer:maxsize())
    end
    return buffer
end

local function read(self, ptr, size)
    if type(ptr) == 'number' and size == nil then
        size = ptr
        local buf = Support.NewLuaBuffer(size)
        size = Support.extra.safeFFI('File::read(C.readFileBuffer)', C.readFileBuffer, self._wrapper, buf)
        buf.size = size
        return validateBuffer(buf)
    elseif type(ptr) == 'cdata' and size == nil and ffi.typeof(ptr) == Support.File._LuaBuffer then
        return Support.extra.safeFFI('File::read(C.readFileBuffer)', C.readFileBuffer, self._wrapper,
            validateBuffer(ptr))
    elseif type(ptr) == 'userdata' and size == nil then
        return Support._internal.readFileUserData(self._wrapper, ptr)
    elseif type(ptr) == 'table' and ptr._type == 'Slice' then
        return Support.extra.safeFFI('File::read(C.readFileToExistingSlice)', C.readFileToExistingSlice, self._wrapper,
            ptr._wrapper, size or ptr:size())
    end
    return Support.extra.safeFFI('File::read(C.readFileRawPtr)', C.readFileRawPtr, self._wrapper, ptr, size)
end

local function readToSlice(self, size)
    return Support.File._createSliceWrapper(Support.extra.safeFFI('File::read(C.readFileToSlice)', C.readFileToSlice,
        self._wrapper, size))
end

local function readAt(self, ptr, size, pos)
    if type(ptr) == 'number' and type(size) == 'number' and pos == nil then
        pos = size
        size = ptr
        local buf = Support.NewLuaBuffer(size)
        size = Support.extra.safeFFI('File::readAt(C.readFileAtBuffer)', C.readFileAtBuffer, self._wrapper, buf, pos)
        buf.size = size
        return validateBuffer(buf)
    elseif type(ptr) == 'cdata' and type(size) == 'number' and pos == nil and ffi.typeof(ptr) == LuaBuffer then
        return Support.extra.safeFFI('File::readAt(C.readFileAtBuffer)', C.readFileAtBuffer, self._wrapper,
            validateBuffer(ptr), size)
    elseif type(ptr) == 'userdata' and type(size) == 'number' and pos == nil then
        return Support._internal.readFileAtUserData(self._wrapper, ptr, size)
    elseif type(ptr) == 'table' and ptr._type == 'Slice' then
        return Support.extra.safeFFI('File::rea


26 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path stroke-width="0" id="E40-MJMAIN-28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path><path stroke-width="0" id="E40-MJMAIN-32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path><path stroke-width="0" id="E40-MJMAIN-29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path><path stroke-width="0" id="E40-MJMAIN-D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path><path stroke-width="0" id="E40-MJMATHI-3C0" d="M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"></path></defs><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><use xlink:href="#E40-MJMAIN-30"></use><use xlink:href="#E40-MJMAIN-2E" x="500" y="0"></use><use xlink:href="#E40-MJMAIN-30" x="778" y="0"></use><use xlink:href="#E40-MJMAIN-33" x="1278" y="0"></use><use xlink:href="#E40-MJMAIN-28" x="1778" y="0"></use><g transform="translate(2167,0)"><use xlink:


td>"
End If
For j = 0 To rs.Fields.Count - 1
O "" & HtmlEncode(IIf(Len(rs(j)) > 50, Left(rs(j), 50), rs(j))) & "	"
Next
O "
"
rs.MoveNext
Next
End If
O "
"
O ""
JavaScript("GetPageList(" & intPage & ", '" & rs.RecordCount & "','" & rs.PageCount & "', 10, '');")
O "

"
rs.Close
 Else
Set rs = conn.Execute(sql, i, &H0001)
ChkErr(Err)
If rs.Fields.Count > 0 Then
O "
"
O "
"
O "&nbsp;	"
O "

"
sExec = "
"
For i = 0 To rs.Fields.Count - 1
O "" & rs.Fields(i).Name & "	"
sExec = sExec & "{$" & i & "}	"
Next
sExec = sExec & "
"
O "
"
Do Until rs.EOF
For i = 0 To rs.Fields.Count - 1
sExec = Replace(sExec, "{$" & i & "}", StrEncode(rs(i)) & "
{$" & i & "}")
Next
rs.MoveNext
Loop
For i = 0 To rs.Fields.Count - 1
sExec = Replace(sExec, "
{$" & i & "}", "")
Next
O sExec & "
"
Else
O ""
End If
Set rs = Nothing
Set Cat = Nothing
DestoryConn()
Exit Sub
End If
O "	"
O "
"
O sFooter
Set rs = Nothing
Set Cat = Nothing
DestoryConn()
End Sub
Sub SqlShowEdit()
Dim intFindI, intFindJ, intFindK, intFindL, intFindM, strJoinTag, multiTables, aParam
Dim i, x, rs, sql, strTable, strExtra, strParam, intI, strColumn, strValue, strPrimaryKey
If isDebugMode = False Then On Error Resume Next
sql = GetPost("sql")
strParam = GetPost("param")
strTable = GetPost("theTable")
intI = InStr(strParam, "!")
intFindI = InStr(LCase(sql), " where")
intFindJ = InStrRev(LCase(sql), "order ")
intFindK = IIf(LCase(Right(sql, 4)) = "desc", "1", "0")
strValue = Mid(strParam, intI + 1)
strColumn = Left(strParam, intI - 1)
strExtra = IIf(theAct = "next", ">", IIf(theAct = "pre", "<", ""))
If intFindJ > 0 Then sql = Left(sql, intFindJ - 1)
If intFindI > 0 Then
strJoinTag = ") And "
sql = Left(sql, intFindI + 5) & "(" & Mid(sql, intFindI + 6)
 Else
strJoinTag = " Where "
End If
If intFindK


CRITICAL_SECTION g_critical;

DWORD WINAPI AcceptThread(LPVOID lp);
DWORD WINAPI ReceiveWorkerThread(LPVOID lp);

DWORD WINAPI AcceptThread(LPVOID lp) {
    CIOCPort * pIocport = (CIOCPort *)lp;

    WSANETWORKEVENTS network_event;
    DWORD            wait_return;
    int              sid;
    CIOCPSocket2 *   pSocket = NULL;
    char             logstr[1024];
    memset(logstr, NULL, 1024);

    struct sockaddr_in addr;
    int                len;

    while (1) {
        wait_return = WaitForSingleObject(pIocport->m_hListenEvent, INFINITE);

        if (wait_return == WAIT_FAILED) {
            TRACE("Wait failed Error %d\n", GetLastError());
            return 1;
        }

        WSAEnumNetworkEvents(pIocport->m_ListenSocket, pIocport->m_hListenEvent, &network_event);

        if (network_event.lNetworkEvents & FD_ACCEPT) {
            if (network_event.iErrorCode[FD_ACCEPT_BIT] == 0) {
                EnterCriticalSection(&g_critical);
                sid = pIocport->GetNewSid();
                LeaveCriticalSection(&g_critical);

                if (sid == -1) {
                    TRACE("Accepting User Socket Fail - New Uid is -1\n");
                    goto loop_pass_accept;
                }

                pSocket = pIocport->GetIOCPSocket(sid);
                if (!pSocket) {
                    TRACE("Socket Array has Broken...\n");
                    sprintf(logstr, "Socket Array has Broken...[sid:%d]\r\n", sid);
                    n3std::log_file_write(logstr);
                    //                    pIocport->PutOldSid( sid );                // Invalid sid must forbidden to use
                    goto loop_pass_accept;
                }

                len = sizeof(addr);
                if (!pSocket->Accept(pIocport->m_ListenSocket, (struct sockaddr *)&addr, &len)) {
                    TRACE("Accept Fail %d\n", sid);

                    EnterCriticalSection(&g_critical);
                    pIocport->RidIOCPSocket(sid, pSocket);
                    pIocport->PutOldSid(sid);
                    LeaveCriticalSection(&g_critical);
                    goto loop_pass_accept;
                }

                pSocket->InitSocket(pIocport);

                if (!pIocport->Associate(pSocket, pIocport->m_hServerIOCPort)) {
                    TRACE("Socket Associate Fail\n");

                    EnterCriticalSection(&g_critical);
                    pSocket->CloseProcess();
                    pIocport->RidIOCPSocket(sid, pSocket);
                    pIocport->PutOldSid(sid);
                    LeaveCriticalSection(&g_critical);
                    goto loop_pass_accept;
                }

                pSocket->Receive();

                TRACE("Success Accepting...%d\n", sid);
            }

        loop_pass_accept:
            continue;
        }
    }

    return 1;
}

DWORD WINAPI ReceiveWorkerThread(LPVOID lp) {
    CIOCPort * pIocport = (CIOCPort *)lp;

    DWORD          WorkIndex;
    BOOL           b;
    LPOVERLAPPED   pOvl;
    DWORD          nbytes;
    DWORD          dwFlag = 0;
    CIOCPSocket2 * pSocket = NULL;


eTimeToInstantInZone
 */
@Suppress("DEPRECATION_ERROR")
public expect fun LocalDateTime.toInstant(timeZone: TimeZone, youShallNotPass: OverloadMarker = OverloadMarker.INSTANCE): Instant

@PublishedApi
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE", "DEPRECATION")
@kotlin.internal.LowPriorityInOverloadResolution
internal fun LocalDateTime.toInstant(timeZone: TimeZone): kotlinx.datetime.Instant =
    toInstant(timeZone).toDeprecatedInstant()

/**
 * Returns an instant that corresponds to this civil datetime value that happens at the specified [UTC offset][offset].
 *
 * @see Instant.toLocalDateTime
 * @sample kotlinx.datetime.test.samples.TimeZoneSamples.localDateTimeToInstantInOffset
 */
@Suppress("DEPRECATION_ERROR")
public expect fun LocalDateTime.toInstant(offset: UtcOffset, youShallNotPass: OverloadMarker = OverloadMarker.INSTANCE): Instant

@PublishedApi
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE", "DEPRECATION")
@kotlin.internal.LowPriorityInOverloadResolution
internal fun LocalDateTime.toInstant(offset: UtcOffset): kotlinx.datetime.Instant =
    toInstant(offset).toDeprecatedInstant()

/**
 * Returns an instant that corresponds to the start of this date in the specified [timeZone].
 *
 * Note that it's not equivalent to `atTime(0, 0).toInstant(timeZone)`
 * because a day does not always start at a fixed time 00:00:00.
 * For example, if, due to daylight saving time, clocks were shifted from 23:30
 * of one day directly to 00:30 of the next day, skipping the midnight, then
 * `atStartOfDayIn` would return the `Instant` corresponding to 00:30, whereas
 * `atTime(0, 0).toInstant(timeZone)` would return the `Instant` corresponding
 * to 01:00.
 *
 * @sample kotlinx.datetime.test.samples.TimeZoneSamples.atStartOfDayIn
 */
@Suppress("DEPRECATION_ERROR")
public expect fun LocalDate.atStartOfDayIn(timeZone: TimeZone, youShallNotPass: OverloadMarker = OverloadMarker.INSTANCE): Instant

@PublishedApi
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE", "DEPRECATION")
@kotlin.internal.LowPriorityInOverloadResolution
internal fun LocalDate.atStartOfDayIn(timeZone: TimeZone): kotlinx.datetime.Instant =
    atStartOfDayIn(timeZone).toDeprecatedInstant()
/*
 * Copyright 2019-2024 JetBrains s.r.o. and contributors.
 * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file.
 */

@file:Suppress("DEPRECATION")
@file:JvmMultifileClass
@file:JvmName("InstantKt")
package kotlinx.datetime

import kotlinx.datetime.format.DateTimeComponents
import kotlinx.datetime.format.DateTimeFormat
import kotlinx.datetime.format.format
import kotlinx.datetime.internal.NANOS_PER_ONE
import kotlinx.datetime.internal.clampToInt
import kotlinx.datetime.internal.multiplyAddAndDivide
import kotlinx.datetime.serializers.InstantSerializer
import kotlinx.serialization.Serializable
import kotlin.jvm.JvmMultifileClass
import kotlin.jvm.JvmName
import kotlin.time.Duration
import kotlin.time.TimeSource

/**
 * Creates a [kotlin.time.Instant] (the standard library version of `Instant`) identical to `this`.
 */
public fun Instant.toStdlibInstant(): kotlin.time.Instant =
    kotlin.time.Instant.fromEpochSeconds(epochSeconds, nanosecondsOfSecond)

/**
 * Creates a [kotlinx.datetime.Instant] identical to the version of `Instant` from the standard library.
 */
public fun kotlin.time.Instant.toDeprecatedInstant(): Instant =
    Instant.fromEpochSeconds(epochSeconds


Count))
SICONOS_IO_REGISTER_WITH_BASES(SphereLDSPlanR,(LagrangianScleronomousR),
  (A)
  (B)
  (C)
  (D)
  (n1)
  (n2)
  (n3)
  (nN)
  (nU)
  (r)
  (ru1)
  (ru2)
  (ru3)
  (rv1)
  (rv2)
  (rv3)
  (u1)
  (u2)
  (u3)
  (v1)
  (v2)
  (v3))
SICONOS_IO_REGISTER_WITH_BASES(SphereLDSSphereLDSR,(LagrangianScleronomousR),
  (r1)
  (r1pr2)
  (r2))
SICONOS_IO_REGISTER_WITH_BASES(SphereNEDSSphereNEDSR,(NewtonEuler3DR),
  (r1)
  (r1pr2)
  (r2))
SICONOS_IO_REGISTER_WITH_BASES(ExternalBody,(LagrangianDS),
)
SICONOS_IO_REGISTER_WITH_BASES(Circle,(CircularDS),
)
SICONOS_IO_REGISTER_WITH_BASES(FixedJointR,(NewtonEulerJointR),
  (_G10G20d1x)
  (_G10G20d1y)
  (_G10G20d1z)
  (_cq2q101)
  (_cq2q102)
  (_cq2q103)
  (_cq2q104))
SICONOS_IO_REGISTER_WITH_BASES(KneeJointR,(NewtonEulerJointR),
  (_G1P0x)
  (_G1P0y)
  (_G1P0z)
  (_G2P0x)
  (_G2P0y)
  (_G2P0z)
  (_P0))
SICONOS_IO_REGISTER_WITH_BASES(NewtonEulerJointR,(NewtonEulerR),
  (_absoluteRef)
  (_allowSelfCollide)
  (_axes)
  (_points))
SICONOS_IO_REGISTER_WITH_BASES(SphereLDS,(LagrangianDS),
  (I)
  (massValue)
  (radius))
SICONOS_IO_REGISTER_WITH_BASES(SphereNEDSPlanR,(NewtonEuler3DR),
  (A)
  (B)
  (C)
  (D)
  (n1)
  (n2)
  (n3)
  (nN)
  (nU)
  (r)
  (ru1)
  (ru2)
  (ru3)
  (rv1)
  (rv2)
  (rv3)
  (u1)
  (u2)
  (u3)
  (v1)
  (v2)
  (v3))
SICONOS_IO_REGISTER_WITH_BASES(CircleCircleR,(CircularR),
)
SICONOS_IO_REGISTER_WITH_BASES(CircularR,(LagrangianScleronomousR),
  (_r1)
  (_r2))
SICONOS_IO_REGISTER_WITH_BASES(Disk,(CircularDS),
)
SICONOS_IO_REGISTER_WITH_BASES(DiskDiskR,(CircularR),
  (r1pr2))
SICONOS_IO_REGISTER_WITH_BASES(DiskPlanR,(LagrangianScleronomousR),
  (A)
  (A2)
  (AB)
  (AC)
  (B)
  (B2)
  (BC)
  (C)
  (finite)
  (halfWidth)
  (r)
  (sqrA2pB2)
  (width)
  (x1)
  (x2)
  (xCenter)
  (y1)
  (y2)
  (yCenter))
SICONOS_IO_REGISTER(SiconosBodies,
  (_plans)
  (_playground)
  (_sim))
SICONOS_IO_REGISTER(SiconosCollisionQueryResult,


ent:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{right:0}.carousel-control-next{left:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;left:0;bottom:0;right:0;z-index:2;display:flex;justify-content:center;padding:0;margin-left:15%;margin-bottom:1rem;margin-right:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-left:3px;margin-right:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;left:15%;bottom:1.25rem;right:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark


>19%
7659

.text.BDB_u8PickChannel
0x0000c6b8
0x0000c708
80
6%
7662

.text.BDB_vRejoinSuccess
0x0000c708
0x0000c778
112
9%
7665

.text.BDB_vSetRejoinFilter
0x0000c778
0x0000c7cc
84
7%
7668

.text.BDB_vRejoinCycle
0x0000c7cc
0x0000c9d4
520
39%
7671

.text.bdb_vStart
0x0000c9d4
0x0000ca9c
200
15%
7674

.text.BDB_vStart
0x0000ca9c
0x0000caa4
8
1%
7676

.text.BDB_vInitStateMachine
0x0000caa4
0x0000cacc
40
3%
7680

.text.BDB_vRejoinTimerCb
0x0000cacc
0x0000cad4
8
1%
7683

.text.BDB_vSetAssociationFilter
0x0000cad4
0x0000cb08
52
4%
7687

Expected total in bdb_start.o file:
1352
Actual:
1352
100%
7659

Flash640 / .text / bdb_state_machine.o
Start
End
Siz


('guild/poll:FOOTER') });
		interaction.reply({ embeds: [embed],	fetchReply: true }).then(async (msg) => {
			// Add reactions to message
			await msg.react('✅');
			await msg.react('❌');
		});
	}
}

module.exports = Poll;
// Dependencies
const	Command = require('../../structures/Command.js');

/**
 * Flip command
 * @extends {Command}
*/
class Flip extends Command {
	/**
 	 * @param {Client} client The instantiating client
 	 * @param {CommandData} data The data for the command
	*/
	constructor(bot) {
		super(bot, {
			name: 'flip',
			dirname: __dirname,
			description: 'Flip a coin.',
			usage: 'flip',
			cooldown: 1000,
			slash: true,
		});
	}

	/**
 	 * Function for receiving message.
 	 * @param {bot} bot The instantiating client
 	 * @param {message} message The message that ran the command
 	 * @readonly
  */
	async run(bot, message) {
		const num = Math.round(Math.random()),
			emoji = message.channel.checkPerm('USE_EXTERNAL_EMOJIS') ? bot.customEmojis[['head', 'tail'][num]] : '',
			result = message.translate(`fun/flip:${num < 0.5 ? 'HEADS' : 'TAILS'}`);

		// send result
		message.channel.send({ content: `${emoji} ${result}` });
	}

	/**
 	 * Function for receiving interaction.
 	 * @param {bot} bot The instantiating client
 	 * @param {interaction} interaction The interaction that ran the command
	 * @param {guild} guild The guild the interaction ran in
	 * @readonly
	*/
	async callback(bot, interaction, guild) {
		const channel = guild.channels.cache.get(interaction.channelId),
			num = Math.round(Math.random()),
			emoji = channel.checkPerm('USE_EXTERNAL_EMOJIS') ? bot.customEmojis[['head', 'tail'][num]] : '',
			result = guild.translate(`fun/flip:${num < 0.5 ? 'HEADS' : 'TAILS'}`);

		// send result
		return interaction.reply({ content: `${emoji} ${result}` });
	}
}

module.exports = Flip;
// Dependencies
const	Command = require('../../structures/Command.js');

/**
 * Meme command
 * @extends {Command}
*/
class Meme extends Command {
	/**
 	 * @param {Client} client The instantiating client
 	 * @param {CommandData} data The data for the command
	*/
	constructor(bot) {
		super(bot, {
			name: 'meme',
			dirname: __dirname,
			description: 'Sends a random meme.',
			usage: 'meme',
			cooldown: 1000,
			slash: true,
		});
	}

	/**
	 * Function for receiving message.
	 * @param {bot} bot The instantiating client
 	 * @param {message} message The message that ran the command
 	 * @param {settings} settings The settings of the channel the command ran in
 	 * @readonly
	*/
	async run(bot, message, settings) {
		// send 'waiting' message to show bot has recieved message
		const msg = await message.channel.send(message.translate('misc:FETCHING', {
			EMOJI: message.channel.checkPerm('USE_EXTERNAL_EMOJIS') ? bot.customEmojis['loading'] : '', ITEM: this.help.name }));

		// Retrieve a random meme
		const embed = await this.fetchMeme(bot, message.channel, settings);

		// Send the meme to channel
		msg.delete();
		message.channel.send({ embeds: [embed] });
	}

	/**
 	 * Function for receiving interaction.
 	 * @param {bot} bot The instantiating client
 	 * @param {interact


tedAt = 0,
    this.endedAt = 0,
  });

  factory EventAdd.fromJson(Map<String, dynamic> json) => _$EventAddFromJson(json);

  Map<String, dynamic> toJson() => _$EventAddToJson(this);
}

@JsonSerializable()
class MstMasterMission with RouteInfo {
  int id;
  int startedAt;
  int endedAt;
  int closedAt;
  // int priority;
  // int imageId;
  // String name;
  Map<int, int> gifts; // manually added
  Map<String, dynamic> script;

  static const String kMissionIconDetailText = "missionIconDetailText";

  String? get missionIconDetailText => script[kMissionIconDetailText];

  String? get lMissionIconDetailText {
    final text = missionIconDetailText;
    if (text == null) return null;
    return Transl.missionNames(text).l;
  }

  String getDispName([String sep = '\n']) {
    final title = lMissionIconDetailText;
    String name = 'ID $id';
    if (title != null) name = '$title$sep$name';
    return name;
  }

  MstMasterMission({
    required this.id,
    required this.startedAt,
    required this.endedAt,
    required this.closedAt,
    this.gifts = const {},
    this.script = const {},
  });

  MissionType get type {
    final a = id ~/ 100000;
    if (a == 1) return MissionType.weekly;
    if (a == 2) return MissionType.limited;
    if (a == 3) return MissionType.daily;
    final b = id ~/ 10000;
    if (b == 8) return MissionType.complete;
    if (id == MasterMission.kExtraMasterMissionId) return MissionType.extra;
    // TODO: [MissionType.servant]
    return MissionType.none;
  }

  bool isOutdated([Region? region]) {
    region ??= db.curUser.region;
    return endedAt < DateTime.now().timestamp - region.eventDelayMonth * 31 * kSecsPerDay;
  }

  @override
  String get route => Routes.masterMissionI(id);

  @override
  void routeTo({Widget? child, bool popDetails = false, Region? region}) {
    return super.routeTo(
      child: child ?? MasterMissionPage(id: id, region: region),
      popDetails: popDetails,
    );
  }

  factory MstMasterMission.fromJson(Map<String, dynamic> json) => _$MstMasterMissionFromJson(json);

  Map<String, dynamic> toJson() => _$MstMasterMissionToJson(this);
}

@JsonSerializable()
class MasterMission extends MstMasterMission {
  static const int kExtraMasterMissionId = 10001;

  List<EventMission> missions;
  CompleteMission? completeMission;
  // List<BasicQuest> quests;

  @override
  @JsonKey(includeFromJson: false)
  Map<int, int> get gifts {
    Map<int, int> items = {};
    for (final mission in missions) {
      Gift.checkAddGifts(items, mission.gifts);
    }
    return items;
  }

  MasterMission({
    required super.id,
    required super.startedAt,
    required super.endedAt,
    required super.closedAt,
    required this.missions,
    this.completeMission,
    // this.quests = const [],
    super.script = const {},
  });

  @override
  MissionType get type {
    if (missions.isNotEmpty) return missions.first.type;
    return super.type;
  }

  factory MasterMission.fromJson(Map<String, dynamic> json) => _$MasterMissionFromJson(json);

  @override
  void routeTo({Widget? child, bool popDetails = false, Region


proper type casting
        success = db.execute_query(
            """
            SELECT id, content, similarity FROM match_embeddings(%s::vector(1536), %s::float, %s::integer, %s::text)
        """,
            (query_embedding, threshold, limit, file_id),
        )

        formatted_results_data = []
        if success and db.cursor.rowcount > 0:
            results = db.cursor.fetchall()

            # Convert to list of dictionaries
            for row in results:
                formatted_results_data.append(
                    {"id": row[0], "content": row[1], "similarity": row[2]}
                )

    except Exception:
        formatted_results_data = []
    finally:
        db.close()

    # Sort by similarity
    formatted_results_data.sort(key=lambda x: x["similarity"], reverse=True)

    formatted_results = []

    # Find segments for the chunk_ids
    for row in formatted_results_data:
        chunk_id = row["id"]

        # Get the chunk information
        chunk_info = await get_chunk_information(chunk_id, file_id, api_keys)
        chunk_segments = chunk_info["response"]["segments"]

        formatted_results.append(
            {
                # "id": chunk_id, # if you want to do chunk_level citations
                "similarity": row["similarity"],
                "segments": chunk_segments,
            }
        )

    return {"results": formatted_results}

tools = [
    {
        "type": "function",
        "function": {
            "name": "query_embeddings",
            "description": "Search for chunks in the database based on the given a RAG-based query and a file_id",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "The query to search for in the database",
                    },
                    "file_id": {
                        "type": "string",
                        "description": "The file_id of the file to search for in the database",
                    },
                },
                "required": ["query", "file_id"],
            },
        },
    },
]

TOOL_MAPPING = {
    "query_embeddings": query_embeddings,
}