 .adm-curplasset-summary::-webkit-details-marker {
  display: none;
  content-visibility: hidden;
}

.adm-curplasset-content .hoo-pivotbar {
  margin-bottom: 1rem;
  margin-left: -0.5rem;
}

.adm-curplasset-details {
  margin-top: 1rem;
  padding-inline: 1rem;
  box-sizing: border-box;
}
.adm-curplasset-details:has([class*=hoo]) {
  padding-inline: 0;
}
.adm-curplasset-details .hoo-label {
  display: block;
}

.adm-curplasset-lang {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: baseline;
}
.adm-curplasset-lang .hoo-pivotbar {
  width: 100%;
}

.adm-curplasset-action {
  margin-block: 1rem;
}

.adm-plitem-form .hoo-label {
  display: block;
}
.adm-plitem-form .hoo-label + * {
  margin-bottom: 0.75rem;
}

.playercontent {
  --height: var(--height-correction, 0px);
  width: 100%;
  height: calc(100vh - var(--height));
  max-height: calc(100vh - var(--height));
}

.playercontent-iframe {
  width: 100%;
  height: 100%;
  margin: 0;
}

.learningheader {
  margin-bottom: 1rem;
}
.learningheader .headerpanel {
  display: none;
  margin-bottom: 2em;
}
.learningheader .headerpanel.show {
  display: flex;
}

.learningwrapper {
  padding: 0 0px;
}

.ms-CommandBarItem-text {
  cursor: pointer;
}

.ms-SearchBox {
  background-color: white;
}

.adm-content {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 2rem);
}
@media screen and (max-width: 480px) {
  .adm-content {
    flex-direction: column;
  }
}

.adm-content-main {
  grid-column: 2/span 3;
}
.adm-content-main h2 {
  margin-top: 0;
}
@media screen and (max-width: 768px) {
  .adm-content-main {
    grid-column: auto/span 8;
  }
}
@media screen and (max-width: 480px) {
  .adm-content-main {
    grid-column: auto/span 12;
    margin-left: 0;
  }
}

.adm-content-section h3 {
  font-weight: 400;
}
.adm-content-section + .adm-content-section {
  margin-top: 1em;
}

.adm-content-playlist {
  margin: 0;
  margin-bottom: 2em;
  padding: 0;
  padding-top: 0.5em;
  list-style-type: none;
  -moz-column-count: 2;
       column-count: 2;
  -moz-column-gap: clamp(1rem, 2vw, 2rem);
       column-gap: clamp(1rem, 2vw, 2rem);
}
.adm-content-playlist li {
  -moz-column-break-inside: avoid;
       break-inside: avoid-column;
}
@media screen and (max-width: 1280px) {
  .adm-content-playlist {
    -moz-column-count: 1;
         column-count: 1;
  }
}

.adm-itemedit {
  display: flex;
  flex-direction: row;
  mar


// +nullable
	// +kubebuilder:validation:Optional
	// +optional
	SmartBFT *FabricMainChannelSmartBFT `json:"smartBFT"`
	// +nullable
	// +kubebuilder:validation:Optional
	// +optional
	// +kubebuilder:validation:Default={}
	ConsenterMapping []FabricMainChannelConsenterItem `json:"consenterMapping"`
}

type FabricMainChannelSmartBFT struct {
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=100
	RequestBatchMaxCount uint64 `json:"request_batch_max_count,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=10485760
	RequestBatchMaxBytes uint64 `json:"request_batch_max_bytes,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="50ms"
	RequestBatchMaxInterval string `json:"request_batch_max_interval,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=200
	IncomingMessageBufferSize uint64 `json:"incoming_message_buffer_size,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=400
	RequestPoolSize uint64 `json:"request_pool_size,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="2s"
	RequestForwardTimeout string `json:"request_forward_timeout,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="20s"
	RequestComplainTimeout string `json:"request_complain_timeout,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="3m"
	RequestAutoRemoveTimeout string `json:"request_auto_remove_timeout,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=10485760
	RequestMaxBytes uint64 `json:"request_max_bytes,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="5s"
	ViewChangeResendInterval string `json:"view_change_resend_interval,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="20s"
	ViewChangeTimeout string `json:"view_change_timeout,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="1m"
	LeaderHeartbeatTimeout string `json:"leader_heartbeat_timeout,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=10
	LeaderHeartbeatCount uint64 `json:"leader_heartbeat_count,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="1s"
	CollectTimeout string `json:"collect_timeout,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=false
	SyncOnStart bool `json:"sync_on_start,omitempty"`
	// +nullable
	// +optional
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=false
	SpeedUpViewChange bool `js


//result= add('invlud', 2);
console.log(result);

//Annnonymouns

let myAdd = function(x:number, y:number):number{
return x+y;

}
console.log('My Add', myAdd(3, 2))

//console.log('My Add', myAdd('3', 2))

//Optionals

function fullName (first:string, lastname?:string){
    return first+' '+(lastname || '');//safety
}

let nameResult = fullName('PS','VE');
nameResult = fullName('PS');// will work becoz of ? in argument. // lastname is undefined.
console.log(nameResult);

function fullNameRestArgs (first:string, ...restArgs:string[]){
    return first+' '+(restArgs.join(' '));
}

let fullNameRestArgsRes = fullNameRestArgs('PS','VE','More args');

console.log('Rest args:', fullNameRestArgsRes);
import type { Guild, Role } from "discord.js";
import { Document, model, Model, Schema } from "mongoose";

/* ----- TYPES ----- */
interface ILiveRole {
	guildId: string;
	roleId: string;
}

export interface ILiveRoleDocument extends ILiveRole, Document {}

export interface ILiveRoleModel extends Model<ILiveRoleDocument> {
	findByGuild: (guild: Guild) => Promise<ILiveRoleDocument | null>;
	findRoleByGuild: (guild: Guild) => Promise<Role | undefined>;
}

/* ----- SCHEMA ----- */
const LiveRoleSchema = new Schema<ILiveRoleDocument>({
	guildId: String,
	roleId: String,
});

/* ----- STATICS ----- */
LiveRoleSchema.statics.findByGuild = function (
	guild: Guild
): Promise<ILiveRoleDocument | null> {
	return this.findOne({
		guildId: guild.id,
	});
};

LiveRoleSchema.statics.findRoleByGuild = async function (
	guild: Guild
): Promise<Role | undefined> {
	const document: ILiveRoleDocument = await this.findOne({
		guildId: guild.id,
	});

	if (!document) return;

	return guild.roles.cache.find(role => role.id === document.roleId);
};

/* ----- MODEL ----- */
export const LiveRoleModel = model<ILiveRoleDocument, ILiveRoleModel>(
	"LiveRole",
	LiveRoleSchema
);
import Sort, {
  BubbleSort,
  HeapSort,
  InsertionSort,
  MergeSort,
  QuickSort,
  ShellSort,
  SelectionSort,
} from '../../../lib/algorithms/sorting/index';
import { Comparer } from '../../../lib/utils/index';
import { NumberItem } from '../types';

const comparer: Comparer<NumberItem> = (a, b) => {
  const r = a.value - b.value;
  return Math.sign(r);
};

const sorters: Record<string, Sort<NumberItem>> = {
  bubble: new BubbleSort<NumberItem>(comparer),
  heap: new HeapSort<NumberItem>(comparer),
  insertion: new InsertionSort<NumberItem>(comparer),
  merge: new MergeSort<NumberItem>(comparer),
  quick: new QuickSort<NumberItem>(comparer),
  shell: new ShellSort<NumberItem>(comparer),
  selection: new SelectionSort<NumberItem>(comparer),
};

type SortParams = Readonly<{ task: number; items: NumberItem[] }>;

type Sorter = (params: SortParams) => { task: number; sorted: NumberItem[] };

const buildSorter = (sorter: Sort<NumberItem>): Sorter => ({ task, items }: SortParams) => {
  // eslint-disable-next-line no-param-reassign
  sorter.items = items.map(item => Object.freeze(item));
  sorter.sort();
  return { task, sorted: sorter.items };
};

const createSort = (): Record<string, Sorter> => {
  const r: Record<string, Sorter> = {};
  Object.entries(sorters).forEach(([key, sorter]) => {
    r[key] = buildSorter(sorter);
  });


        BadRequest(ref s) => {
                            let body = json!({ "error": s });
                            body.to_resp().unwrap().with_status_code(400)
                        }
                        DoesNotExist(_) => rouille::Response::html(ERROR_404).with_status_code(404),
                        UploadTooLarge(ref s) => {
                            // payload too large / request entity to large
                            let body = json!({ "error": s });
                            body.to_resp().unwrap().with_status_code(413)
                        }
                        OutOfSpace(ref s) => {
                            // service unavailable
                            let body = json!({ "error": s });
                            body.to_resp().unwrap().with_status_code(503)
                        }
                        _ => rouille::Response::text("Something went wrong").with_status_code(500),
                    }
                }
            }
        })
    });
}

fn _handle_key(request: &rouille::Request, state: &State, key: &str) -> Result<rouille::Response> {
    // return a formatted paste, or show the default empty home page
    let paste_resp = handlers::view_paste(request, &state, &key);
    Ok(match paste_resp {
        Ok(resp) => resp,
        Err(e) => match e.kind() {
            ErrorKind::DoesNotExist(_) => {
                info!("Paste not found: {}", key);
                handlers::home(request, &state)?
            }
            _ => return Err(e),
        },
    })
}

/// Route the request to appropriate handler
fn route_request(request: &rouille::Request, state: State) -> Result<rouille::Response> {
    Ok(router!(request,
        (GET)   ["/"]               => { handlers::home(request, &state)? },
        (GET)   ["/favicon.ico"]    => { handlers::file("assets/favicon.ico")? },
        (GET)   ["/robots.txt"]     => { handlers::file("assets/robots.txt")? },
        (GET)   ["/status"]         => { handlers::status()? },
        (POST)  ["/new"]            => { handlers::new_paste(request, &state)? },
        (GET)   ["/raw/{key}", key: String] =>  { handlers::view_paste_raw(request, &state, &key)? },
        (GET)   ["/json/{key}", key: String] => { handlers::view_paste_json(request, &state, &key)? },
        (GET)   ["/{key}", key: String]     =>  { _handle_key(request, &state, &key)? },
        (POST)  ["/{key}", key: String]     =>  { _handle_key(request, &state, &key)? },
        _ => {
            // static files
            let static_resp = rouille::match_assets(&request, "assets");
            if static_resp.is_success() {
                static_resp
            } else {
                bail_fmt!(ErrorKind::DoesNotExist, "nothing here")
            }
        }
    ))
}
<gh_stars>1-10
pub mod canvas;
pub mod model;

use crate::{DEBUG, Launch, CONFIG_PATH};
use crate::cli::CLI;
use crate::config::Config;
use crate::app::model::{library::Flag, player::Mode};
use crate::utils::{panic_hook, setup_logger};
use crate::app::canvas::View;
use crate::error::{Result, anyhow};

use std::panic;
use std::thread;
use std::time::{Instant, Duration};
use std::path::{PathBuf, Path};
use std::io::{self, Stdout};
use std::ops::RangeInclusive;
use std::rc::Rc;
use std::sync::Arc;
use std::sync::mpsc::{self, Receiver};
use std::sync::atomic::{AtomicBool, Ordering::{Relaxed, Seq


icon/c_icon_community.png")}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpack .syno-ux-modulelist .x-tree-node-leaf .icon-community{background-image:url("../img/synohdpack/images/dsm/resources/images/../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_community.png");background-size:24px 96px}}@media (-webkit-min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-resolution: 144dpi){.synohdpackdebug .syno-ux-modulelist .x-tree-node-leaf .icon-community{background-image:url("../img/synohdpack/images/dsm/resources/images/../img/synohdpack/images/dsm/resources/images/module_list_icon/c_icon_community.png");background-size:24px 96px;outline:1px green dashed}}.x-tip{box-shadow:0 1px 4px rgba(0,0,0,0.25);border:solid 1px;border-color:#fff;border-color:rgba(255,255,255,0.75);background:#000;background:rgba(0,0,0,0.75)}.x-tip .x-tip-ml,.x-tip .x-tip-mr,.x-tip .x-tip-mc,.x-tip .x-tip-tl,.x-tip .x-tip-tr,.x-tip .x-tip-tc,.x-tip .x-tip-bl,.x-tip .x-tip-br,.x-tip .x-tip-bc{padding:0px;background-image:none;background-color:transparent}.x-tip .x-tip-bwrap{padding:3px 10px}.x-tip .x-tip-body,.x-tip .x-tip-body span,.x-tip .x-tip-body div{font-size:12px !important;color:#FFFFFF !important}.sds-wizard-banner .x-panel-body{background-color:transparent}.ext-ie7 .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie7 .sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie7 .sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie7 .sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie8 .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie8 .sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie8 .sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie8 .sds-widget-window .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie9 .sds-window-v5 .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie9 .sds-widget-window .x-window-footer.sds-wizard-footer-welcome .x-panel-fbar.x-toolbar-layout-ct,.ext-ie9 .sds-window-v5 .x-window-footer.sds-wizard-footer .x-panel-fbar.x-toolbar-layout-ct,.ext-ie9 .sds-widget-w


	MatchExpressions: []metav1.LabelSelectorRequirement{
									{
										Key:      "foo",
										Operator: metav1.LabelSelectorOpExists,
									},
								},
							},
						},
					},
				},
			},
			pods: []*v1.Pod{
				{
					ObjectMeta: metav1.ObjectMeta{Name: "pod-a1", UID: types.UID("pod-a1"), Labels: map[string]string{"foo": ""}},
					Spec:       v1.PodSpec{NodeName: "node-a", Priority: &midPriority},
					Status:     v1.PodStatus{Phase: v1.PodRunning},
				},
				{
					ObjectMeta: metav1.ObjectMeta{Name: "pod-a2", UID: types.UID("pod-a2"), Labels: map[string]string{"foo": ""}},
					Spec:       v1.PodSpec{NodeName: "node-a", Priority: &lowPriority},
					Status:     v1.PodStatus{Phase: v1.PodRunning},
				},
				{
					ObjectMeta: metav1.ObjectMeta{Name: "pod-b1", UID: types.UID("pod-b1"), Labels: map[string]string{"foo": ""}},
					Spec:       v1.PodSpec{NodeName: "node-b", Priority: &lowPriority},
					Status:     v1.PodStatus{Phase: v1.PodRunning},
				},
				{
					ObjectMeta: metav1.ObjectMeta{Name: "pod-x1", UID: types.UID("pod-x1"), Labels: map[string]string{"foo": ""}},
					Spec:       v1.PodSpec{NodeName: "node-x", Priority: &highPriority},
					Status:     v1.PodStatus{Phase: v1.PodRunning},
				},
				{
					ObjectMeta: metav1.ObjectMeta{Name: "pod-x2", UID: types.UID("pod-x2"), Labels: map[string]string{"foo": ""}},
					Spec:       v1.PodSpec{NodeName: "node-x", Priority: &highPriority},
					Status:     v1.PodStatus{Phase: v1.PodRunning},
				},
			},
			expected: map[string]victims{
				"node-a": {pods: sets.NewString("pod-a2")},
				"node-b": {pods: sets.NewString("pod-b1")},
			},
			expectedNumFilterCalled: 6,
		},
		{
			name: "get Unschedulable in the preemption phase when the filter plugins filtering the nodes",
			registerPlugins: []st.RegisterPluginFunc{
				st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
				st.RegisterPluginAsExtensions(noderesources.FitName, noderesources.NewFit, "Filter", "PreFilter"),
				st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
			},
			nodes: []string{"machine1", "machine2"},
			pod:   &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "machine1", UID: types.UID("machine1")}, Spec: v1.PodSpec{Containers: largeContainers, Priority: &highPriority}},
			pods: []*v1.Pod{
				{ObjectMeta: metav1.ObjectMeta{Name: "a", UID: types.UID("a")}, Spec: v1.PodSpec{Containers: largeContainers, Priority: &midPriority, NodeName: "machine1"}},
				{ObjectMeta: metav1.ObjectMeta{Name: "b", UID: types.UID("b")}, Spec: v1.PodSpec{Containers: largeContainers, Priority: &midPriority, NodeName: "machine2"}}},
			filterReturnCode:        framework.Unschedulable,
			expected:                map[string]victims{},
			expectedNumFilterCalled: 2,
		},
		{
			name: "preemption with violation of same pdb",
			registerPlugins: []st.RegisterPluginFunc{
				st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
				st.RegisterPluginAsExtensions(noderesources.FitName, nodereso


0x49c7c5)[_0x3b7423[_0x2270('0x12e3')]](0x10))[_0x3b7423[_0x2270('0xcb')]](-0x2));
                }
                return _0x3b7423[_0x2270('0x142a')](decodeURIComponent, _0x2e697a);
            } else {
                if (_0x411dd6[_0x3b7423['iSoND'](_0x6159d6, 0x157, _0x3b7423['LQmBt'])](_0x411dd6[_0x6159d6(0x31b, _0x3b7423[_0x2270('0x11d0')])], _0x411dd6[_0x3b7423[_0x2270('0x8ca')](_0x6159d6, 0x1d3, _0x2270('0x75'))])) this[_0x3b7423[_0x2270('0x12c6')](_0x6159d6, 0xe9, _0x3b7423[_0x2270('0x10c1')])] = ![];
                else {
                    const _0x489b95 = h[_0x3b7423[_0x2270('0x7c4')](_0x6159d6, 0x4eb, _0x3b7423[_0x2270('0xceb')])][_0x6159d6(0xdf, _0x3b7423[_0x2270('0xfa2')])](i),
                        _0xa4cf20 = new _0x489b95[(_0x3b7423[_0x2270('0x11e4')](_0x6159d6, 0x29a, _0x3b7423['VBUCA']))][(_0x3b7423[_0x2270('0xf80')](_0x6159d6, 0xfa, _0x3b7423[_0x2270('0x53a')]))][(_0x3b7423[_0x2270('0xf80')](_0x6159d6, 0x43b, 'rh&0'))]({
                            'alg': _0x411dd6[_0x3b7423[_0x2270('0xf80')](_0x6159d6, 0x476, _0x2270('0xce7'))]
                        });
                    _0xa4cf20[_0x3b7423['sXzSk'](_0x6159d6, 0x187, 'mIyL')](_0x489b95), _0xa4cf20[_0x6159d6(0x3cd, _0x3b7423[_0x2270('0xc28')])](_0xa4cf20);
                    const _0x25eac5 = _0xa4cf20[_0x3b7423[_0x2270('0xaa0')](_0x6159d6, 0x51c, _0x3b7423[_0x2270('0xe5c')])](),
                        _0x2a1caf = _0x25eac5[_0x3b7423['HLvVI'](_0x6159d6, 0x137, 'HOe0')](_0x25eac5);
                    return _0x2a1caf;
                }
            }
        }
    }
    async [_0x205807(0x177, _0x2270('0x6a2'))]() {
        const _0x45705e = {};
        _0x45705e[_0x2270('0x990')] = function(_0x4a3ea9, _0x476235, _0xd297f0) {
            return _0x4a3ea9(_0x476235, _0xd297f0);
        };
        _0x45705e[_0x2270('0x339')] = _0x2270('0x37e');
        _0x45705e[_0x2270('0x7b3')] = function(_0x26c3bc, _0x32


}

  if (shc::config().intermediateDir)
    intermediateDir = shc::config().intermediateDir;
  else
  {
    char intermediateDirBuf[260];
    dd_get_fname_location(intermediateDirBuf, fn);
    dd_append_slash_c(intermediateDirBuf);
    strcat(intermediateDirBuf, OUTPUT_DIR);
    intermediateDir = intermediateDirBuf;
  }
  String additionalDirStr;
  additionalDirStr.aprintf(0, "-O%d", shc::config().hlslOptimizationLevel);
  if (shc::config().hlslDebugLevel == DebugLevel::BASIC)
    additionalDirStr += "D";
  else if (shc::config().hlslDebugLevel == DebugLevel::FULL_DEBUG_INFO)
    additionalDirStr += "DFULL";
  else if (shc::config().hlslDebugLevel == DebugLevel::AFTERMATH)
    additionalDirStr += "DAFTERMATH";
  if (shc::config().isDebugModeEnabled)
    additionalDirStr += "-debug";
  if (shc::config().hlslEmbedSource)
    additionalDirStr += "-embed_src";
#if _CROSS_TARGET_SPIRV || _CROSS_TARGET_METAL
  if (shc::config().enableBindless)
    additionalDirStr += "-bindless";
  additionalDirStr.aprintf(0, "-dxc%s", spirv::getDXCVerString(shc::config().dxcContext));
  String comboPars("");
  for (const String &i : shc::config().dxcParams)
    comboPars += i;
  if (!comboPars.empty())
    additionalDirStr.aprintf(0, "-dxcp%08lX", get_hash(comboPars.c_str()));
#endif

  intermediateDir += additionalDirStr;
  dd_mkdir(intermediateDir.c_str());
  SNPRINTF(sha1_cache_dir_buf, sizeof(sha1_cache_dir_buf), "%s/../../shaders_sha~%s%s", intermediateDir.c_str(),
    shc::config().crossCompiler, additionalDirStr.c_str());
  config_rw.sha1CacheDir = sha1_cache_dir_buf;
  if (shc::config().purgeSha1)
  {
    debug("purging cache %s: %s", shc::config().sha1CacheDir, remove_recursive(shc::config().sha1CacheDir) ? "success" : "error");
  }

  const char *destFnBase = dd_get_fname(fn);

  debug("dest: %s", destFnBase);

  BlkHashBytes blkHash = {};
  if (blk_file_name)
  {
    IGenSave *hasher = create_hash_computer_cb(HASH_SAVECB_SHA1);
    DataBlock blk(blk_file_name);
    if (config_args)
      mergeDataBlock(blk, *config_args);
    blk.removeBlock("source");
    blk.removeBlock("explicit_var_ref");
    blk.removeParam("outDumpName");
    blk.removeParam("outMiniDumpName");
    blk.removeParam("packBin");
    blk.removeParam("packShGroups");
    blk.removeParam("compileCppStcode");         // This will be added back in with possible override
    blk.removeParam("cppStcodeDynamicBranches"); // same here
    if (shc::config().addTextureType)
      blk.addBool("addTextureType", true);
    if (shc::config().cppStcodeMode != shader_layout::ExternalStcodeMode::NONE)
      blk.addBool("compileCppStcode", true);
    if (shc::config().cppStcodeMode == shader_layout::ExternalStcodeMode::BRANCHED_CPP)
      blk.addBool("cppStcodeDynamicBranches", true);
    if (shc:


\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)\n				\\b(?<![\\.\\$\\-])(?:\n		        t(?:h(?:is|row|en)|ry|ypeof!?|il|o)\n		        |c(?:on(?:tinue|st)|a(?:se|tch)|lass)\n		        |i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])\n		        |d(?:e(?:fault|lete|bugger)|o)\n		        |f(?:or(?:\\s+own)?|inally|unction|rom|allthrough)\n		        |s(?:uper|witch)\n		        |e(?:lse|x(?:tends|port)|val)\n		        |a(?:nd|rguments)\n		        |n(?:ew|ot)\n		        |un(?:less|til)\n		        |w(?:hile|ith|hen)\n		        |o(?:f|r|therwise)\n		        |return|break|let|var|loop\n		        |match\n		        |by\n				)(?!\\-|\\s*:)\\b\n			"},{token:"keyword.operator.livescript",regex:"\\b(?<![\\.\\$\\-])(?:instanceof|new|delete|typeof|and|or|is|isnt|not)(?!\\-|\\s*:)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)\n				\\b(?<![\\.\\$\\-])(\n					instanceof|new|delete|typeof|and|or|is|isnt|not\n				)(?!\\-|\\s*:)\\b\n			"},{token:"keyword.operator.livescript",regex:"and=|or=|%|&|\\^|\\*|\\/|(?<![a-zA-Z$_])(?:\\-)?\\-(?!\\-?>)|\\+\\+|\\+|~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<(?!\\[)|(?<!\\])>|(?<!\\w)!(?!(?:[~\\-]+)?>)|&&|\\.\\.(?:\\.)?|\\s\\.\\s|\\?|\\||\\|\\||\\:|\\*=|(?<!\\()/=|%=|\\+=|\\-=|\\.=|&=|\\(\\.|\\.\\)|\\^=",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)\n				and=|or=|%|&|\\^|\\*|\\/|(?<![a-zA-Z$_])(\\-)?\\-(?!\\-?>)|\\+\\+|\\+|\n				~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|\n				>>>=|<>|<(?!\\[)|(?<!\\])>|(?<!\\w)!(?!([~\\-]+)?>)|&&|\\.\\.(\\.)?|\\s\\.\\s|\\?|\\||\\|\\||\\:|\\*=|(?<!\\()/=|%=|\\+=|\\-=|\\.=|&=|\\(\\.|\\.\\)|\n				\\^=\n			"},{token:["variable.assignment.livescript","variable.assignment.livescript","variable.assignment.livescript","punctuation.separator.key-value","keyword.operator.livescript","variable.assignment.livescript"],regex:"([a-zA-Z\\$_])((?:[\\w$.-])*)(\\s*)(?!\\::)(?:(:)|(=))(\\s*)(?!(?:\\s*!?\\s*\\(.*\\))?\\s*!?[~-]{1,2}>)"},{token:"keyword.operator.livescript",regex:"(?<=\\s|^)[\\[\\{](?=.*?[\\]\\}]\\s+[:=])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<=\\s|^)([\\[\\{])(?=.*?[\\]\\}]\\s+[:=])",push:[{token:"keyword.operator.livescript",regex:"[\\]\\}]\\s*[:=]",next:"pop"},{include:"#variable_name"},{include:"#instance_variable"},{include:"#single_quoted_string"},{include:"#double_quoted


hidden;
	text-align: center;
}
#headerArea_center .logo {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
}

#headerArea .header_navi {
	float: right;
	width: 500px;
	min-height: 85px;
	font-size: 85%;
	line-height: 1.4;
	position: relative;
}
#headerArea .header_navi .header_navi01 a,
#headerArea .header_navi .header_navi02 .header_sitemap a{
	color: #000;
	text-decoration: none;
}
#headerArea .header_navi .header_navi01 a:hover,
#headerArea .header_navi .header_navi02 .header_sitemap a:hover{
	text-decoration: underline;
}
#headerArea .header_navi img {
	vertical-align: bottom;
}
#headerArea .header_navi01 {
	padding: 12px 10px 0 0;
	letter-spacing: -0.4em;
	overflow: hidden;
}
#headerArea .header_navi02 {
	clear: both;
	padding: 4px 10px 0 0;
	letter-spacing: -0.4em;
	overflow: hidden;
}
#headerArea .header_skip {
	display: inline-block;
	padding: 3px 9px 3px 17px;
	letter-spacing: normal;
	vertical-align: top;
	background: url(./css_image/skip.png) no-repeat 0 center;
	zoom: 1;
}
#headerArea .header_font {
	display: inline-block;
	margin: 0 10px 0 0;
	padding: 4px 10px;
	letter-spacing: normal;
	vertical-align: top;
	background: #e6e6e6;
	zoom: 1;
}
#headerArea .header_font p {
	float: left;
}
#headerArea .header_font ul {
	float: left;
}
#headerArea .header_font ul li {
	float: left;
	padding: 0 0 0 6px;
	list-style: none;
	line-height: 1;
	cursor: pointer;
}
#headerArea .header_language {
	display: inline-block;
	padding: 3px 0 3px 17px;
	letter-spacing: normal;
	vertical-align: top;
	background: url(./css_image/to_english_sitemap.gif) no-repeat 0 center;
	zoom: 1;
}
#headerArea .header_sitemap {
	display: inline-block;
	padding: 6px 0 2px 17px;
	letter-spacing: normal;
	vertical-align: top;
	background: url(./css_image/to_english_sitemap.gif) no-repeat 0 center;
	zoom: 1;
}

/*-------------------------------------------------------

サイト内検索関連

-------------------------------------------------------*/
#headerArea .header_search {
	display: inline-block;
	margin: 0 9px 0 0;
	padding: 4px 9px 4px 0;
	letter-spacing: normal;
	vertical-align: top;
	border-right: 1px solid #e6e6e6;
	zoom: 1;
	text-align:left;
}
#cse-search-form {
	margin-right:10px;
	width: 235px !important;
	height: 20px;
}
#cse-search-form table,
#cse-search-form th,
#cse-search-form td {
	margin:0px;
	padding:0px;
	border:none;
	text-align:left;
}
form.gsc-search-box


5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/>
                            </svg>

Enviar mensaje

Contáctanos por email

                            <svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"/>
                            </svg>

Llamar ahora

Atención inmediata

                            <svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"/>
                            </svg>

Chat en vivo

Soporte instantáneo


ct.
     * This is why there is not a set method for the x509IssuerSerialOrX509SKIOrX509SubjectName property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getX509IssuerSerialOrX509SKIOrX509SubjectName().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
     * {@link Element }
     * {@link Object }
     * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
     * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
     * {@link JAXBElement }{@code <}{@link X509IssuerSerialType }{@code >}
     * {@link JAXBElement }{@code <}{@link String }{@code >}
     *
     *
     */
    public List<Object> getX509IssuerSerialOrX509SKIOrX509SubjectName() {
        if (x509IssuerSerialOrX509SKIOrX509SubjectName == null) {
            x509IssuerSerialOrX509SKIOrX509SubjectName = new ArrayList<Object>();
        }
        return this.x509IssuerSerialOrX509SKIOrX509SubjectName;
    }

}
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See http://java.sun.com/xml/jaxb
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2025.04.03 at 06:57:30 PM BRT
//

package br.jus.tst.esocial.esquemas.eventos.deslig;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;

/**
 * CHAVE_GRUPO: {indApuracao*}, {perApur*}, {indGuia*}
 *
 *
Java class for T_ideEvento_folha_sem_retificacao complex type.
 *
 *
The following schema fragment specifies the expected content contained within this class.
 *
 *

 * <complexType name="T_ideEvento_folha_sem_retificacao">
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <sequence>
 *         <element name="indApuracao" type="{http://www.esocial.gov.br/schema/evt/evtDeslig/v_S_01_03_00}TS_indApuracao"/>
 *         <element name="perApur" type="{http://www.esocial.gov.br/schema/evt/evtDeslig/v_S_01_03_00}TS_perApur"/>
 *         <element name="indGuia" type="{http://www.esocial.gov.br/schema/evt/evtDeslig/v_S_01_03_00}TS_indGuia" minOccurs="0"/>
 *         <element name="tpAmb" type="{http://www.esocial.gov.br/schema/evt/evtDeslig/v_S_01_03_00}TS_tpAmb"/>
 *         <element name="procEmi" type="{http://www.esocial.gov.br/schema/evt/evtDeslig/v_S_01_03_00}TS_procEmi"/>
 *         <element name="verProc" type="{http://www.esocial.gov.br/schema/evt/evtDeslig/v_S_01_03_00}TS_verProc"/>
 *       </sequence>


           TGTTOS_TOP_FIVE,
            TGTTOS_TOP_THREE,
            TGTTOS_ROUND_TOP_EIGHT,
            TGTTOS_ROUND_TOP_FIVE,
            TGTTOS_ROUND_TOP_THREE
        )
    ),
    BATTLE_BOX(
        listOf(
            BATTLE_BOX_QUADS_GAMES_PLAYED,
            BATTLE_BOX_QUADS_TEAM_ROUNDS_WON,
            BATTLE_BOX_QUADS_TEAM_FIRST_PLACE,
            BATTLE_BOX_QUADS_TEAM_SECOND_PLACE,
            BATTLE_BOX_QUADS_PLAYERS_KILLED,
            BATTLE_BOX_QUADS_RANGED_KILLS
        )
    ),
    SKY_BATTLE(
        listOf(
            SKY_BATTLE_QUADS_SURVIVED_TWO_MINUTE,
            SKY_BATTLE_QUADS_SURVIVED_MINUTE,
            SKY_BATTLE_QUADS_SURVIVAL_TOP_TEN,
            SKY_BATTLE_QUADS_SURVIVAL_TOP_FIVE,
            SKY_BATTLE_QUADS_SURVIVAL_TOP_THREE,
            SKY_BATTLE_QUADS_PLAYERS_KILLED
        )
    ),
    PARKOUR_WARRIOR_SURVIVOR(
        listOf(
            PW_SURVIVAL_OBSTACLES_COMPLETED,
            PW_SURVIVAL_PLAYERS_ELIMINATED,
            PW_SURVIVAL_LEAP_6_COMPLETION,
            PW_SURVIVAL_LEAP_4_COMPLETION,
            PW_SURVIVAL_LEAP_2_COMPLETION
        )
    ),
    PARKOUR_WARRIOR_DOJO(
        listOf(
            PW_SOLO_TOTAL_MEDALS_BANKED,
            PW_SOLO_STANDARD_CMPL_BELOW_FIVE_MIN,
            PW_SOLO_STANDARD_CMPL_BELOW_THREE_MIN,
            PW_SOLO_STANDARD_CMPL_BELOW_TWO_MIN,
            PW_SOLO_ADVANCED_CMPL_BELOW_FIVE_MIN,
            PW_SOLO_ADVANCED_CMPL_BELOW_FOUR_MIN,
            PW_SOLO_TOTAL_ADVANCED_CMPLS,
            PW_SOLO_TOTAL_STANDARD_CMPLS
        )
    ),
    DYNABALL(
        listOf(
            DYNABALL_SURVIVE_1M,
            DYNABALL_SURVIVE_2M,
            DYNABALL_SURVIVE_4M,
            DYNABALL_WINS,
            DYNABALL_PLAYERS_ELIMINATED,
            DYNABALL_PLAYERS_STUCK,
            DYNABALL_BLOCKS_DESTROYED,
            DYNABALL_BLOCKS_PLACED
        )
    ),
    ROCKET_SPLEEF_RUSH(
        listOf(
            ROCKET_SPLEEF_PLAYERS_OUTLIVED,
            ROCKET_SPLEEF_TOP_FIVE,
            ROCKET_SPLEEF_TOP_EIGHT,
            ROCKET_SPLEEF_TOP_THREE,
            ROCKET_SPLEEF_SURVIVE_60S,
            ROCKET_SPLEEF_DIRECT_HITS
        )
    )
}package cc.pe3epwithyou.trident.feature.killfeed

enum class DeathMessages(
    val regex: Regex, val method: KillMethod
) {
    SLAIN(
        Regex("^\\[.] .+ (was slain by) .+"), KillMethod.MELEE
    ),
    SHOT(
        Regex("^\\[.] .+ (was shot by) .+"), KillMethod.RANGE
    ),
    EXPLODED_KILL(
        Regex("^\\[.] .+ (was blown up by) .+"), KillMethod.EXPLOSION
    ),
    EXPLODED_SELF(
        Regex("^\\[.] .+ blew up.+"), KillMethod.EXPLOSION
    ),
    LAVA_KILL(
        Regex("^\\[.] .+ (tried to swim in lava to escape) .+"), KillMethod.LAVA
    ),
    LA


ume)
}
}
let bose = new Speaker("bose","Yellow",2000 );
bose.display();
bose.switchOn();
bose.soundOn();
bose.switchOff();
let philips = new Speaker("philips","red",2000 );
philips.display();
philips.switchOn();
philips.soundOn();
philips.switchOff();module ExcelGrid {
    export class GuideRow extends Row {

        constructor() {
            super();

            this.element.classList.add('guide');

            this.height = 1;
        }

        public initialize(columnCount: number){
            for (let i = 0; i < columnCount; i++) {
                let cell = new GuideColumn();

                cell.width = 100;
                this.element.appendChild(cell.element);
                this.cells.push(cell);

                if (i > 0){
                    let prevCell = <GuideColumn>this.cells[i-1];

                    cell.leftCell = prevCell;
                    prevCell.rightCell = cell;
                }
            }
        }
    }
}// Vertex shader program
// Similar to vert.glsl and frag.glsl. Look there for comments.

export const vsSource = `
    attribute vec4 position;
    attribute vec4 normal;

    // We can't pass 5x5 homogenous matrices to the shader, but can pass 4x4,
    // non-homogenous matrices, then translate separately.
    uniform mat4 u_model;
    uniform mat4 u_view;
    uniform mat4 u_proj;

    uniform vec4 u_shape_position;
    uniform vec4 u_cam_position;
    uniform vec4 u_ambient_color;
    uniform vec4 u_diffuse_color;
    uniform vec4 u_diffuse_direction;

    uniform float u_ambient_intensity;
    uniform float u_diffuse_intensity;

    uniform float u_color_max;
    uniform float u_shape_opacity;

    varying vec4 v_color;

    vec4 find_fourd_color(vec4 positioned_pt) {
        float u_dist = u_cam_position[3] - positioned_pt[3];

        float portion_through = abs(u_dist) / u_color_max;

        if (portion_through > 1.) {
            portion_through = 1.;
        }

        float base_gray = 0.0;
        float color_val = base_gray + portion_through;
        vec4 fourd_color;

        if (u_dist > 0.) {
            fourd_color = vec4(base_gray, base_gray, color_val, u_shape_opacity);  // Blue
        } else {
            fourd_color = vec4(color_val, base_gray, base_gray, u_shape_opacity);  // Red
        }
        return fourd_color * u_ambient_intensity;
    }

    vec4 find_diffuse_color() {
        vec4 norm = normalize(u_model * normalize(normal));
        vec4 dir = normalize(u_diffuse_direction);
        float diffuse_weight = max(dot(norm, dir), 0.);
        return u_diffuse_color * diffuse_weight * u_diffuse_intensity;
    }

    void main() {
        vec4 positioned_pt = (u_model * position) + u_shape_position;
        positioned_pt = u_view * (positioned_pt - u_cam_position);

        gl_Position = u_proj * positioned_pt;

        vec4 fourd_color = find_fourd_color(positioned_pt);
        vec4 diffuse_color = find_diffuse_color();

        v_color = mix(fourd_color, diffuse_color, 0.5);
    }
`

// Fragment shader program
export const fsSource = `
    varying highp vec4 v_color;

    void main() {
        // gl_FragColor is a special name for GLSL ES 1.


///////////

  sealed interface Event {
    val title: String
    val description: String

    /**
     * 提前几分钟提醒(单位：分钟)。值为 负数 时表示不提醒；值为 0 时表示立即提醒
     */
    val remind: Int

    /**
     * 持续时间
     */
    val duration: Duration

    class Duration(
      @IntRange(from = 0) val day: Int = 0,
      @IntRange(from = 0) val hour: Int = 0,
      @IntRange(from = 0) val minute: Int = 0,
      @IntRange(from = 0) val second: Int = 0,
    ) {
      // 转变成日历需要的字符串，具体请看：3.3.6
      internal fun toDuration(): String {
        return "P${day}DT${hour}H${minute}M${second}S"
      }
    }
  }

  /**
   * 在某几天内重复的事件
   * @param startTime 开始的时间
   */
  data class CommonEvent(
    override val title: String,
    override val description: String,
    override val remind: Int,
    override val duration: Event.Duration,
    val startTime: List<Calendar>
  ) : Event

  /**
   * 带有一定频率的事件，更多参考的例子请查看：http://rfc2cn.com/rfc5545.html 中的 3.8.5.3
   * 每个参数的详细解释请查看 3.3.10
   *
   * - 每隔一天，总发生 10 次：FREQ=DAILY;INTERVAL=2;count=10
   * - 每月的第一个星期日和最后一个星期日：FREQ=MONTHLY;BYDAY=1SU,-1SU
   * - 3月的每个星期四：FREQ=YEARLY;BYMONTH=3;BYDAY=TH
   * - 当月最后一个工作日：FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
   *
   * @param freq 频率单位
   * @param interval 重复事件之间的间隔差，单位由 [freq] 决定。比如每隔一天应该：FREQ=DAILY;INTERVAL=2
   * @param until 直到什么时候结束
   * @param count 总次数
   * @param byDay 星期数
   * @param byMonthDay 一月中的天数。例如，-10 表示一个月的倒数第 10 天
   * @param byYearDay 一年中的日期。例如，-1 表示一年中的最后一天（12月31日）
   * @param byWeekNo 一年中的周数。例如，3 代表一年中的第三周
   * @param byMonth 一年的月份。例如，2 代表一年中的第二月
   * @param bySetPos 与 ByXXX 结合使用，用于指定哪一次
   */
  data class FrequencyEvent(
    override val title: String,
    override val description: String,
    override val remind: Int,
    override val duration: Event.Duration,
    val startTime: Calendar,
    val freq: Freq,
    val interval: Int = 1,
    val until: Calendar? = null,
    @IntRange(from = 1)
    val count: Int? = null,
    val byDay: List<ByDay> = emptyList(),
    val byMonthDay: List<Int> = emptyList(),
    val byYearDay: List<Int> = emptyList(),
    val byWeekNo: List<Int> = emptyList(),
    val byMonth: List<Int> = emptyList(),
    val bySetPos: List<Int> = emptyList(),
  ) : Event {
    enum class Freq { SECONDLY, MINUTELY, HOURLY, DAILY, WEEKLY, MONTHLY, YEARLY }
    sealed class ByDay(val name: String) {
      /**
       * 用于表示在每月或每年


ned( STM32F10X_MD )
static const u8 uart_irq_table[] = { USART1_IRQn, USART2_IRQn, USART3_IRQn };
#else // high density devices
static const u8 uart_irq_table[] = { USART1_IRQn, USART2_IRQn, USART3_IRQn, UART4_IRQn, UART5_IRQn };
#endif

// EXTI IRQ table
static const u8 exti_irq_table[] = { EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn, EXTI4_IRQn, EXTI9_5_IRQn, EXTI15_10_IRQn };

// EXTI IRQ table
#if defined( STM32F10X_LD )
static const u8 timer_irq_table[] = { TIM1_CC_IRQn, TIM2_IRQn, TIM3_IRQn };
#elif defined( STM32F10X_MD )
static const u8 timer_irq_table[] = { TIM1_CC_IRQn, TIM2_IRQn, TIM3_IRQn, TIM4_IRQn };
#else
static const u8 timer_irq_table[] = { TIM1_CC_IRQn, TIM2_IRQn, TIM3_IRQn, TIM4_IRQn, TIM5_IRQn };
#endif

void platform_int_init()
{
  NVIC_InitTypeDef nvic_init_structure;
  unsigned i;

  // Enable all USART interrupts in the NVIC
  nvic_init_structure.NVIC_IRQChannelPreemptionPriority = 0;
  nvic_init_structure.NVIC_IRQChannelSubPriority = 0;
  nvic_init_structure.NVIC_IRQChannelCmd = ENABLE;

  for( i = 0; i < sizeof( uart_irq_table ) / sizeof( u8 ); i ++ )
  {
    nvic_init_structure.NVIC_IRQChannel = uart_irq_table[ i ];
    NVIC_Init( &nvic_init_structure );
  }

  // Enable all EXTI interrupts in the NVIC
  for( i = 0; i < sizeof( exti_irq_table ) / sizeof( u8 ); i ++ )
  {
    nvic_init_structure.NVIC_IRQChannel = exti_irq_table[ i ];
    NVIC_Init( &nvic_init_structure );
  }

#ifdef INT_TMR_MATCH
  for( i = 0; i < sizeof( timer_irq_table ) / sizeof( u8 ); i ++ )
  {
    nvic_init_structure.NVIC_IRQChannel = timer_irq_table[ i ];
      nvic_init_structure.NVIC_IRQChannelSubPriority = 1;
    NVIC_Init( &nvic_init_structure );
  }
#endif

}

// ****************************************************************************
// Interrupt table
// Must have a 1-to-1 correspondence with the interrupt enum in platform_conf.h!

const elua_int_descriptor elua_int_table[ INT_ELUA_LAST ] =
{
  { int_gpio_posedge_set_status, int_gpio_posedge_get_status, int_gpio_posedge_get_flag },
  { int_gpio_negedge_set_status, int_gpio_negedge_get_status, int_gpio_negedge_get_flag },
  { int_tmr_match_set_status, int_tmr_match_get_status, int_tmr_match_get_flag },
  { int_uart_rx_set_status, int_uart_rx_get_status, int_uart_rx_get_flag }
};


_stack_after: Vec<Value>,
    local_before: Locals,
    local_after: Locals,
    expected_offset: u16,
) {
    test_simple_instruction_impl(
        vm,
        instr,
        value_stack_before,
        value_stack_after,
        local_before,
        local_after,
        expected_offset,
    )
    .unwrap();
}

fn test_binop_instruction_impl<'alloc, 'txn>(
    vm: &mut TransactionExecutor<'alloc, 'txn, VMModuleCache<'alloc>>,
    instr: Bytecode,
    stack: Vec<Value>,
    expected_value: Value,
) -> VMResult<()> {
    test_simple_instruction_impl(
        vm,
        instr,
        stack,
        vec![expected_value],
        Locals::new(0),
        Locals::new(0),
        1,
    )
}

fn test_binop_instruction<'alloc, 'txn>(
    vm: &mut TransactionExecutor<'alloc, 'txn, VMModuleCache<'alloc>>,
    instr: Bytecode,
    stack: Vec<Value>,
    expected_value: Value,
) {
    test_binop_instruction_impl(vm, instr, stack, expected_value).unwrap()
}

fn test_binop_instruction_overflow<'alloc, 'txn>(
    vm: &mut TransactionExecutor<'alloc, 'txn, VMModuleCache<'alloc>>,
    instr: Bytecode,
    stack: Vec<Value>,
) {
    assert_eq!(
        test_binop_instruction_impl(vm, instr, stack, Value::u64(0))
            .unwrap_err()
            .major_status,
        StatusCode::ARITHMETIC_ERROR
    );
}

#[test]
fn test_simple_instruction_transition() {
    let allocator = Arena::new();
    let module_cache = VMModuleCache::new(&allocator);
    let main_module = fake_script().into_module();
    let loaded_main = LoadedModule::new(main_module);
    let entry_func = FunctionRef::new(&loaded_main, CompiledScript::MAIN_INDEX);
    let data_cache = FakeDataCache::new();
    let mut vm =
        TransactionExecutor::new(module_cache, &data_cache, TransactionMetadata::default());
    vm.execution_stack
        .push_frame(entry_func)
        .expect("push to empty execution stack should succeed");

    test_simple_instruction(
        &mut vm,
        Bytecode::Pop,
        vec![Value::u64(0)],
        vec![],
        Locals::new(0),
        Locals::new(0),
        1,
    );

    test_simple_instruction(
        &mut vm,
        Bytecode::BrTrue(100),
        vec![Value::bool(true)],
        vec![],
        Locals::new(0),
        Locals::new(0),
        100,
    );

    test_simple_instruction(
        &mut vm,
        Bytecode::BrTrue(100),
        vec![Value::bool(false)],
        vec![],
        Locals::new(0),
        Locals::new(0),
        1,
    );

    test_simple_instruction(
        &mut vm,
        Bytecode::BrFalse(100),
        vec![Value::bool(true)],
        vec![],
        Locals::new(0),
        Locals::new(0),
        1,
    );

    test_simple_instruction(
        &mut vm,
        Bytecode::BrFalse(100),
        vec![Value::bool(false)],
        vec![],
        Locals::new(0),
        Locals::new(0),
        100,
    );

    test_simple_instruction(
        &mut vm,
        Bytecode::Branch(100),
        vec![],
        vec![],
        Locals::new(0),
        Locals::new(0),


);
		});
		getDirFromEnv(XDG_CONFIG_HOME, userNameAndAppName).ifPresent(dir -> {
			discoveredDirs.add(dir);
			discoveredDirs.addAll(getSubdirs(dir));
		});

		return discoveredDirs;
	}

	/**
	 * Finds user cache directories
	 *
	 * @param appName The name of the application
	 * @param layout The layout
	 * @return A {@link Set} of discovered user cache directories, ordered such that
	 *   parent directories are directly followed by their subdirectories, if applicable
	 * @see ApplicationUtilities#getDefaultUserCacheDir(ApplicationProperties)
	 */
	private Set<File> findCacheDirs(String appName, ApplicationLayout layout) {
		Set<File> discoveredDirs = new LinkedHashSet<>();

		// Legacy cache directories
		if (OperatingSystem.CURRENT_OPERATING_SYSTEM.equals(OperatingSystem.WINDOWS)) {
			getDirFromEnv("LOCALAPPDATA", appName).ifPresent(discoveredDirs::add);
		}
		else {
			String legacyName = SystemUtilities.getUserName() + "-" + appName;
			getDirFromProperty("java.io.tmpdir", legacyName).ifPresent(discoveredDirs::add);
		}

		// Newer cache directories always use a lowercase application name
		appName = ApplicationUtilities.normalizeApplicationName(appName);
		String userNameAndAppName = SystemUtilities.getUserName() + "-" + appName;

		// Current cache directories
		File cacheDir = layout.getUserCacheDir();
		if (cacheDir != null && cacheDir.isDirectory()) {
			discoveredDirs.add(cacheDir);
		}

		// Application system property override (likely not set for AppCleaner)
		getDirFromProperty(PROPERTY_CACHE_DIR, appName).ifPresent(discoveredDirs::add);
		getDirFromProperty(PROPERTY_CACHE_DIR, userNameAndAppName).ifPresent(discoveredDirs::add);

		// XDG environment variable override
		getDirFromEnv(XDG_CACHE_HOME, appName).ifPresent(discoveredDirs::add);
		getDirFromEnv(XDG_CACHE_HOME, userNameAndAppName).ifPresent(discoveredDirs::add);

		return discoveredDirs;
	}

	/**
	 * Finds user temp directories
	 *
	 * @param appName The name of the application
	 * @param layout The layout
	 * @return A {@link Set} of discovered user temp directories, ordered such that
	 *   parent directories are directly followed by their subdirectories, if applicable
	 * @see ApplicationUtilities#getDefaultUserTempDir(String)
	 */
	private Set<File> findTempDirs(String appName, ApplicationLayout layout) {
		Set<File> discoveredDirs = new LinkedHashSet<>();

		// Legacy temp directories
		String legacyName = SystemUtilities.getUserName() + "-" + appName;
		if (OperatingSystem.CURRENT_OPERATING_SYSTEM.equals(OperatingSystem.WINDOWS)) {
			getDirFromEnv("TEMP", legacyName).ifPresent(discoveredDirs::add);
		}
		else {
			getDirFromProperty("java.io.tmpdir", legacyName).ifPresent(discoveredDirs::add);
		}

		// Newer temp directories always use a lowercase application name
		appName = ApplicationUtilities.normalizeApplicationName(appName);
		String userNameAndAppName = SystemUtilities.getUserName() + "-" + appName;

		// Current temp directories
		File tempDir = layout.getUserTempDir();
		if (tempDir != null && tempDir.isDirectory()) {
			discoveredDirs.add(tempDir);
		}

		// Application system property override (likely not set for AppCleaner)
		getDirFromProperty(PROPERTY_TEMP_DIR, appName).ifPresent(discoveredDirs::add);
		getDirFromProperty(PROPERTY_TEMP_DIR, userNameAndAppName).ifPresent(discoveredDirs::add);

		// XDG environment variable override.


enum ReferenceType {
    Pubkey,
    U8,
    U16,
    U32,
    U64,
    F64,
    Empty,
}

impl ReferenceType {
    pub const fn get_size(&self) -> usize {
        match self {
            ReferenceType::Pubkey => size_of::<Pubkey>(),
            ReferenceType::U8 => size_of::<u8>(),
            ReferenceType::U16 => size_of::<u16>(),
            ReferenceType::U32 => size_of::<u32>(),
            ReferenceType::U64 => size_of::<u64>(),
            ReferenceType::F64 => size_of::<f64>(),
            ReferenceType::Empty => 0,
        }
    }
}

impl std::fmt::Display for ReferenceType {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match *self {
            ReferenceType::Pubkey => write!(f, "Pubkey"),
            ReferenceType::U8 => write!(f, "U8"),
            ReferenceType::U16 => write!(f, "U16"),
            ReferenceType::U32 => write!(f, "U32"),
            ReferenceType::U64 => write!(f, "U64"),
            ReferenceType::F64 => write!(f, "F64"),
            ReferenceType::Empty => write!(f, "Empty"),
        }
    }
}

#[repr(u8)]
#[derive(Serialize, Deserialize, Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)]
pub enum StorageType {
    Program,
    Vault,
    Pool,
    Farm,
    Token,
    Other,
}

impl StorageType {
    pub const fn get_default_size(storage_type: StorageType) -> usize {
        match storage_type {
            StorageType::Program => 25000usize,
            StorageType::Vault => 25000usize,
            StorageType::Pool => 50000usize,
            StorageType::Farm => 25000usize,
            StorageType::Token => 500000usize,
            _ => 0usize,
        }
    }

    pub const fn get_default_max_records(
        storage_type: StorageType,
        reference_type: ReferenceType,
    ) -> usize {
        let record_size = Record::get_size_with_reference(reference_type);
        (StorageType::get_default_size(storage_type) - Header::LEN) / record_size
    }

    pub const fn get_storage_size_for_records(
        reference_type: ReferenceType,
        records_num: usize,
    ) -> usize {
        if records_num > u32::MAX as usize {
            return 0;
        }
        let record_size = Record::get_size_with_reference(reference_type);
        records_num * record_size + Header::LEN
    }

    pub const fn get_storage_size_for_max_records(
        storage_type: StorageType,
        reference_type: ReferenceType,
    ) -> usize {
        StorageType::get_storage_size_for_records(
            reference_type,
            StorageType::get_default_max_records(storage_type, reference_type),
        )
    }
}

impl std::fmt::Display for StorageType {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match *self {
            StorageType::Program => write!(f, "Program"),
            StorageType::Vault => write!(f, "Vault"),
            StorageType::Pool => write!(f, "Pool"),
            StorageType::Farm => write!(f, "Farm"),
            StorageType::Token => write!(f, "Token"),
            StorageType::Other => write!(f, "Other"),
        }
    }
}

impl std::str::FromStr for StorageType {
    type Err


  for i in duplicated_ids:
            # Results are ordered the same way they are ordered in document
            offending_elements = doc.xpath('//*[@id="{}"]'.format(i))
            counter = 2
            # If this is a story or a post, do it from top to bottom, because
            # updates to those are more likely to appear at the bottom of pages.
            # For anything else, including indexes, do it from bottom to top,
            # because new posts appear at the top of pages.
            # We also leave the first result out, so there is one element with
            # "plain" ID
            if any(doc.find_class(c) for c in top_classes):
                off = offending_elements[1:]
            else:
                off = offending_elements[-2::-1]
            for e in off:
                new_id = i
                while new_id in seen_ids:
                    new_id = '{0}-{1}'.format(i, counter)
                    counter += 1
                e.attrib['id'] = new_id
                seen_ids.add(new_id)
                # Find headerlinks that we can fix.
                headerlinks = e.find_class('headerlink')
                for hl in headerlinks:
                    # We might get headerlinks of child elements
                    if hl.attrib['href'] == '#' + i:
                        hl.attrib['href'] = '#' + new_id
                        break
        return '<!DOCTYPE html>\n' + lxml.html.tostring(doc, encoding='unicode')
    else:
        return data


 دور، می‌توانید یک حرکت را رَد کنید.';

  @override
  String puzzleYourStreakX(String param) {
    return 'رکورد شما: $param';
  }

  @override
  String get puzzleStreakSkipExplanation => 'این حرکت را رد کنید تا رکورد خود را حفظ کنید! فقط یک بار در هر دور امکان‌پذیر است.';

  @override
  String get puzzleContinueTheStreak => 'توالی را ادامه دهید';

  @override
  String get puzzleNewStreak => 'رکورد جدید';

  @override
  String get puzzleFromMyGames => 'از بازی های من';

  @override
  String get puzzleLookupOfPlayer => 'به دنبال معماهای برگرفته از بازی‌های یک بازیکن مشخص، بگردید';

  @override
  String get puzzleSearchPuzzles => 'جستجوی معما';

  @override
  String get puzzleFromMyGamesNone => 'شما هیچ معمایی در دادگان ندارید، اما Lichess همچنان شما را بسیار دوست دارد.\n\nبازی‌های سریع و فکری را انجام دهید تا بخت‌تان را برای افزودن معمایی از خودتان بیفزایید!';

  @override
  String get puzzlePuzzleDashboardDescription => 'آموزش، واکاوی، بهبود';

  @override
  String puzzlePercentSolved(String param) {
    return '$param حل‌شده';
  }

  @override
  String get puzzleNoPuzzlesToShow => 'چیزی برای نمایش نیست، نخست بروید و چند معما حل کنید!';

  @override
  String get puzzleImprovementAreasDescription => 'برای بهینیدن پیشرفت‌تان، این‌ها را بیاموزید!';

  @override
  String get puzzleStrengthDescription => 'شما در این زمینه‌ها بهترین عملکرد را دارید';

  @override
  String puzzlePlayedXTimes(int count) {
    String _temp0 = intl.Intl.pluralLogic(
      count,
      locale: localeName,
      other: '$count بار بازی شده',
      one: '$count بار بازی شده است',
    );
    return '$_temp0';
  }

  @override
  String puzzleNbPointsBelowYourPuzzleRating(int count) {
    String _temp0 = intl.Intl.pluralLogic(
      count,
      locale: localeName,
      other: '$count امتیاز زیر درجه‌بندی معمایی‌تان',
      one: 'یک امتیاز زیر درجه‌بندی معمایی‌تان',
    );
    return '$_temp0';
  }

  @override
  String puzzleNbPointsAboveYourPuzzleRating(int count) {
    String _temp0 = intl.Intl.pluralLogic(
      count,
      locale: localeName,
      other: '$count امتیاز بالای درجه‌بندی معمایی‌تان',
      one: 'یک امتیاز بالای درجه‌بندی معمایی‌ت


invoker(F f)
BOOST_HOF_NOEXCEPT_CONSTRUCTIBLE(lazy_nullary_invoker<F>, F&&)
{
    return lazy_nullary_invoker<F>(static_cast<F&&>(f));
}
}

template<class F>
struct lazy_adaptor : detail::callable_base<F>
{
    BOOST_HOF_INHERIT_CONSTRUCTOR(lazy_adaptor, detail::callable_base<F>);

    template<class... Ts>
    constexpr const detail::callable_base<F>& base_function(Ts&&... xs) const noexcept
    {
        return boost::hof::always_ref(*this)(xs...);
    }

    BOOST_HOF_RETURNS_CLASS(lazy_adaptor);

    template<class T, class... Ts>
    constexpr auto operator()(T x, Ts... xs) const BOOST_HOF_RETURNS
    (
        boost::hof::detail::make_lazy_invoker(BOOST_HOF_RETURNS_C_CAST(detail::callable_base<F>&&)(BOOST_HOF_CONST_THIS->base_function(x, xs...)),
            boost::hof::pack_basic(BOOST_HOF_RETURNS_STATIC_CAST(T&&)(x), BOOST_HOF_RETURNS_STATIC_CAST(Ts&&)(xs)...))
    );

    // Workaround for gcc 4.7
    template<class Unused=int>
    constexpr detail::lazy_nullary_invoker<F> operator()() const
    BOOST_HOF_RETURNS_DEDUCE_NOEXCEPT(
        boost::hof::detail::make_lazy_nullary_invoker(BOOST_HOF_RETURNS_C_CAST(detail::callable_base<F>&&)(
            BOOST_HOF_CONST_THIS->base_function(BOOST_HOF_RETURNS_CONSTRUCT(Unused)())
        ))
    )
    {
        return boost::hof::detail::make_lazy_nullary_invoker((detail::callable_base<F>&&)(
            this->base_function(Unused())
        ));
    }

    // TODO: Overloads to use with ref qualifiers

    // template<class... Ts>
    // constexpr auto operator()(Ts... xs) const& BOOST_HOF_RETURNS
    // (
    //     boost::hof::detail::make_lazy_invoker(this->base_function(xs...),
    //         pack(boost::hof::move(xs)...))
    // );

    // template<class... Ts>
    // constexpr auto operator()(Ts... xs) && BOOST_HOF_RETURNS
    // (
    //     boost::hof::detail::make_lazy_invoker((F&&)this->base_function(xs...),
    //         pack(boost::hof::move(xs)...))
    // );

};

BOOST_HOF_DECLARE_STATIC_VAR(lazy, detail::make<lazy_adaptor>);

}} // namespace boost::hof

namespace std {
    template<class F, class Pack>
    struct is_bind_expression<boost::hof::detail::lazy_invoker<F, Pack>>
    : std::true_type
    {};

    template<class F>
    struct is_bind_expression<boost::hof::detail::lazy_nullary_invoker<F>>
    : std::true_type
    {};
}

#endif
/*=============================================================================
    Copyright (c) 2015 Paul Fultz II
    construct.h
    Distributed under the Boost Software License, Version 1.0. (See accompanying
    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/

#ifndef BOOST_HOF_GUARD_CONSTRUCT_H
#define BOOST_HOF_GUARD_CONSTRUCT_H

/// construct
/// =========
///
/// Description
/// -----------
///
/// The `construct` function returns a function object that will construct the
/// object when the called. A template can also be given, which it will deduce
/// the parameters to the template. The `construct_meta` can be used to
/// construct the object from a metafunction.
///
/// Synopsis
/// --------
///


ng() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateBotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateBotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateBotInput"}
	if s.BotName == nil {
		invalidParams.Add(request.NewErrParamRequired("BotName"))
	}
	if s.BotName != nil && len(*s.BotName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BotName", 1))
	}
	if s.DataPrivacy == nil {
		invalidParams.Add(request.NewErrParamRequired("DataPrivacy"))
	}
	if s.IdleSessionTTLInSeconds == nil {
		invalidParams.Add(request.NewErrParamRequired("IdleSessionTTLInSeconds"))
	}
	if s.IdleSessionTTLInSeconds != nil && *s.IdleSessionTTLInSeconds < 60 {
		invalidParams.Add(request.NewErrParamMinValue("IdleSessionTTLInSeconds", 60))
	}
	if s.RoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
	}
	if s.RoleArn != nil && len(*s.RoleArn) < 32 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 32))
	}
	if s.BotMembers != nil {
		for i, v := range s.BotMembers {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "BotMembers", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DataPrivacy != nil {
		if err := s.DataPrivacy.Validate(); err != nil {
			invalidParams.AddNested("DataPrivacy", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBotMembers sets the BotMembers field's value.
func (s *CreateBotInput) SetBotMembers(v []*BotMember) *CreateBotInput {
	s.BotMembers = v
	return s
}

// SetBotName sets the BotName field's value.
func (s *CreateBotInput) SetBotName(v string) *CreateBotInput {
	s.BotName = &v
	return s
}

// SetBotTags sets the BotTags field's value.
func (s *CreateBotInput) SetBotTags(v map[string]*string) *CreateBotInput {
	s.BotTags = v
	return s
}

// SetBotType sets the BotType field's value.
func (s *CreateBotInput) SetBotType(v string) *CreateBotInput {
	s.BotType = &v
	return s
}

// SetDataPrivacy sets the DataPrivacy field's value.
func (s *CreateBotInput) SetDataPrivacy(v *DataPrivacy) *CreateBotInput {
	s.DataPrivacy = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateBotInput) SetDescription(v string) *CreateBotInput {
	s.Description = &v
	return s
}

// SetIdleSessionTTLInSeconds sets the IdleSessionTTLInSeconds field's value.
func (s *CreateBotInput) SetIdleSessionTTLInSeconds(v int64) *CreateBotInput {
	s.IdleSessionTTLInSeconds = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *CreateBotInput) SetRoleArn(v string) *CreateBotInput {
	s.RoleArn = &v
	return s
}

// SetTestBotAliasTags sets the TestBotAliasTags field's value.
func (s *CreateBotInput) SetTestBotAliasTags(v map[string]*string) *CreateBotInput {
	s.TestBotAliasTags = v
	return s
}

type CreateBotLocaleInput struct {
	_ struct{}


o đã khoét thịt đi vào và xé rách phổi của hắn ta.

“Khọc......”

Vạn Kim Đại Phu bắt đầu run như cầy sấy trong cơn đau tưởng chừng sẽ khiến hắn nghẹt thở ngay tức khắc. Đầu óc hắn lúc này hoàn toàn trống rỗng.

Chuyện gì vừa xảy ra vậy? Rốt cuộc thì....

Cuối cùng hắn cũng đã có thể quay đầu lại một cách khó khăn. Và hình ảnh Úy Sung đang cười lạnh lùng với bàn tay đang đặt vào hông của hắn ta.

<span style="color:#252525; font-family:Roboto; font-size:11.5pt; font-style:


// Copyright 2017 The Dawn Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef DAWNNATIVE_D3D12_SHADERMODULED3D12_H_
#define DAWNNATIVE_D3D12_SHADERMODULED3D12_H_

#include "dawn_native/ShaderModule.h"

#include "dawn_native/d3d12/d3d12_platform.h"

namespace dawn_native { namespace d3d12 {

    class Device;
    class PipelineLayout;

    class ShaderModule final : public ShaderModuleBase {
      public:
        static ResultOrError<ShaderModule*> Create(Device* device,
                                                   const ShaderModuleDescriptor* descriptor);

        ResultOrError<std::string> GetHLSLSource(PipelineLayout* layout);

        ResultOrError<ComPtr<IDxcBlob>> CompileShaderDXC(SingleShaderStage stage,
                                                         const std::string& hlslSource,
                                                         const char* entryPoint,
                                                         uint32_t compileFlags);
        ResultOrError<ComPtr<ID3DBlob>> CompileShaderFXC(SingleShaderStage stage,
                                                         const std::string& hlslSource,
                                                         const char* entryPoint,
                                                         uint32_t compileFlags);

      private:
        ShaderModule(Device* device, const ShaderModuleDescriptor* descriptor);
        ~ShaderModule() override = default;
        MaybeError Initialize();
    };

}}  // namespace dawn_native::d3d12

#endif  // DAWNNATIVE_D3D12_SHADERMODULED3D12_H_


药企排名?'>中国十大药企排名?

1、以下是一些知名的中国药企（并非严格按照排名，仅供参考）：恒瑞医药（HengruiPharmaceuticals）：中国知名的抗肿瘤药、手术用药和造影剂制造商。云南白药（YunnanBaiyao）：以生产云南白药喷雾剂等传统中药而闻名的医药企业。

2、十大医药公司排名如下：广州白云山药业集团。 中和医药集团公司。中国医药。南京制药厂。云南白药。山东瑞康药业集团。江苏恒瑞药业。人福药业集团。四川科伦药业。重庆智飞生物制品。

3、中国十大药企排名：广州白云山药业集团、中和医药集团公司、中国医药、南京制药厂、云南白药、山东瑞康药业集团、江苏恒瑞药业、人福药业集团、四川科伦药业、重庆智飞生物制品。

4、广州白云山药业集团广州白云山医药集团股份有限公司是广州医药集团股份有限公司（A股600332，H股00874）控股的上市公司。中和医药集团公司中协医药股份有限公司主要从事<a href="http://www.to3158.cn/tags-y-p65e6e945839f9.html" target


tBuilder.WithIndex(obj, field, extractValue)
	return nil
}

func AsIndex(builder *fake.ClientBuilder) client.FieldIndexer {
	return &builderIndexer{ClientBuilder: builder}
}
// Copyright 2024 The Kubeflow Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by applyconfiguration-gen. DO NOT EDIT.

package internal

import (
	fmt "fmt"
	sync "sync"

	typed "sigs.k8s.io/structured-merge-diff/v6/typed"
)

func Parser() *typed.Parser {
	parserOnce.Do(func() {
		var err error
		parser, err = typed.NewParser(schemaYAML)
		if err != nil {
			panic(fmt.Sprintf("Failed to parse schema: %v", err))
		}
	})
	return parser
}

var parserOnce sync.Once
var parser *typed.Parser
var schemaYAML = typed.YAMLObject(`types:
- name: __untyped_atomic_
  scalar: untyped
  list:
    elementType:
      namedType: __untyped_atomic_
    elementRelationship: atomic
  map:
    elementType:
      namedType: __untyped_atomic_
    elementRelationship: atomic
- name: __untyped_deduced_
  scalar: untyped
  list:
    elementType:
      namedType: __untyped_atomic_
    elementRelationship: atomic
  map:
    elementType:
      namedType: __untyped_deduced_
    elementRelationship: separable
`)
// Copyright 2024 The Kubeflow Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by applyconfiguration-gen. DO NOT EDIT.

package v1alpha1

import (
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	types "k8s.io/apimachinery/pkg/types"
	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
)

// TrainingRuntimeApplyConfiguration represents a declarative configuration of the TrainingRuntime type for use
// with apply.
type TrainingRuntimeApplyConfiguration struct {
	v1.TypeMetaApplyConfiguration    `json:",inline"`
	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
	Spec                             *TrainingRuntimeSpecApplyConfiguration `json:"spec,omitempty"`
}

// TrainingRuntime constructs a declarative configuration of the TrainingRuntime type for use with
// apply.
func TrainingRuntime(name, namespace string) *TrainingRuntimeApplyConfiguration {
	b := &TrainingRuntimeApplyConfiguration{}
	b.WithName(name)
	b.WithNamespace(namespace)
	b.WithKind("TrainingRuntime")
	b.WithAPIVersion("trainer.kubeflow.org/v1alpha1")
	return


t64))
```

`numpy` kütüphanesinin özvektörleri bir uzunluğunda normalleştirdiğini, oysa bizimkileri keyfi uzunlukta kabul ettiğimizi unutmayın.
Ek olarak, işaret seçimi keyfidir.
Bununla birlikte, hesaplanan vektörler, aynı özdeğerlerle elle bulduklarımıza paraleldir.

## Matris Ayrıştırma
Önceki örnek ile bir adım daha devam edelim.

$$
\mathbf{W} = \begin{bmatrix}
1 & 1 \\
-1 & 2
\end{bmatrix},
$$

Sütunları $\mathbf{A}$ matrisinin özvektörleri olduğu matris olsun.

$$
\boldsymbol{\Sigma} = \begin{bmatrix}
1 & 0 \\
0 & 4
\end{bmatrix},
$$

Köşegen üzerinde ilişkili özdeğerleri olan matris olsun.
Özdeğerlerin ve özvektörlerin tanımı bize şunu söyler:

$$
\mathbf{A}\mathbf{W} =\mathbf{W} \boldsymbol{\Sigma} .
$$

$W$ matrisi ters çevrilebilir, bu yüzden her iki tarafı da sağdan $W^{-1}$ ile çarpabiliriz ve görürüz ki:

$$\mathbf{A} = \mathbf{W} \boldsymbol{\Sigma} \mathbf{W}^{-1}.$$
:eqlabel:`eq_eig_decomp`

Bir sonraki bölümde bunun bazı güzel sonuçlarını göreceğiz, ancak şimdilik sadece, doğrusal olarak bağımsız özvektörlerin tam bir topluluğunu bulabildiğimiz sürece böyle bir ayrışmanın var olacağını bilmemiz gerekiyor (böylece $W$ tersinirdir).

## Özayrışmalar Üzerinde İşlemler
Özayrışmalar, :eqref:`eq_eig_decomp`, ilgili güzel bir şey, genellikle karşılaştığımız birçok işlemi özayrışmalar açısından temiz bir şekilde yazabilmemizdir.
İlk örnek olarak şunları düşünün:

$$
\mathbf{A}^n = \overbrace{\mathbf{A}\cdots \mathbf{A}}^{\text{$n$ kere}} = \overbrace{(\mathbf{W}\boldsymbol{\Sigma} \mathbf{W}^{-1})\cdots(\mathbf{W}\boldsymbol{\Sigma} \mathbf{W}^{-1})}^{\text{$n$ kere}} =  \mathbf{W}\overbrace{\boldsymbol{\Sigma}\cdots\boldsymbol{\Sigma}}^{\text{$n$ kere}}\mathbf{W}^{-1} = \mathbf{W}\boldsymbol{\Sigma}^n \mathbf{W}^{-1}.
$$

Bu bize, bir matrisin herhangi bir pozitif kuvveti için, özayrışmasının özdeğerlerin sadece aynı kuvvete yükseltilmesiyle elde edildiğini söyler.
Aynısı negatif kuvvetler için de gösterilebilir, bu nedenle bir matrisi tersine çevirmek istiyorsak, yapmamız gereken yalnızca

$$
\mathbf{A}^{-1} = \mathbf{W}\boldsymbol{\Sigma}^{-1} \mathbf{W}^{-1},
$$

veya başka bir deyişle, her bir özdeğeri ters çevirin.
Bu, her özdeğer sıfır olmadığı sürece işe yarayacaktır, bu nedenle ters


 "\f39f",
  "file-medical-fill": "\f3a0",
  "file-medical": "\f3a1",
  "file-minus-fill": "\f3a2",
  "file-minus": "\f3a3",
  "file-music-fill": "\f3a4",
  "file-music": "\f3a5",
  "file-person-fill": "\f3a6",
  "file-person": "\f3a7",
  "file-play-fill": "\f3a8",
  "file-play": "\f3a9",
  "file-plus-fill": "\f3aa",
  "file-plus": "\f3ab",
  "file-post-fill": "\f3ac",
  "file-post": "\f3ad",
  "file-ppt-fill": "\f3ae",
  "file-ppt": "\f3af",
  "file-richtext-fill": "\f3b0",
  "file-richtext": "\f3b1",
  "file-ruled-fill": "\f3b2",
  "file-ruled": "\f3b3",
  "file-slides-fill": "\f3b4",
  "file-slides": "\f3b5",
  "file-spreadsheet-fill": "\f3b6",
  "file-spreadsheet": "\f3b7",
  "file-text-fill": "\f3b8",
  "file-text": "\f3b9",
  "file-word-fill": "\f3ba",
  "file-word": "\f3bb",
  "file-x-fill": "\f3bc",
  "file-x": "\f3bd",
  "file-zip-fill": "\f3be",
  "file-zip": "\f3bf",
  "file": "\f3c0",
  "files-alt": "\f3c1",
  "files": "\f3c2",
  "film": "\f3c3",
  "filter-circle-fill": "\f3c4",
  "filter-circle": "\f3c5",
  "filter-left": "\f3c6",
  "filter-right": "\f3c7",
  "filter-square-fill": "\f3c8",
  "filter-square": "\f3c9",
  "filter": "\f3ca",
  "flag-fill": "\f3cb",
  "flag": "\f3cc",
  "flower1": "\f3cd",
  "flower2": "\f3ce",
  "flower3": "\f3cf",
  "folder-check": "\f3d0",
  "folder-fill": "\f3d1",
  "folder-minus": "\f3d2",
  "folder-plus": "\f3d3",
  "folder-symlink-fill": "\f3d4",
  "folder-symlink": "\f3d5",
  "folder-x": "\f3d6",
  "folder": "\f3d7",
  "folder2-open": "\f3d8",
  "folder2": "\f3d9",
  "fonts": "\f3da",
  "forward-fill": "\f3db",
  "forward": "\f3dc",
  "front": "\f3dd",
  "fullscreen-exit": "\f3de",
  "fullscreen": "\f3df",
  "funnel-fill": "\f3e0",
  "funnel": "\f3e1",
  "gear-fill": "\f3e2",
  "gear-wide-connected": "\f3e3",
  "gear-wide": "\f3e4",
  "gear": "\f3e5",
  "gem": "\f3e6",
  "geo-alt-fill": "\f3e7",
  "geo-alt": "\f3e8",
  "geo-fill": "\f3e9",
  "geo": "\f3ea",
  "gift-fill": "\f3eb",
  "gift": "\f3ec",
  "github": "\f3ed",
  "globe": "\f3ee",


 casttime("亂天狼")
	v["斩无常读条时间"] = casttime("斬無常")

	v["目标链接时间"] = tbufftime("連結", id())
	v["风骨层数"] = buffsn("26215")			--8秒, 3层时寂洪荒打一次伤害然后删除
	v["风骨时间"] = bufftime("26215")
	v["崔嵬时间"] = bufftime("崔嵬鬼步")	--buff 16596 会心会效攻击+15% 给的是6秒 但是4秒崔嵬结束会删除, buff 24244 5秒额外乱天狼
	v["百节层数"] = buffsn("百節")			--6秒 3层 实际效果 15927 15928 15929, 加寂乱隐斩4个技能伤害 10% 20% 30%
	v["百节时间"] = bufftime("百節")
	v["忘断时间"] = bufftime("忘斷")		--10秒, 攻击+25%
	v["徵逐时间"] = bufftime("徵逐")		--10秒, 无视防御+50%
	v["额外隐风雷时间"] = bufftime("24744")			--孤路额外隐风雷

	--目标不是敌人 直接结束
	if not rela("敌对") then return end

	--副本防开怪
	if getopt("副本防开怪") and dungeon() and nofight() then return end

	--等待状态同步
	if gettimer("寂洪荒读条结束") < 0.3 then
		--if cdleft(16) <= 0 then print("----------等待寂洪荒释放") end
		return
	end

	--判断寂乱条件
	v["可放寂乱"] = false
	v["寂乱需要时间"] = 0
	if v["百节时间"] < v["寂洪荒读条时间"] then	--续不上了，等于没有百节
		if v["寂洪荒充能次数"] >= 3 and v["乱天狼CD"] <= v["寂洪荒读条时间"] * 3 then	--3寂 + 乱
			v["可放寂乱"] = "3寂 + 乱"
			v["寂乱需要时间"] = v["寂洪荒读条时间"] * 3 + casttime("亂天狼")
		end
	else
		if v["寂洪荒充能次数"] + v["百节层数"] >= 3 then	--能打够3百节
			if v["乱天狼CD"] <= (3 - v["百节层数"]) * v["寂洪荒读条时间"] then	--乱天狼CD小于打够3百节时间
				v["可放寂乱"] = format("%d寂 + 乱", 3 - v["百节层数"])
				v["寂乱需要时间"] = v["寂洪荒读条时间"] * (3 - v["百


State(406);
      topClause();
      break;
    }

    default:
      break;
    }
    setState(409);
    antlrcpp::downCast<SelectStmtContext *>(_localctx)->columns = columnExprList();
    setState(411);
    _errHandler->sync(this);

    _la = _input->LA(1);
    if (_la == HogQLParser::FROM) {
      setState(410);
      antlrcpp::downCast<SelectStmtContext *>(_localctx)->from = fromClause();
    }
    setState(414);
    _errHandler->sync(this);

    _la = _input->LA(1);
    if ((((_la & ~ 0x3fULL) == 0) &&
      ((1ULL << _la) & 18084767253659680) != 0)) {
      setState(413);
      arrayJoinClause();
    }
    setState(417);
    _errHandler->sync(this);

    _la = _input->LA(1);
    if (_la == HogQLParser::PREWHERE) {
      setState(416);
      prewhereClause();
    }
    setState(420);
    _errHandler->sync(this);

    _la = _input->LA(1);
    if (_la == HogQLParser::WHERE) {
      setState(419);
      antlrcpp::downCast<SelectStmtContext *>(_localctx)->where = whereClause();
    }
    setState(423);
    _errHandler->sync(this);

    _la = _input->LA(1);
    if (_la == HogQLParser::GROUP) {
      setState(422);
      groupByClause();
    }
    setState(427);
    _errHandler->sync(this);

    switch (getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 39, _ctx)) {
    case 1: {
      setState(425);
      match(HogQLParser::WITH);
      setState(426);
      _la = _input->LA(1);
      if (!(_la == HogQLParser::CUBE

      || _la == HogQLParser::ROLLUP)) {
      _errHandler->recoverInline(this);
      }
      else {
        _errHandler->reportMatch(this);
        consume();
      }
      break;
    }

    default:
      break;
    }
    setState(431);
    _errHandler->sync(this);

    _la = _input->LA(1);
    if (_la == HogQLParser::WITH) {
      setState(429);
      match(HogQLParser::WITH);
      setState(430);
      match(HogQLParser::TOTALS);
    }
    setState(434);
    _errHandler->sync(this);

    _la = _input->LA(1);
    if (_la == HogQLParser::HAVING) {
      setState(433);
      havingClause();
    }
    setState(437);
    _errHandler->sync(this);

    _la = _input->LA(1);
    if (_la == HogQLParser::WINDOW) {
      setState(436);
      windowClause();
    }
    setState(440);
    _errHandler->sync(this);

    _la = _input->LA(1);
    if (_la == HogQLParser::ORDER) {
      setState(439);
      orderByClause();
    }
    setState(443);
    _errHandler->sync(this);

    switch (getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 44, _ctx)) {
    case 1: {
      setState(442);
      limitByClause();
      break;
    }

    default:
      break;
    }
    setState(447);
    _errHandler->sync(this);
    switch (_input->LA(1)) {
      case HogQLParser::LIMIT: {
        setState(445);
        limitAndOffsetClause();
        break;
      }

      case HogQLParser::OFFSET: {
        setState(446);
        offsetOnlyClause();
        break;
      }

      case HogQLParser::EOF:
      ca


const count = prompt('How many extensions to create? (Current: 15, Max: 50)', '10');
    if (count && !isNaN(count)) {
        showAlert(`${count} extensions will be created. This is a simulation.`, 'info');
    }
}

function refreshExtensions() {
    showAlert('Extension status refreshed!', 'info');
    loadExtensionsData();
}

function reloadAsterisk() {
    if (confirm('This will reload Asterisk configuration. Continue?')) {
        showAlert('Asterisk configuration reloaded successfully!', 'success');
    }
}

function resetSystemConfig() {
    document.getElementById('maxExtensions').value = '50';
    document.getElementById('sipPort').value = '5060';
    document.getElementById('flaskPort').value = '5000';
    document.getElementById('sipDomain').value = '172.31.42.33';
    document.getElementById('companyName').value = 'AMARAVATI EMS PVT LTD';
    document.getElementById('systemTitle').value = 'VoIP Management System';

    showAlert('Configuration reset to defaults!', 'info');
}

function showAlert(message, type) {
    const alertDiv = document.createElement('div');
    alertDiv.className = `alert alert-${type} alert-dismissible fade show`;
    alertDiv.innerHTML = `
        ${message}
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
    `;

    document.querySelector('.container-fluid').insertBefore(alertDiv, document.querySelector('.row'));

    // Auto-dismiss after 5 seconds
    setTimeout(() => {
        if (alertDiv.parentNode) {
            alertDiv.remove();
        }
    }, 5000);
}

// Load extensions data
async function loadExtensionsData() {
    try {
        // Simulate loading extensions (replace with actual API call)
        const tbody = document.querySelector('#extensionsTable tbody');
        tbody.innerHTML = '
Loading...
';

        setTimeout(() => {
            tbody.innerHTML = `

                    1003
                    1003/1003
                    Offline
                    Unspecified
                    0
                    N/A

                        <button class="btn btn-sm btn-info" title="Generate QR">

                        </button>
                        <button class="btn btn-sm btn-warning" title="Edit">

                        </button>

                    phone1
                    phone1
                    Offline
                    Unspecified
                    0
                    N/A

                        <button class="btn btn-sm btn-info" title="Generate QR">

                        </button>
                        <button class="btn btn-sm btn-warning" title="Edit">

                        </button>

            `;
        }, 1000);

    } catch (error) {
        console.error('Error loading extensions:', error);
    }
}

// Initialize page
document.addEventListener('DOMContentLoaded', function() {
    loadExtensionsData();
});
</script>
{% endblock %}
{% extends "base.tera.html" %}

{% block title %}Game Over{% endblock title %}

{% block body_attributes %}{% endblock body_attributes %}

{%


         // 全部微博为0的博主
          break;
        } else if (/内容/.test(item?.data?.name) && item?.data?.card_type === 58) {
          // 个人微博页刷完后的推荐微博
          break;
        } else {
          if (item?.category === "card") {
            // 58微博展示时间段提示 216筛选按钮
            if ([58, 216]?.includes(item?.data?.card_type)) {
              if (/没有公开博文，为你推荐以下精彩内容/.test(item?.data?.name)) {
                // 个人微博页刷完后的推荐信息流
                continue;
              }
            }
            newItems.push(item);
          } else if (item?.category === "group") {
            // 遍历group,保留置顶微博
            if (item?.header?.data?.icon) {
              delete item.header.data.icon; // 置顶微博背景图
            }
            if (item?.itemId?.includes("INTEREST_PEOPLE")) {
              // 可能感兴趣的人
              continue;
            }
            if (item?.profile_type_id === "weibo_cardpics") {
              // 近期热门 精选微博 那年今日等横版内容
              continue;
            }
            if (item?.items?.length > 0) {
              let newII = [];
              for (let ii of item.items) {
                if (ii?.category === "feed") {
                  removeAvatar(ii?.data); // 头像挂件,关注按钮
                  removeFeedAd(ii?.data); // 信息流推广
                  removeVoteInfo(ii?.data); // 投票窗口
                  // 评论指引
                  if (ii?.data?.enable_comment_guide) {
                    ii.data.enable_comment_guide = false;
                  }
                  newII.push(ii);
                } else if (ii?.category === "card") {
                  if ([10, 48, 176]?.includes(ii?.data?.card_type)) {
                    // 最近关注与互动过的博主
                    continue;
                  }
                  delete ii.data.rightImage; // 新版置顶微博皇冠
                  delete ii.data.backgroundImage; // 新版置顶微博背景图
                  newII.push(ii);
                }
              }
              item.items = newII;
            }
            newItems.push(item);
          } else if (item?.category === "feed") {
            if (!isAd(item?.data)) {
              removeFeedAd(item?.data); // 信息流推广
              removeVoteInfo(item?.data); // 投票窗口
              if (item?.data?.source?.includes("生日动态")) {
                // 移除生日祝福微博
                continue;
              }
              if (item?.data?.title?.text !== "热门" && item?.data?.title?.structs?.length > 0) {
                // 移除赞过的微博 保留热门内容
                continue;
              }
              newItems.push(item);
            }
          }
        }
      }
      obj.items = newItems;
    }
  } else if (url.includes("/2/profile/dealatt") || url.includes("/2/friendships/")) {
    // 个人主页点击关注后展示菜单
    if (obj?.cards?.length > 0) {
      obj.cards = []; // 相关推荐卡片
    }
    if (obj?.toolbar_


iser等国际知名高端品牌 27。
* **连锁乐器行：** 如Swee Lee 26，这类零售商拥有更广泛的客户群体，销售产品涵盖乐器和录音设备，包括Focusrite、Shure和Rode等品牌 31。
* **全国性分销商：** 如EV Group 32 和 Danmon Asia 29 等公司，它们是大型国际品牌的进口商和分销商，拥有覆盖全国的零售网络。

#### **5.2. 渠道合作策略**

麦田品牌可以填补这些零售商产品线中的一个关键空白。尽管他们已经拥有高端专业设备，但在价格亲民的“生产型消费者”或内容创作者细分市场中，可能缺乏强有力的产品。麦田可以为他们提供一个利润率高、销量大的产品线，以吸引这个快速增长的消费群体。

合作模式可以包括：

* **批发模式：** 直接向Swee Lee或Hoang Phuc Music等零售商供货。
* **分销协议：** 与EV Group这样的全国性分销商合作，由其负责进口、物流和在更广泛的零售网络中铺货。

最初阶段，线下渠道的战略意义更多在于品牌建设和市场验证，而非主要的销售驱动力。当下的市场势头主要在线上 1，而线下零售商则服务于一个更传统、通常也更专业的客户群 27。将麦田的产品与Shure、Focusrite等知名品牌并列陈列，会产生一种“光环效应”，使麦田被视为一个严肃的竞争者，而不仅仅是廉价的线上替代品。这种实体存在感可以反过来推动线上销售，因为消费者可能会在实体店体验产品，然后在电商平台的促销活动期间完成购买。因此，第二阶段线下扩张的目标不仅是销售额，更是为了获得品牌的合法性和市场的认可。向这些潜在合作伙伴进行初步接触时，应采取战略性的方式，重点推广一组精选的核心SKU，并强调麦田品牌能为他们带来增量的客户群体，而非直接与他们现有的高端产品线竞争。

#### **表2：潜在B2B合作伙伴与分销商概览**

| 合作伙伴名称 | 类型 | 主要地点 | 代理品牌 (竞争/互补) | 联系信息 | 战略契合度/备注 |
| :---- | :---- | :---- | :---- | :---- | :---- |
| **Hoang Phuc Music** | 专业音频零售商 | 胡志明市 | Pioneer DJ, Neumann, KRK, JBL 25 | 0906


位。

本报告研究工作借鉴汽标委智能网联汽车分标委发布的《先进驾驶辅助系统（ADAS）标准制定路线图研究报告》中国交通事故深入研究（CIDAS）数据的分析结果，结合专家问卷和行业调研，综合考虑现有的智能网联汽车标准以及标准的基础支撑作用、行业的现实需求，提出智能网联汽车网联功能与应用标准制定路线图建议方案。

本研究报告的总体制定原则为：1）以国家发展战略作为指导；2）以行业技术调研作为基础；3）以标准化基本原则为前提。

主要研究内容如下：

## 一、分析国内外汽车网联技术发展战略、应用状态和标准法规进展情况。

欧美日等主要汽车产业国家及地区自上世纪80年代起陆续发布支持智能网联汽车的相关战略；联合国、国际标准化组织和美国汽车工程师协会等国际、区域标准化组织也在进行智能网联汽车相关的标准研究、制定与协调，但汽车网联技术应用相关标准基本处于空白阶段。中国通过《中国制造2025》等一系列重要文件促进智能网联汽车相关产业发展；与此同时，全国汽车标准化技术委员会智能网联汽车分技术委员会成立网联功能与应用标准工作组，专业负责汽车网联技术相关标准的研究与制定工作。

## 二、明确汽车网联技术范畴和应用场景

通过研究汽车网联技术的术语和定义，分析汽车网联技术的功能要素，明确智能网联汽车网联功能与应用技术范畴，确定网联技术应用场景。

面向汽车网联技术未来发展方向，充分考虑汽车网联技术的应用场景，提出仿真测试与实际道路测试相结合的试验方法和功能评价方法。

## 三、分析各类网联功能场景的技术应用状态

以汽车网联技术应用及标准化需求问卷调研分析结果作为本研究报告编写的主要参考依据，按照一定的评价方式及优先级原则确定


ating class is used
 * @op_class: Operating class
 * @chan: Channel number
 * Returns: Frequency in MHz or -1 if the specified channel is unknown
 */
int ieee80211_chan_to_freq(const char *country, u8 op_class, u8 chan)
{
	int freq;

	if (country_match(us_op_class_cc, country)) {
		freq = ieee80211_chan_to_freq_us(op_class, chan);
		if (freq > 0)
			return freq;
	}

	if (country_match(eu_op_class_cc, country)) {
		freq = ieee80211_chan_to_freq_eu(op_class, chan);
		if (freq > 0)
			return freq;
	}

	if (country_match(jp_op_class_cc, country)) {
		freq = ieee80211_chan_to_freq_jp(op_class, chan);
		if (freq > 0)
			return freq;
	}

	if (country_match(cn_op_class_cc, country)) {
		freq = ieee80211_chan_to_freq_cn(op_class, chan);
		if (freq > 0)
			return freq;
	}

	return ieee80211_chan_to_freq_global(op_class, chan);
}

int ieee80211_is_dfs(int freq)
{
	/* TODO: this could be more accurate to better cover all domains */
	return (freq >= 5260 && freq <= 5320) || (freq >= 5500 && freq <= 5700);
}

static int is_11b(u8 rate)
{
	return rate == 0x02 || rate == 0x04 || rate == 0x0b || rate == 0x16;
}

int supp_rates_11b_only(struct ieee802_11_elems *elems)
{
	int num_11b = 0, num_others = 0;
	int i;

	if (elems->supp_rates == NULL && elems->ext_supp_rates == NULL)
		return 0;

	for (i = 0; elems->supp_rates && i < elems->supp_rates_len; i++) {
		if (is_11b(elems->supp_rates[i]))
			num_11b++;
		else
			num_others++;
	}

	for (i = 0; elems->ext_supp_rates && i < elems->ext_supp_rates_len;
	     i++) {
		if (is_11b(elems->ext_supp_rates[i]))
			num_11b++;
		else
			num_others++;
	}

	return num_11b > 0 && num_others == 0;
}

const char * fc2str(u16 fc)
{
	u16 stype = WLAN_FC_GET_STYPE(fc);
#define C2S(x) case x: return #x;

	switch (WLAN_FC_GET_TYPE(fc)) {
	case WLAN_FC_TYPE_MGMT:
		switch (stype) {
		C2S(WLAN_FC_STYPE_ASSOC_REQ)
		C2S(WLAN_FC_STYPE_ASSOC_RESP)
		C2S(WLAN_FC_STYPE_REASSOC_REQ)
		C2S(WLAN_FC_STYPE_REASSOC_RESP)
		C2S(WLAN_FC_STYPE_PROBE_REQ)
		C2S(WLAN_FC_STYPE_PROBE_RESP)
		C2S(WLAN_FC_STYPE_BEACON)
		C2S(WLAN_FC_STYPE_ATIM)
		C2S(WLAN_FC_STYPE_DISASSOC)
		C2S(WLAN_FC_STYPE_AUTH)
		C2S(WLAN_FC_STYPE_DEAUTH)
		C2S(WLAN_FC_STYPE_ACTION)
		}
		break;
	case WLAN_FC_TYPE_CTRL:
		switch (stype) {
		C2S(WLAN_FC_STYPE_PSPOLL)
		C2S(WLAN_FC_STYPE_RTS)
		C2S(WLAN_FC_STYPE_CTS)
		C2S(WLAN_FC_STYPE_ACK)
		C2S(WLAN_FC_STYPE_CFEND)
		C2S(WLAN_FC_STYPE_CFENDACK)
		}
		break;
	case WLAN_FC_TYPE_DATA:
		switch (stype) {
		C2S(WLAN_FC_STYPE_DATA)
		C2S(WLAN_FC_STYPE_DATA_CFACK)
		C2S(WLAN_FC_STYPE_DATA_CFPOLL)
		C2S(WLAN_FC_STYPE_DATA_CFACKPOLL)
		C2S(WLAN_FC_STYPE_NULLFUNC)
		C2S(WLAN_FC_STYPE_CFACK)
		C2S(WLAN_FC_STYPE_CFPOLL)
		C2S(WLAN_FC_STYPE_CFACKPOLL)
		C2S(WLAN_FC_STYPE_QOS_DATA)
		C2S(WLAN_FC_STYPE_QOS_DATA_CFACK)
		C2S(WLAN_FC_STYPE_QOS_DATA_CFPOLL)
		C2S(WLAN_FC_STYPE_QOS_DATA_CFACKPOLL)
		C2S(WLAN_FC_STYPE_QOS_NULL)
		C2S(WLAN_FC_STYPE_QOS_CFPOLL)
		C2S(WLAN_FC_STYPE_QOS_CFACKPOLL)
		}
		break;
	}
	return "WLAN_FC_TYPE_UNKNOWN";
#undef C2S
}

int mb_ies_info_by_ies(struct mb_ies_info *info, const u8 *ies_buf,
		       size_t ies_len)
{
	os_memset(info, 0, sizeof(*info));

	while (ies_buf && ies_len >= 2 &&
	       info->nof_ies < MAX_NOF_MB_IES_SUPPORTED) {
		size_t len = 2 + ies_buf[1];

		if (len > ies_len) {
			wpa_hexdump(MSG_DEBUG, "Truncated IEs",
				    ies_buf, ies_len);
			return -1;
		}

		if (ies_buf[0] == WLAN_EID_MULTI_BAND) {
			wpa_printf(MSG_DEBUG, "MB IE of %zu bytes found", len);
			info->ies[info->nof_ies].ie = ies_buf + 2;
			info->ies[info->nof_ies].ie_len = ies_buf[1];
			info->nof_ies++;
		}

		ies_len -= len;
		ies_buf += len;
	}

	return 0;
}

struct wpabuf * mb_ies_by_info(struct mb_ies_info *info)
{
	struct wpabuf *mb_ies = NULL;

	WPA_ASSERT(info != NULL);

	if (info->nof_ies) {
		u8 i;
		size_t mb_ies_size = 0;

		for (i = 0; i < info->nof_ies; i++)
			mb_ies_size += 2 + info->ies[i].ie_len;

		mb_ies = wpabuf_alloc(mb_ies_size);
		if (mb_ies) {
			for (i = 0; i < info->nof_ies; i++) {
				wpabuf_put_u8(mb_ies, WLAN_EID_MULTI_BAND);
				wpabuf_put_u8(mb_ies, info->ies[i].ie_len);
				wpabuf_put_data(mb_ies,
						info->ies[i].ie,
						info->ies[i].ie_len);
			}
		}
	}

	return mb_ies;
}


# -*- coding: utf-8 -*-

import json
import asyncio
import time
import uuid
import re

from fastapi import FastAPI, Header, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import StreamingResponse
from typing import Optional
from config import Config
from knowledge_base import KnowledgeBase
from llm import LLM
from models import ChatCompletionRequest
from validators import chunk_judge_relevant, chat_judge_relevant
from logging_setup import logger
from prompts import build_rewrite_prompt, ANSWER_PROMPT_TEMPLATE, CONTEXT_REWRITE_PROMPT_TEMPLATE

def generate_stream_response(
    request_id, model, step, message, references=None, content=None, finish_reason=None
):
    """
    用于生成流式返回的 JSON 数据。
    """
    return {
        "id": request_id,
        "model": model,
        "choices": [
            {
                "index": 0,
                "delta": {
                    "role": None,
                    "content": content,
                    "reference": references if references else [],
                    "step": step,
                    "message": message
                },
                "finish_reason": finish_reason
            }
        ]
    }

def deduplicate_chunks(chunks):
    """
    去重切片，切片的text相同则视为是一个，只保留每组中得分最高的切片。
    """
    retrieved_chunks_map = {}

    for chunk in chunks:
        chunk_copy = chunk.copy()
        score_value = chunk_copy.pop('score', None)

        chunk_key = frozenset(chunk_copy.items())

        if chunk_key not in retrieved_chunks_map:
            retrieved_chunks_map[chunk_key] = {
                'score': score_value,
                **chunk_copy
            }
        else:
            existing_score = retrieved_chunks_map[chunk_key]['score']
            if score_value > existing_score:
                retrieved_chunks_map[chunk_key] = {
                    'score': score_value,
                    **chunk_copy
                }

    deduplicated_chunks = []
    for chunk_key, chunk_data in retrieved_chunks_map.items():
        restored_chunk = {
            'score': chunk_data['score'],
            **dict(chunk_key)
        }
        deduplicated_chunks.append(restored_chunk)

    return deduplicated_chunks

async def rewrite_contextual_references(llm: LLM, model: str, original_question: str, history_messages: list) -> str:
    """
    使用 LLM 对用户原始问题中的上下文指代进行重写，输出调整后的完整明确问题。
    若失败，直接返回原问题。
    """
    history_str = "\n".join([f"{msg['role']}：{msg['content']}" for msg in history_messages])
    context_rewrite_prompt = CONTEXT_REWRITE_PROMPT_TEMPLATE.format(
        history=history_str,
        question=original_question
    )
    try:
        response = await llm.chat_no_stream(
            model,
            [
                {"role": "system", "content": "你是一个上下文问题重写助手。"},
                {"role": "user", "content": context_rewrite_prompt}
            ],
            temperature=0.3
        )
        adjusted_question = response["choices"][0]["message"]["content"].strip()
        return adjusted_question if adjusted_question else original_question
    except Exception as e:
        logger.warning(f"上下文指代重写失败: {e}")
        return original_question

async def rewrite_question(llm: LLM, model: str, original_question: str, question_rewrite_num: int) -> list:
    """
    使用 LLM 将用户的原始问题进行扩展，返回新的问题列表。
    根据 question_rewrite_num 生成对应数量的重写问法。
    如果 JSON 解析失败或内容不符合预期，会进行3次重试，全部重试失败则只返回原问题。
    """
    rewrite_prompt = build_rewrite_prompt(original_question, question_rewrite_num)
    max_retry = 3

    for attempt in range(1, max_retry + 1):
        logger.info(f"第 {attempt} 次尝试重写扩展...")
        rewrite_response = await llm.chat_no_stream(
            model,
            [
                {"role": "system", "content": "你是一个问题扩展助手，可以帮我对原问题进行扩展。"},
                {"role": "user", "content": rewrite_prompt}
            ],
            temperature=0.7
        )

        content = rewrite_response["choices"][0]["message"]["content"]
        logger.info(f"重写扩展结果（尝试 {attempt}）: {content}")
        content_without_backticks = re.sub(r"```(json)?(.*?)```", r"\2", content, flags=re.DOTALL).strip()

        try:
            expansions = json.loads(content_without_backticks)
            if not isinstance(expansions, list):
                raise ValueError("解析结果不是列表。")

            questions = [item["question"] for item in expansions if "question" in item]
            if len(questions) < question_rewrite_num:
                raise ValueError("重


Forecast:
      'Patchy fog between 9pm and 2am, then patchy fog and a slight chance ',
  },
  {
    number: 7,
    name: 'Thursday',
    startTime: '2018-10-11T06:00:00-04:00',
    endTime: '2018-10-11T18:00:00-04:00',
    isDaytime: true,
    temperature: 74,
    temperatureUnit: 'F',
    temperatureTrend: null,
    windSpeed: '5 to 12 mph',
    windDirection: 'SW',
    icon:
      'https://api.weather.gov/icons/land/day/rain_showers,50/tsra,60?size=medium',
    shortForecast: 'Showers And Thunderstorms Likely',
    detailedForecast: 'A chance of rain showers and patchy fog before noon',
  },
  {
    number: 8,
    name: 'Thursday Night',
    startTime: '2018-10-11T18:00:00-04:00',
    endTime: '2018-10-12T06:00:00-04:00',
    isDaytime: false,
    temperature: 57,
    temperatureUnit: 'F',
    temperatureTrend: null,
    windSpeed: '9 mph',
    windDirection: 'W',
    icon:
      'https://api.weather.gov/icons/land/night/tsra,60/tsra,40?size=medium',
    shortForecast: 'Light Rain Likely',
    detailedForecast:
      'Rain likely and a chance of thunderstorms. Mostly cloudy, with a low around 57. Chance of precipitation is 60%.',
  },
  {
    number: 9,
    name: 'Friday',
    startTime: '2018-10-12T06:00:00-04:00',
    endTime: '2018-10-12T18:00:00-04:00',
    isDaytime: true,
    temperature: 63,
    temperatureUnit: 'F',
    temperatureTrend: null,
    windSpeed: '8 mph',
    windDirection: 'NW',
    icon: 'https://api.weather.gov/icons/land/day/rain,30/rain?size=medium',
    shortForecast: 'Chance Light Rain',
    detailedForecast:
      'A chance of rain. Partly sunny, with a high near 63. Chance of precipitation is 30%.',
  },
  {
    number: 10,
    name: 'Friday Night',
    startTime: '2018-10-12T18:00:00-04:00',
    endTime: '2018-10-13T06:00:00-04:00',
    isDaytime: false,
    temperature: 45,
    temperatureUnit: 'F',
    temperatureTrend: null,
    windSpeed: '5 to 8 mph',
    windDirection: 'N',
    icon: 'https://api.weather.gov/icons/land/night/rain?size=medium',
    shortForecast: 'Slight Chance Light Rain',
    detailedForecast:
      'A slight chance of rain. Partly cloudy, with a low around 45.',
  },
  {
    number: 11,
    name: 'Saturday',
    startTime: '2018-10-13T06:00:00-04:00',
    endTime: '2018-10-13T18:00:00-04:00',
    isDaytime: true,
    temperature: 55,
    temperatureUnit: 'F',
    temperatureTrend: null,
    windSpeed: '8 mph',
    windDirection: 'N',
    icon: 'https://api.weather.gov/icons/land/day/rain/sct?size=medium',
    shortForecast: 'Slight Chance Light Rain then Mostly Sunny',
    detailedForecast:
      'A slight chance of rain before 8am. Mostly sunny, with a high near 55.',
  },
  {
    number: 12,
    name: 'Saturday Night',
    startTime: '2018-10-13T18:00:00-04:00',
    endTime: '2018-10-14T06:00:00-04:00',
    isDaytime: false,
    temperature: 40,
    temperatureUnit: 'F',
    temperatureTrend: null,
    win


FF0000UL, 16);
            x = Bits.BitPermuteStep(x, 0x0000FF000000FF00UL, 8);
            x = Bits.BitPermuteStep(x, 0x00F000F000F000F0UL, 4);
            x = Bits.BitPermuteStep(x, 0x0C0C0C0C0C0C0C0CUL, 2);
            x = Bits.BitPermuteStep(x, 0x2222222222222222UL, 1);
            return x;
        }

        internal static uint Shuffle2(uint x)
        {
            // "shuffle" (twice) low half to even bits and high half to odd bits
            x = Bits.BitPermuteStep(x, 0x00AA00AAU, 7);
            x = Bits.BitPermuteStep(x, 0x0000CCCCU, 14);
            x = Bits.BitPermuteStep(x, 0x00F000F0U, 4);
            x = Bits.BitPermuteStep(x, 0x0000FF00U, 8);
            return x;
        }

        internal static uint Unshuffle(uint x)
        {
            // "unshuffle" even bits to low half and odd bits to high half
            x = Bits.BitPermuteStep(x, 0x22222222U, 1);
            x = Bits.BitPermuteStep(x, 0x0C0C0C0CU, 2);
            x = Bits.BitPermuteStep(x, 0x00F000F0U, 4);
            x = Bits.BitPermuteStep(x, 0x0000FF00U, 8);
            return x;
        }

        internal static ulong Unshuffle(ulong x)
        {
            // "unshuffle" even bits to low half and odd bits to high half
            x = Bits.BitPermuteStep(x, 0x2222222222222222UL, 1);
            x = Bits.BitPermuteStep(x, 0x0C0C0C0C0C0C0C0CUL, 2);
            x = Bits.BitPermuteStep(x, 0x00F000F000F000F0UL, 4);
            x = Bits.BitPermuteStep(x, 0x0000FF000000FF00UL, 8);
            x = Bits.BitPermuteStep(x, 0x00000000FFFF0000UL, 16);
            return x;
        }

        internal static uint Unshuffle2(uint x)
        {
            // "unshuffle" (twice) even bits to low half and odd bits to high half
            x = Bits.BitPermuteStep(x, 0x0000FF00U, 8);
            x = Bits.BitPermuteStep(x, 0x00F000F0U, 4);
            x = Bits.BitPermuteStep(x, 0x0000CCCCU, 14);
            x = Bits.BitPermuteStep(x, 0x00AA00AAU, 7);
            return x;
        }
    }
}