0:
		return "High10"
	case AVCProfileHigh10Intra:
		return "High10Intra"
	case AVCProfileHigh422:
		return "High422"
	case AVCProfileHigh422Intra:
		return "High422Intra"
	case AVCProfileHigh444:
		return "High444"
	case AVCProfileHigh444Predictive:
		return "High444Predictive"
	case AVCProfileHigh444Intra:
		return "High444Intra"
	default:
		return "Forbidden"
	}
}

// @doc Annex A Profiles and levels, ISO_IEC_14496-10-AVC-2003.pdf, page 207.
type AVCLevel uint8

const (
	AVCLevel_1  = 10
	AVCLevel_11 = 11
	AVCLevel_12 = 12
	AVCLevel_13 = 13
	AVCLevel_2  = 20
	AVCLevel_21 = 21
	AVCLevel_22 = 22
	AVCLevel_3  = 30
	AVCLevel_31 = 31
	AVCLevel_32 = 32
	AVCLevel_4  = 40
	AVCLevel_41 = 41
	AVCLevel_5  = 50
	AVCLevel_51 = 51
)

func (v AVCLevel) String() string {
	switch v {
	case AVCLevel_1:
		return "Level_1"
	case AVCLevel_11:
		return "Level_11"
	case AVCLevel_12:
		return "Level_12"
	case AVCLevel_13:
		return "Level_13"
	case AVCLevel_2:
		return "Level_2"
	case AVCLevel_21:
		return "Level_21"
	case AVCLevel_22:
		return "Level_22"
	case AVCLevel_3:
		return "Level_3"
	case AVCLevel_31:
		return "Level_31"
	case AVCLevel_32:
		return "Level_32"
	case AVCLevel_4:
		return "Level_4"
	case AVCLevel_41:
		return "Level_41"
	case AVCLevel_5:
		return "Level_5"
	case AVCLevel_51:
		return "Level_51"
	default:
		return "Forbidden"
	}
}

// @doc ISO_IEC_14496-15-AVC-format-2012.pdf at page 16, 5.2.4.1.1 Syntax
type AVCDecoderConfigurationRecord struct {
	// It contains the profile code as defined in ISO/IEC 14496-10.
	configurationVersion uint8
	// It is a byte defined exactly the same as the byte which occurs between the
	// profile_IDC and level_IDC in a sequence parameter set (SPS), as defined in
	// ISO/IEC 14496-10.
	// @remark It's 8 bits.
	AVCProfileIndication AVCProfile
	// It contains the level code as defined in ISO/IEC 14496-10.
	profileCompatibility uint8
	// It indicates the length in bytes of the NALUnitLength field in an AVC video sample
	// or AVC parameter set sample of the associated stream minus one.
	AVCLevelIndication AVCLevel
	// It indicates the length in bytes of the NALUnitLength field in an AVC video sample
	// or AVC parameter set sample of the associated stream minus one.
	LengthSizeMinusOne uint8
	// It contains a SPS NAL unit, as specified in ISO/IEC 14496-10. SPSs shall occur in
	// order of ascending parameter set identifier with gaps being allowed.
	SequenceParameterSetNALUnits []*NALU
	// It contains a PPS NAL unit, as specified in ISO/IEC 14496-10. PPSs shall occur in
	// order of ascending parameter set identifier with gaps being allowed.
	PictureParameterSetNALUn


(
      id: json['id'] as String?,
      domain: json['domain'] as String?,
      createdAt: json['created_at'] == null
          ? null
          : DateTime.parse(json['created_at'] as String),
      history: (json['history'] as List<dynamic>?)
          ?.map((e) =>
              AdminEmailDomainBlockHistory.fromJson(e as Map<String, dynamic>))
          .toList(),
    );

Map<String, dynamic> _$$AdminEmailDomainBlockImplToJson(
        _$AdminEmailDomainBlockImpl instance) =>
    <String, dynamic>{
      'id': instance.id,
      'domain': instance.domain,
      'created_at': instance.createdAt?.toIso8601String(),
      'history': instance.history,
    };

_$AdminEmailDomainBlockHistoryImpl _$$AdminEmailDomainBlockHistoryImplFromJson(
        Map<String, dynamic> json) =>
    _$AdminEmailDomainBlockHistoryImpl(
      day: json['day'] as String?,
      accounts: json['accounts'] as String?,
      uses: json['uses'] as String?,
    );

Map<String, dynamic> _$$AdminEmailDomainBlockHistoryImplToJson(
        _$AdminEmailDomainBlockHistoryImpl instance) =>
    <String, dynamic>{
      'day': instance.day,
      'accounts': instance.accounts,
      'uses': instance.uses,
    };
import 'package:freezed_annotation/freezed_annotation.dart';

part 'admin_email_domain_block.freezed.dart';
part 'admin_email_domain_block.g.dart';

/// Represents an email domain that cannot be used to sign up.
@freezed
class AdminEmailDomainBlock with _$AdminEmailDomainBlock {
  const factory AdminEmailDomainBlock({
    /// The ID of the EmailDomainBlock in the database.
    @JsonKey(name: 'id') final String? id,

    /// The email domain that is not allowed to be used for signups.
    @JsonKey(name: 'domain') final String? domain,

    /// When the email domain was disallowed from signups.
    @JsonKey(name: 'created_at') final DateTime? createdAt,

    /// Usage statistics for given days (typically the past week).
    @JsonKey(name: 'history') final List<AdminEmailDomainBlockHistory>? history,
  }) = _AdminEmailDomainBlock;

  factory AdminEmailDomainBlock.fromJson(final Map<String, dynamic> json) =>
      _$AdminEmailDomainBlockFromJson(json);
}

@freezed
class AdminEmailDomainBlockHistory with _$AdminEmailDomainBlockHistory {
  const factory AdminEmailDomainBlockHistory({
    /// UNIX timestamp on midnight of the given day.
    @JsonKey(name: 'day') final String? day,

    /// The counted accounts signup attempts using that email domain within
    /// that day.
    @JsonKey(name: 'accounts') final String? accounts,

    /// The counted IP signup attempts of that email domain within that day.
    @JsonKey(name: 'uses') final String? uses,
  }) = _AdminEmailDomainBlockHistory;

  factory AdminEmailDomainBlockHistory.fromJson(
    final Map<String, dynamic> json,
  ) =>
      _$AdminEmailDomainBlockHistoryFromJson(json);
}
// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'notification.dart';

// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************

_$NotificationImpl _$$NotificationImplFromJson(Map<String, dynamic> json) =>
    _$NotificationImpl(
      id: json['id'] as String?,
      type: $enumDecodeNullable(_$NotificationTypeEnumMap, json['type']),
      createdAt: json['created_at'] == null
          ? null
          : DateTime.parse(json['created_at'] as String),
      account: json['account'] == null
          ? null
          : Account.fromJson(json['account'] as Map<String, dynamic>),
      status: json['status'] == null
          ? null
          :


gions = mMBP->mRegions.begin();
	regions += startIndex;

	const PxU32 writeCount = PxMin(size, bufferSize);
	for(PxU32 i=0;i<writeCount;i++)
	{
		const MBP_AABB& box = regions[i].mBox;
		box.decode(userBuffer[i].mRegion.mBounds);
		if(regions[i].mBP)
		{
			PX_ASSERT(userBuffer[i].mRegion.mBounds.isValid());
			userBuffer[i].mRegion.mUserData	= regions[i].mUserData;
			userBuffer[i].mActive			= true;
			userBuffer[i].mOverlap			= regions[i].mOverlap!=0;
			userBuffer[i].mNbStaticObjects	= regions[i].mBP->mNbStaticBoxes;
			userBuffer[i].mNbDynamicObjects	= regions[i].mBP->mNbDynamicBoxes;
		}
		else
		{
			userBuffer[i].mRegion.mBounds.setEmpty();
			userBuffer[i].mRegion.mUserData	= NULL;
			userBuffer[i].mActive			= false;
			userBuffer[i].mOverlap			= false;
			userBuffer[i].mNbStaticObjects	= 0;
			userBuffer[i].mNbDynamicObjects	= 0;
		}
	}
	return writeCount;
}

PxU32 BroadPhaseMBP::addRegion(const PxBroadPhaseRegion& region, bool populateRegion, const PxBounds3* boundsArray, const PxReal* contactDistance)
{
	return mMBP->addRegion(region, populateRegion, boundsArray, contactDistance);
}

bool BroadPhaseMBP::removeRegion(PxU32 handle)
{
	return mMBP->removeRegion(handle);
}

void BroadPhaseMBP::update(PxcScratchAllocator* scratchAllocator, const BroadPhaseUpdateData& updateData, physx::PxBaseTask* /*continuation*/)
{
	PX_CHECK_AND_RETURN(scratchAllocator, "BroadPhaseMBP::update - scratchAllocator must be non-NULL \n");
	PX_UNUSED(scratchAllocator);

	setUpdateData(updateData);

	update();
	postUpdate();
}

static PX_FORCE_INLINE void computeMBPBounds(MBP_AABB& aabb, const PxBounds3* PX_RESTRICT boundsXYZ, const PxReal* PX_RESTRICT contactDistances, const BpHandle index)
{
	const PxBounds3& b = boundsXYZ[index];
	const Vec4V contactDistanceV = V4Load(contactDistances[index]);
	const Vec4V inflatedMinV = V4Sub(V4LoadU(&b.minimum.x), contactDistanceV);
	const Vec4V inflatedMaxV = V4Add(V4LoadU(&b.maximum.x), contactDistanceV);	// PT: this one is safe because we allocated one more box in the array (in BoundsArray::initEntry)

	PX_ALIGN(16, PxVec4) boxMin;
	PX_ALIGN(16, PxVec4) boxMax;
	V4StoreA(inflatedMinV, &boxMin.x);
	V4StoreA(inflatedMaxV, &boxMax.x);

	const PxU32* PX_RESTRICT min = PxUnionCast<const PxU32*, const PxF32*>(&boxMin.x);
	const PxU32* PX_RESTRICT max = PxUnionCast<const PxU32*, const PxF32*>(&boxMax.x);
	//Avoid min=max by enforcing the rule that mins are even and maxs are odd.
	aabb.mMinX = IntegerAABB::encodeFloatMin(min[0])>>1;
	aabb.mMinY = IntegerAABB::encodeFloatMin(min[1])>>1;
	aabb.mMinZ = IntegerAABB::encodeFloatMin(min[2])>>1;
	aabb.mMaxX = (IntegerAABB::


rc36m9ku9q", 80.388575971, -90.288872042},
        {0x93297a039a93a59a, "kdnrn0wukfkt", -32.516042172, 31.562214258},
        {0x6cf06df2e4dead8d, "ems6vwr4vuqs", 31.455726413, -27.52186955},
        {0x2b9e719ba0fb0a2c, "5fg736x0zd52", -73.946088456, -6.614816418},
        {0xc255e62ec410f57c, "s9bydcq423ur", 10.993591498, 23.683793482},
        {0x6c51bf34309a3e77, "ej8vye1hm8z7", 31.965455902, -43.658048809},
        {0x3c8e13bb96252aa5, "7k717fwq4npb", -20.859228243, -29.357775728},
        {0xb939c89e43e25ed6, "r4wwj7k3w9ge", -29.864692216, 144.377458163},
        {0xf7d21d556ced50ef, "yz91upcdxp8f", 87.538159059, 125.334392921},
        {0x31ae299876f50144, "66r2m63qyn0n", -32.286253046, -68.322000451},
        {0xa006e675c65fe35a, "n03fdxf6czjp", -88.111214042, 92.573972812},
        {0x5e271cedb6527765, "csmjtveqb9vq", 69.904428535, -105.211572717},
        {0x4d02ad868ec2f065, "9n1bv1nfscs6", 33.887766769, -132.309856636},
        {0x65f355b8de7ad134, "drtpcf6ygc8m", 43.563331995, -71.63790784},
        {0xe69b873c24252528, "wuesfg144nkk", 26.164317953, 128.794189681},
        {0xbb5e3ad50e139028, "reg3pp8f2f82", -23.688870344, 162.378992366},
        {0xa5cdb40a20c45ecf, "nr6v82j0sjgd", -48.251835977, 105.135216927},
        {0x7aead0abc2f94810, "gcpe1by2z541", 51.156608662, -0.617334514},
        {0xab5b29de63ec4e9c, "peekmrm3xj79", -69.525318319, 162.308540512},
        {0x02cd9d7af7b82357, "0c6tuyrrr0jp", -81.922429662, -142.515371171},
        {0xff3d8c26dffbae24, "zwyss9qzzfr2", 83.767974637, 166.847990992},
        {0x73f0bfe1bf863bbf, "fgsczsezhsxv", 65.021063174, -49.235369018},
        {0x091bbbf5b03304ec, "14evrxeh6d2f", -74.972707649, -129.392744289},
        {0xabba52717a9afa26, "pfx54wcumcx2", -75.372339689, 178.706273141},
        {0x559dbd8169ab7160, "bqfvv0c9pesq", 83.983803514, -164.66069843},
        {0x5e0


      const node = tree && openNode(p, name);
      const len = s.length;
      let l = p;
      let sub: Result<any>;
      while (l < len) {
        sub = stop.parse(s, l, res);
        l = sub[1];
        sub = ps.parse(s, l, res);
        if (!sub.length) {
          l++;
        } else {
          break;
        }
      }
      res[0] = s.substring(p, l);
      res[1] = l;
      if (node) closeNode(node, tree, res);
      return res;
    }
  );
}

/**
 * Creates a parser that reads a string of at least one character until another parser matches. The target
 * parser is only tried when a given sigil character is reached.
 * @param chars - the sigil chars to try the parser
 * @param parser - the parser that signals the end of the match
 */
export function read1ToParser(chars: string, parser: Parser<any>, name?: NodeName): IParser<string> {
  let ps: IParser<any>;
  const stop = readTo(chars, true);
  return lazy(
    () => ps = unwrap(parser),
    function parse(s: string, p: number, res: Success<string>, tree?: ParseNode) {
      const node = tree && openNode(p, name);
      const len = s.length;
      let l = p;
      let sub: Result<any>;
      while (l < len) {
        sub = stop.parse(s, l, res);
        l = sub[1];
        sub = ps.parse(s, l, res);
        if (!sub.length) {
          l++;
        } else {
          break;
        }
      }
      if (l === p) return fail(p, detailedFail & 1 && `expected at least one character`, name);
      res[0] = s.substring(p, l);
      res[1] = l;
      if (node) closeNode(node, tree, res);
      return res;
    }
  );
}
// Imports
import socketIoClient from 'socket.io-client';

import { IDetails, IMove, IRow } from './types';
import { Game } from './game';

window.onload = () => {
  // Starts socket
  const socket = socketIoClient('http://localhost:5000');
  let game: Game;

  // Links to the room name and join button
  const input = document.getElementById('room') as HTMLInputElement;
  const join = document.getElementById('join') as HTMLButtonElement;

  if (input !== null && join !== null) {
    join.onclick = (): void => {
      // Checks if the room name meets requirements
      const room = input.value;
      if (room.length < 3) {
        alert('Must have a room name greater than or equal to 3 chars');
        return;
      }
      // Sends the room join command to the server
      socket.emit('roomJoin', room);
    };

    // Recieved whenever someone joins the room
    socket.on('joinedRoom', (details: IDetails) => {
      console.log(details);
    });

    // Creates game instance when server says it is ready
    socket.on('startGame', (rows: IRow[]) => {
      game = new Game(rows, rows[0].room, socket);
    });

    // Sets your board up for playing and applies the move if it exists
    socket.on('turn', (move: IMove | undefined) => {
      if (move) {
        game.applyMove(move);
      }
      game.enableRows();
    });
  }
};
import { scrollIntoView } from "seamless-scroll-polyfill";
import debounce from "lodash/debounce";

// Check if one (fixed) element is inside another in the viewport.
function elementInsideBox(element1: Element, element2: Element) {
  const [box1, box2] = [element1, element2].map((element) =>
    element.getBoundingClientRect()
  );

  return box1.y + box1.height >= box2.y;
}

// Debounce


s::Bounded, SaturatedConversion};

	use frame_benchmarking::{benchmarks, whitelisted_caller, account, impl_benchmark_test_suite};

	fn assert_last_event<T: Config>(generic_event: <T as Config>::Event) {
		let events = frame_system::Pallet::<T>::events();
		let system_event: <T as frame_system::Config>::Event = generic_event.into();
		// compare to the last event record
		let frame_system::EventRecord { event, .. } = &events[events.len() - 1];
		assert_eq!(event, &system_event);
	}

	fn fill_winners<T: Config>(lease_period_index: LeasePeriodOf<T>) {
		let auction_index = AuctionCounter::get();
		let minimum_balance = CurrencyOf::<T>::minimum_balance();

		for n in 1 ..= SlotRange::SLOT_RANGE_COUNT as u32 {
			let owner = account("owner", n, 0);
			let worst_validation_code = T::Registrar::worst_validation_code();
			let worst_head_data = T::Registrar::worst_head_data();
			CurrencyOf::<T>::make_free_balance_be(&owner, BalanceOf::<T>::max_value());

			assert!(T::Registrar::register(
				owner,
				ParaId::from(n),
				worst_head_data,
				worst_validation_code
			).is_ok());
		}

		T::Registrar::execute_pending_transitions();

		for n in 1 ..= SlotRange::SLOT_RANGE_COUNT as u32 {
			let bidder = account("bidder", n, 0);
			CurrencyOf::<T>::make_free_balance_be(&bidder, BalanceOf::<T>::max_value());

			let slot_range = SlotRange::n((n - 1) as u8).unwrap();
			let (start, end) = slot_range.as_pair();

			assert!(Auctions::<T>::bid(
				RawOrigin::Signed(bidder).into(),
				ParaId::from(n),
				auction_index,
				lease_period_index + start.into(), // First Slot
				lease_period_index + end.into(), // Last slot
				minimum_balance.saturating_mul(n.into()), // Amount
			).is_ok());
		}
	}

	benchmarks! {
		where_clause { where T: pallet_babe::Config }

		new_auction {
			let duration = T::BlockNumber::max_value();
			let lease_period_index = LeasePeriodOf::<T>::max_value();
			let origin = T::InitiateOrigin::successful_origin();
		}: _(RawOrigin::Root, duration, lease_period_index)
		verify {
			assert_last_event::<T>(RawEvent::AuctionStarted(
				AuctionCounter::get(),
				LeasePeriodOf::<T>::max_value(),
				T::BlockNumber::max_value(),
			).into());
		}

		// Worst case scenario a new bid comes in which kicks out an existing bid for the same slot.
		bid {
			// Create a new auction
			let duration = T::BlockNumber::max_value();
			let lease_period_index = LeasePeriodOf::<T>::zero();
			Auctions::<T>::new_auction(RawOrigin::Root.into(), duration, lease_period_index)?;

			let para = ParaId::from(0);
			let new_para = ParaId::from(1);

			// Register the paras
			let owner = account("owner", 0, 0);
			CurrencyOf::<T>::make_free_balance_be(&owner, BalanceOf::<T>::max_value());
			let worst_head_data = T::Registrar::worst_head_data();
			let worst_validation_code = T::Registrar::wor


     * 912  表单信息不存在
     * </pre>
     *
     * @param conf
     * @param form
     * @return
     * @throws CruxException 表单获取失败
     * @throws CruxExemption 实例构建失败
     * @throws ClassCastException 不是 Data 的子类
     */
    public static Data getInstance(String conf, String form) throws CruxException {
        String name = Data.class.getName()+":"+ conf +":"+ form;
        Core   core = Core. getInstance ();
        Data   inst =(Data) core.get(name);
        if (null != inst) {
            return  inst;
        }

        Map    dict = FormSet.getInstance(conf).getForm( form );
        String clsn = Dict.getValue(dict , "", "@", "db-class");
        if (clsn.isEmpty() || clsn.equals(Data.class.getName())) {
            inst  = new Data( conf, form );
                    core.set( name, inst );
            return  inst;
        }

        Class type ;
        try {
              type = Class.forName (clsn);
        } catch (ClassNotFoundException e) {
            throw new CruxExemption(821, "Can not find class by name '"+clsn+"'." );
        }
        try {
            Method func = type.getMethod("getInstance", new Class [] {String.class, String.class});
            int    modi = func.getModifiers();
            if (! Modifier.isPublic(modi)
            ||  ! Modifier.isStatic(modi)
            ||  type != func.getDeclaringClass()) {
                throw new NoSuchMethodException();
            }
            return (Data) func.invoke(null, new Object[] {conf, form});
        } catch (NoSuchMethodException ex) {
            return (Data) Core.getInstance (type);
        } catch (InvocationTargetException ex) {
            Throwable ta = ex.getCause(  );
            // 调用层级过多, 最好直接抛出
            if (ta instanceof StackOverflowError) {
                throw (StackOverflowError) ta;
            }
            throw new CruxExemption(ta, 824, "Can not call '"+clsn+".getInstance'");
        } catch ( IllegalArgumentException ex) {
            throw new CruxExemption(ex, 824, "Can not call '"+clsn+".getInstance'");
        } catch (   IllegalAccessException ex) {
            throw new CruxExemption(ex, 824, "Can not call '"+clsn+".getInstance'");
        }
    }

    public Table getTable() throws CruxException {
        String tn = Synt.declare(getParams().get("db-table"), "data");
        if ("".equals(tn) || "none".equals(tn)) {
            return null;
        }
        return DB.getInstance("matrix").getTable(tn);
    }

    public Model getModel() throws CruxException {
        String tn = Synt.declare(getParams().get("db-table"), "data");
        if ("".equals(tn) || "none".equals(tn)) {
            return null;
        }
        return DB.getInstance("matrix").getModel(tn);
    }

    /**
     * 获取参数
     * 另一方法非常可能需要覆盖,
     * 故提供此方法以便从基类调,
     * 未设时抛出 NullPointerException
     * @return
     */
    protected final Map gotParams() {
        return  super . getParams();
    }

    /**
     * 获取字段
     * 另一方法非常可能需要覆盖,
     * 故提供此方法以便从基类调,
     * 未设时抛出 NullPointerException
     * @return
     */
    protected final Map gotFields()


        {
            if (FlyoutHandler.HasInitialized)
            {
                var flyoutWindow = FlyoutHandler.Instance.OnScreenFlyoutWindow;
                flyoutWindow?.Show();

                Task.Run(() =>
                {
                    Thread.Sleep(1000);
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        if (flyoutWindow != null && !flyoutWindow.IsOpen)
                        {
                            flyoutWindow?.Hide();
                        }
                    });
                });
            }
        }

        ~RenderLoopFix()
        {
            SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch;
            SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged;
        }
    }
}


氏征(棘球蚴病的一种听诊体征)",
"santonic acid":"[化] 山道年酸\\n[医] 山道酸",
"santonica":"[植]蒿属植物, (尤指)山道年草, 山道年花",
"santonin":"n. 散道宁(蛔虫驱除剂), 蛔蒿素",
"santonin test":"[医] 山道年试验(检肝抗毒效力)",
"santoninate":"山道年酸酯",
"santonine":"n. 山道宁[蛔虫驱除剂]",
"santoninic acid":"[化] 山道年酸\\n[医] 山道年酸",
"santoninoxime":"山道年肟",
"santonism":"[医] 山道年中毒",
"santonous acid":"[化] 山道年亚酸",
"santophen":"散多吩",
"Santopour":"散陶普尔(一种降凝添加剂)",
"santoquin":"[医] 甲氯喹啉(抗疟药)",
"santorine":"杂伊利石",
"Santorini":"n. 圣托里尼岛（希腊城市）",
"Santorini's canal":"[医] 胰副管",
"Santorini's cartilages":"[医] 桑托里尼氏软骨, 小角状软骨",
"Santorini's caruncula major":"[医] 桑托里尼氏大肉阜, 十二指肠乳头",
"Santorini's circular muscle":"[医] 尿道环行肌(尿道括约肌下方的平滑肌环行纤维)",
"Santorini's concha":"[医] 桑托里尼氏甲, 最上鼻甲",
"Santorini's duct":"[医] 桑托里尼氏管, 胰副管",
"Santorini's fissure":"[医] 桑托里尼氏裂, 外耳道软骨切迹",
"Santorini's fissures":"[医] 桑托里尼氏裂, 外耳道软骨切迹",
"Santorini's incisure":"[医] 桑托里尼氏切迹, 耳前切迹",
"Santorini's labyrinth":"[医] 桑托里尼氏迷路, 阴部丛",
"Santorini's muscle":"[医] 桑托里尼氏肌(笑肌,耳轮切迹肌,尿道环行肌)",
"Santorini's plexus":"[医] 桑托里尼氏丛(前列腺丛,前列腺静脉丛,阴部静脉丛,下颌神经丛)",
"Santorini's tubercle":"[医] 桑托里尼氏结节, 小角结节",
"Santorini's tubercles":"[医] 桑托里尼氏结节, 小角结节",
"Santorini's veins":"[医


8.2205,13.7264 28.4705,13.7264 C28.7205,13.7264 28.8455,13.8514 28.8455,14.1014 L28.8455,16.992 L30.5018,16.367 L30.5018,13.2107 C30.5018,12.9607 30.6242,12.8357 30.869,12.8357 C31.1138,12.8357 31.2362,12.9607 31.2362,13.2107 L31.2362,16.117 L31.8924,15.8826 C31.9028,15.8722 31.9445,15.867 32.0174,15.867 C32.1112,15.867 32.2101,15.9035 32.3143,15.9764 C32.3976,16.0597 32.4393,16.1535 32.4393,16.2576 L32.4393,17.4607 C32.4393,17.6482 32.3455,17.7732 32.158,17.8357 L31.2362,18.1482 L31.2362,21.3514 L31.8924,21.1326 C31.9028,21.1222 31.9445,21.117 32.0174,21.117 C32.1112,21.117 32.2101,21.1587 32.3143,21.242 C32.3976,21.3149 32.4393,21.4035 32.4393,21.5076 L32.4393,22.7264 C32.4393,22.893 32.3455,23.0076 32.158,23.0701 L31.2362,23.4295 L31.2362,26.5701 M30.5018,18.4451 L28.8455,19.0232 L28.8455,22.2264 L30.5018,21.6482 L30.5018,18.4451 "/>
<path class="KeySig" d="M26.2358,19.0697 C26.2358,19.3197 26.1135,19.4447 25.8687,19.4447 C25.6239,19.4447 25.5015,19.3197 25.5015,19.0697 L25.5015,16.179 L23.8452,16.804 L23.8452,19.9603 C23.8452,20.2103 23.7202,20.3353 23.4702,20.3353 C23.2202,20.3353 23.0952,20.2103 23.0952,19.9603 L23.0952,17.054 L22.4702,17.2884 C22.4598,17.2988 22.4077,17.304 22.314,17.304 C22.2098,17.304 22.1187,17.265 22.0405,17.1868 C21.9624,17.1087 21.9233,17.0176 21.9233,16.9134 L21.9233,15.7103 C21.9233,15.5124 22.0067,15.3874 22.1733,15.3353 L23.0952,15.0228 L23.0952,11.8197 L22.4702,12.0384 C22.4598,12.0488 22.4077,12.054 22.314,12.054 C22.2098,12.054 22.1187,12.015 22.0405,11.9368 C21.9624,11.8587 21.9233,11.7676 21.9233,11.6634 L21.9233,10.4447 C21.9233,10.2676 22.0067,10.153 22.1733,10.1009 L23.0952,9.74153 L23.0952,6.6009 C23.0952,6.3509 23.2202,6.2259 23.4702,6.2259 C23.7202,6.2259 23.8452,6.3509 23.


rinter,
        hidden=True,
    )
    parser.display_info.AddFormat(profiles_printer.PROFILES_PRINTER_FORMAT)
    parser.display_info.AddFormat(
        "table("
        "acceleratorType,"
        "modelAndModelServerInfo.modelName,"
        "modelAndModelServerInfo.modelServerName,"
        "modelAndModelServerInfo.modelServerVersion,"
        "resourcesUsed.acceleratorCount,"
        "performanceStats.outputTokensPerSecond,"
        "performanceStats.ntpotMilliseconds"
        ")"
    )

  def Run(self, args):
    client = util.GetClientInstance(base.ReleaseTrack.ALPHA)
    messages = util.GetMessagesModule(base.ReleaseTrack.ALPHA)

    try:
      request = messages.GkerecommenderAcceleratorsListRequest(
          modelName=args.model,
          modelServerName=args.model_server,
          modelServerVersion=args.model_server_version,
          performanceRequirements_maxNtpotMilliseconds=args.max_ntpot_milliseconds,
          performanceRequirements_cost_pricingModel=args.pricing_model,
      )
      if args.target_cost_per_million_output_tokens:
        units, nanos = decimal_to_amount(
            args.target_cost_per_million_output_tokens
        )
        request.performanceRequirements_cost_costPerMillionNormalizedOutputTokens_units = (
            units
        )
        request.performanceRequirements_cost_costPerMillionNormalizedOutputTokens_nanos = (
            nanos
        )
      if args.target_cost_per_million_input_tokens:
        units, nanos = decimal_to_amount(
            args.target_cost_per_million_input_tokens
        )
        request.performanceRequirements_cost_costPerMillionInputTokens_units = (
            units
        )
        request.performanceRequirements_cost_costPerMillionInputTokens_nanos = (
            nanos
        )
      response = client.accelerators.List(request)
      self.comments = response.comments
      if response:
        return response
      else:
        return []
    except exceptions.Error as e:
      log.error(f"An error has occurred: {e}")
      log.status.Print(f"An error has occurred: {e}")
      return []


defined behavior.
func (w FormatLogWriter) Close() {
	close(w.logRecord)
}
/**
 * Copyright 2019 gd Author. All rights reserved.
 * Author: Chuck1024
 */

package dlog

import (
	"fmt"
	"github.com/chuck1024/gd/runtime/gl"
	"os"
	"strings"
)

var (
	Global Logger
)

func init() {
	Global = NewDefaultLogger(DEBUG)
}

// Wrapper for (*Logger).LoadConfiguration
func LoadConfiguration(filename string) {
	Global.LoadConfiguration(filename)
}

func LoadConfigurationByXml(xc *XmlLoggerConfig) {
	Global.LoadConfigurationByXml(xc)
}

// Wrapper for (*Logger).AddFilter
func AddFilter(name string, lvl Level, writer LogWriter) {
	Global.AddFilter(name, lvl, writer)
}

// Wrapper for (*Logger).Close (closes and removes all logwriters)
func Close() {
	Global.Close()
}

func Crash(args ...interface{}) {
	if len(args) > 0 {
		Global.intLogf(CRITICAL, strings.Repeat(" %v", len(args))[1:], args...)
		panic(fmt.Sprintf(strings.Repeat(" %v", len(args))[1:], args...))
	} else {
		panic(args)
	}
}

func IsEnabledFor(lvl Level) bool {
	return Global.IsEnabledFor(lvl)
}

// Logs the given message and crashes the program
func Crashf(format string, args ...interface{}) {
	Global.intLogf(CRITICAL, format, args...)
	Global.Close() // so that hopefully the messages get logged
	panic(fmt.Sprintf(format, args...))
}

// Compatibility with `log`
func Exit(args ...interface{}) {
	if len(args) > 0 {
		Global.intLogf(ERROR, strings.Repeat(" %v", len(args))[1:], args...)
	}
	Global.Close() // so that hopefully the messages get logged
	os.Exit(0)
}

// Compatibility with `log`
func Exitf(format string, args ...interface{}) {
	Global.intLogf(ERROR, format, args...)
	Global.Close() // so that hopefully the messages get logged
	os.Exit(0)
}

// Compatibility with `log`
func Stderr(args ...interface{}) {
	if len(args) > 0 {
		Global.intLogf(ERROR, strings.Repeat(" %v", len(args))[1:], args...)
	}
}

// Compatibility with `log`
func Stderrf(format string, args ...interface{}) {
	Global.intLogf(ERROR, format, args...)
}

// Compatibility with `log`
func Stdout(args ...interface{}) {
	if len(args) > 0 {
		Global.intLogf(INFO, strings.Repeat(" %v", len(args))[1:], args...)
	}
}

// Compatibility with `log`
func Stdoutf(format string, args ...interface{}) {
	Global.intLogf(INFO, format, args...)
}

func GetLevel() string {
	var ret string
	for tag, filter := range Global {
		ret = ret + tag + ":" + filter.Level.String() + ","
	}
	return ret
}

func SetLevel(lvl int) {
	level := Level(lvl)
	for _, filter := range Global {
		filter.Level = level
	}
}

// Send a log message manually
// Wrapper for (*Logger).Log
func Log(lvl Level, source, message string) {
	Global.Log(lvl, source, message)
}

// Send a formatted log message easily
// Wrapper for (*Logger).Logf
func Logf(lvl Level, format string, args ...interface{}) {
	Global.intLogf(lvl, format, args...)
}

// Send a closure log message
// Wrapper for (*Logger).Logc
func


formHeight
            }
        }
    }

    private fun handleMoveEvent(v: View, event: MotionEvent) {
        when(v.id) {
            R.id.textureView -> {
                if (touchId == R.id.textureView) handleTouch(event)
            }
            //左键监听，单击关闭，双击全屏
            R.id.leftView -> {
                if (touchId == R.id.leftView) leftGestureDetector.onTouchEvent(event)
            }
            R.id.rightView -> {
                if (touchId == R.id.rightView) rightGestureDetector.onTouchEvent(event)
            }
            R.id.middleView -> {
                if (touchId == R.id.middleView) {
                    val dx = event.rawX - lastX
                    val dy = event.rawY - lastY

                    handleMove(dx, dy)
                    handleHangUp(event.rawX, event.rawY)
                    lastX = event.rawX
                    lastY = event.rawY

                    middleGestureDetector.onTouchEvent(event)
                }
            }
            R.id.leftScale -> {
                if (touchId == R.id.leftScale && canScale) {
                    val dx = event.rawX - lastX
                    val dy = event.rawY - lastY
                    handleScaleLeft(dx, dy)
                    lastX = event.rawX
                    lastY = event.rawY
                }
            }
            R.id.rightScale -> {
                if (touchId == R.id.rightScale && canScale) {
                    val dx = event.rawX - lastX
                    val dy = event.rawY - lastY
                    handleScaleRight(dx, dy)
                    lastX = event.rawX
                    lastY = event.rawY
                }
            }
        }
    }

    private fun handleUpEvent(v: View, event: MotionEvent) {
        when (v.id) {
            R.id.textureView -> {
                if (touchId == R.id.textureView) handleTouch(event)
            }
            R.id.middleView -> {
                middleGestureDetector.onTouchEvent(event)
            }
            //左键监听，单击关闭，双击全屏
            R.id.leftView -> {
                if (touchId == R.id.leftView) leftGestureDetector.onTouchEvent(event)
            }
            //右按键返回
            R.id.rightView -> {
                if (touchId == R.id.rightView) rightGestureDetector.onTouchEvent(event)
            }
            R.id.leftScale, R.id.rightScale -> {
                notifyWindowScale()
            }
        }
        touchId = -1
    }

    //指本次与缩放前的比例
    private var mScale = 1f
    private var beforeScaleHeight = freeformHeight

    /**
     * 缩放处理
     * 优化 尝试更加流畅的缩放动画 q220904.8
     */
    private fun handleScaleLeft(dx: Float, dy: Float) {
        //缩小
        if (dx > 0 && dy < 0) {
            val tempHeight = freeformHeight + dy
            val tempWidth = freeformWidth - dx
            //在尺寸内
            if (tempHeight > MIN_HEIGHT && tempHeight <= maxFreeformScreenSize && tempWidth > MIN_WIDTH && tempWidth < realScreenWidth) {
                //优化 尝试更加跟手的缩放操作 q220904.6
                val maxMove = max(abs(dx), abs(dy)).roundToInt()
                freeformHeight -= maxMove
                freeformWidth = (freeformHeight * config.widthHeightRatio).roundToInt()

                if (freeformHeight > beforeScaleHeight) {
                    beforeScaleHeight = freeformHeight
                    notifyWindowScale()
                } else {
                    mScale = freeformHeight / beforeScaleHeight.toFloat()
                    binding.root.scaleX = mScale
                    binding.root.scaleY = mScale
                }
            }
        }
        //放大
        else if (dx < 0 && dy > 0) {
            val tempHeight = f


                model.FullName = currentUser.FullName;
                model.EmailAddress = currentUser.Email;
                model.PhoneNumber = currentUser.PhoneNumber;
            }

            return View(model);
        }

        [HttpPost("contact")]
        public IActionResult SubmitContact(ContactVm model)
        {
            if (ModelState.IsValid)
            {
                var contact = new Models.Contact()
                {
                    FullName = model.FullName,
                    PhoneNumber = model.PhoneNumber,
                    EmailAddress = model.EmailAddress,
                    Address = model.Address,
                    ContactAreaId = model.ContactAreaId,
                    Content = model.Content
                };

                _contactRepository.Add(contact);
                _contactRepository.SaveChanges();

                return View("SubmitContactResult", model);
            }

            model.ContactAreas = GetContactArea();

            return View("Index", model);
        }

        private IList<ContactAreaVm> GetContactArea()
        {
            var getContactAreaName = _contentLocalizationService.GetLocalizationFunction<ContactArea>();
            var categories = _contactAreaRepository.Query()
                .Where(x => !x.IsDeleted)
                .Select(x => new ContactAreaVm()
                {
                    Id = x.Id,
                    Name = getContactAreaName(x.Id, nameof(x.Name), x.Name)
                })
                .ToList();

            return categories;
        }
    }
}


stWeekdaysShort;
    utils_hooks__hooks.normalizeUnits        = normalizeUnits;
    utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;

    var _moment = utils_hooks__hooks;

    return _moment;

}));/***
 * Contains basic SlickGrid editors.
 * @module Editors
 * @namespace Slick
 */

(function ($) {
  // register namespace
  $.extend(true, window, {
    "Slick": {
      "Editors": {
        "Text": TextEditor,
        "Integer": IntegerEditor,
		"Float": FloatEditor,
        "Date": DateEditor,
        "YesNoSelect": YesNoSelectEditor,
        "Checkbox": CheckboxEditor,
        "PercentComplete": PercentCompleteEditor,
        "LongText": LongTextEditor
      }
    }
  });

  function TextEditor(args) {
    var $input;
    var defaultValue;
    var scope = this;

    this.init = function () {
      $input = $("<INPUT type=text class='editor-text' />")
          .appendTo(args.container)
          .bind("keydown.nav", function (e) {
            if (e.keyCode === $.ui.keyCode.LEFT || e.keyCode === $.ui.keyCode.RIGHT) {
              e.stopImmediatePropagation();
            }
          })
          .focus()
          .select();
    };

    this.destroy = function () {
      $input.remove();
    };

    this.focus = function () {
      $input.focus();
    };

    this.getValue = function () {
      return $input.val();
    };

    this.setValue = function (val) {
      $input.val(val);
    };

    this.loadValue = function (item) {
      defaultValue = item[args.column.field] || "";
      $input.val(defaultValue);
      $input[0].defaultValue = defaultValue;
      $input.select();
    };

    this.serializeValue = function () {
      return $input.val();
    };

    this.applyValue = function (item, state) {
      item[args.column.field] = state;
    };

    this.isValueChanged = function () {
      return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
    };

    this.validate = function () {
      if (args.column.validator) {
        var validationResults = args.column.validator($input.val());
        if (!validationResults.valid) {
          return validationResults;
        }
      }

      return {
        valid: true,
        msg: null
      };
    };

    this.init();
  }

  function IntegerEditor(args) {
    var $input;
    var defaultValue;
    var scope = this;

    this.init = function () {
      $input = $("<INPUT type=text class='editor-text' />");

      $input.bind("keydown.nav", function (e) {
        if (e.keyCode === $.ui.keyCode.LEFT || e.keyCode === $.ui.keyCode.RIGHT) {
          e.stopImmediatePropagation();
        }
      });

      $input.appendTo(args.container);
      $input.focus().select();
    };

    this.destroy = function () {
      $input.remove();
    };

    this.focus = function () {
      $input.focus();
    };

    this.loadValue = function (item) {
      defaultValue = item[args.column.field];
      $input.val(defaultValue);
      $input[0].defaultValue = defaultValue;
      $input.select();
    };

    this.serializeValue = function () {
      return parseInt($input.val(), 10) || 0;
    };

    this.applyValue = function (item, state) {
      item[args.column.field] = state;
    };

    this.isValueChanged = function () {
      return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
    };

    this.validate = function () {


| :-------------------------------------: |
| [pose_cspnext_m_udp](/configs/wholebody_2d_keypoint/topdown_heatmap/coco-wholebody/cspnext-m_udp_8xb64-210e_coco-wholebody-256x192.py) |  256x192   |  0.687  |  0.735  |  0.680  |  0.763  |  0.697  |  0.755  |  0.460  |  0.543  |  0.567   |  0.641   | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/cspnext-m_udp-coco-wholebody_pt-in1k_210e-256x192-320fa258_20230123.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/cspnext-m_udp-coco-wholebody_pt-in1k_210e-256x192-320fa258_20230123.json) |
# 🎉 Phase 3-4 완전 구현 완료!

## ✅ 새로 추가된 API 엔드포인트들

### 🏪 Phase 3: 매장/브랜드/카테고리 API
```bash
# 매장 관리
GET /api/v1/shops                    # 매장 목록 (페이지네이션)
GET /api/v1/shops/:id                # 매장 상세 정보 (기존)

# 브랜드 관리
GET /api/v1/brands                   # 브랜드 목록 (페이지네이션)
GET /api/v1/brands/:id               # 브랜드 상세 정보

# 카테고리 관리 (계층형)
GET /api/v1/categories               # 카테고리 목록 (parent_id 파라미터로 계층 탐색)
GET /api/v1/categories/:id           # 카테고리 상세 정보
```

### 🔍 Phase 3: 상품 검색 API
```bash
GET /api/v1/products/search?q=검색어&page=1&limit=20   # 상품 검색
```

### 💰 Phase 3: 쿠폰 시스템 API
```bash
GET /api/v1/coupons                  # 쿠폰 목록
GET /api/v1/coupons/:id              # 쿠폰 상세 정보
POST /api/v1/coupons/:id/use         # 쿠폰 사용
```

### 🔔 Phase 3: 알림 시스템 API
```bash
GET /api/v1/notifications/:user_id           # 사용자 알림 목록
POST /api/v1/notifications/:id/read          # 알림 읽음 처리
GET /api/v1/notifications/settings/:user_id  # 알림 설정 조회
PUT /api/v1/notifications/settings/:user_id  # 알림 설정 업데이트
```

### 📈 Phase 4: 모니터링 API (관리자)
```bash
GET /api/v1/admin/metrics/api        # API 성능 메트릭
GET /api/v1/admin/logs/errors        # 에러 로그 조회
GET /api/v1/admin/cache/stats        # 캐시 통계
GET /api/v1/admin/system/health      # 시스템 상태 점검
```

## 🛠 구현된 서비스 레이어

### NotificationService
- ✅ 알림 목록 조회 (페이지네이션)
- ✅ 알림 읽음 처리
- ✅ 알림 설정 관리 (push, email, SMS, 각종 알림 타입)
- ✅ 새 알림 생성 및 전송

### MonitoringService
- ✅ API 메트릭 수집 및 조회
- ✅ 에러 로그 관리
- �


殰', "dú"),
    ('殱', "jiān"),
    ('殲', "jiān"),
    ('殳', "shū"),
    ('殴', "ōu"),
    ('段', "duàn"),
    ('殶', "zhù"),
    ('殷', "yīn,yǐn,yān"),
    ('殸', "qìng,kēng,shēng"),
    ('殹', "yì"),
    ('殺', "shā,shài,sà,xiè,shì"),
    ('殻', "qiào"),
    ('殼', "ké,qiào"),
    ('殽', "xiáo,yáo,xiào"),
    ('殾', "xùn"),
    ('殿', "diàn"),
    ('毀', "huǐ"),
    ('毁', "huǐ,huì"),
    ('毂', "gǔ,gū"),
    ('毃', "qiāo"),
    ('毄', "jī"),
    ('毅', "yì"),
    ('毆', "ōu,kōu,qū"),
    ('毇', "huǐ"),
    ('毈', "duàn"),
    ('毉', "yī"),
    ('毊', "xiāo"),
    ('毋', "wú,móu"),
    ('毌', "guàn"),
    ('母', "mǔ,mú,wǔ,wú"),
    ('毎', "měi"),
    ('每', "měi"),
    ('毐', "ǎi"),
    ('毑', "jiě"),
    ('毒', "dú,dài"),
    ('毓', "yù"),
    ('比', "bǐ,bì,pí,pǐ"),
    ('毕', "bì"),
    ('毖', "bì"),
    ('毗', "pí"),
    ('毘', "pí"),
    ('毙', "bì"),
    ('毚', "chán"),
    ('毛', "máo,mào"),
    ('毜', "háo"),
    ('毝', "cǎi"),
    ('毞', "pí"),
    ('毟', "liě"),
    ('毠', "jiā"),
    ('毡', "zhān"),
    ('毢', "sāi"),
    ('毣', "mù,mào"),
    ('毤', "tuò"),
    ('毥', "xún,xùn"),
    ('毦', "ěr"),
    ('毧', "róng"),
    ('毨', "xiǎn"),
    ('毩', "jú"),
    ('毪', "mú"),
    ('毫', "háo"),
    ('毬', "qiú"),
    ('毭', "dòu,nuò"),
    ('毮', "shā"),
    ('毯', "tǎn"),
    ('毰', "péi"),
    ('毱', "jú"),
    ('毲', "duō"),
    ('毳', "cuì,qiāo,xiā"),
    ('毴', "bī"),
    ('毵', "sān"),
    ('毶', "sān"),
    ('毷', "mào"),
    ('毸', "sāi,suī"),
    ('毹', "shū,yú"),
    ('毺', "shū"),
    ('毻', "tuò"),
    ('毼', "hé,kě,dā"),
    ('毽', "jiàn"),
    ('毾', "tà"),
    ('毿', "sān"),
    ('氀', "lǘ,shū,yú,dōu"),
    ('氁', "mú"),
    ('氂', "máo,lí"),
    ('氃', "tóng"),
    ('氄', "rǒng,ró


s.findRespectivePage(500, [0, 50, 100])).toBe(3);
		});
	});
	describe('findPartial', () => {
		const comparisons = {
			identical: {
				source: {
					chars: {
						starts: [50, 0, 100],
						lengths: [49, 49, 1000],
					},
				},
			},
		} as ComparisonCollection;
		it(`should find the correct start position`, () => {
			expect(helpers.findPartialMatch({ start: 0, end: 25 } as Match, comparisons)).toBe(0);
			expect(helpers.findPartialMatch({ start: 25, end: 49 } as Match, comparisons)).toBe(0);
			expect(helpers.findPartialMatch({ start: 50, end: 75 } as Match, comparisons)).toBe(50);
			expect(helpers.findPartialMatch({ start: 75, end: 99 } as Match, comparisons)).toBe(50);
			expect(helpers.findPartialMatch({ start: 100, end: 500 } as Match, comparisons)).toBe(100);
			expect(helpers.findPartialMatch({ start: 500, end: 1100 } as Match, comparisons)).toBe(100);
		});
	});

	describe('findRespectiveMatch', () => {
		const type = MatchType.identical;
		const comparisons = {
			identical: {
				source: {
					chars: {
						starts: [0, 50, 100],
						lengths: [5, 5, 5],
					},
				},
				suspected: {
					chars: {
						starts: [70, 20, 120],
						lengths: [5, 5, 5],
					},
				},
			},
		} as ComparisonCollection;
		it(`should find the correct start position`, () => {
			expect(helpers.findRespectiveMatch({ type, start: 0 } as Match, comparisons, true)).toEqual([0, 70]);
			expect(helpers.findRespectiveMatch({ type, start: 50 } as Match, comparisons, true)).toEqual([50, 20]);
			expect(helpers.findRespectiveMatch({ type, start: 100 } as Match, comparisons, true)).toEqual([100, 120]);

			expect(helpers.findRespectiveMatch({ type, start: 20 } as Match, comparisons, false)).toEqual([20, 50]);
			expect(helpers.findRespectiveMatch({ type, start: 70 } as Match, comparisons, false)).toEqual([70, 0]);
			expect(helpers.findRespectiveMatch({ type, start: 120 } as Match, comparisons, false)).toEqual([120, 100]);
		});
	});
});
import {
    ModelParseContext,
    ModelSchemaParser,
    ModelTypeObject,
    ModelView
} from "../src/model";

import {
  TestClass
} from "tsunit.external/tsUnitAsync";

export class ModelParsingTest extends TestClass {
  testSimpleSchema() {
    var parser = new ModelSchemaParser();

    parser.addSchemaObject('ExampleObject', {
      type: "object",
      properties: {
        "blah": {
          type: "string",
          pattern: /^\d+$/
        },
        "tgt3": {
          type: "string",
          minLength: 3
        },
        "tlt5": {
          type: "string",
          maxLength: 5
        },
        "tlt5d": {
          type: "string",
          maxLength: 5,
          pattern: /^\d+$/
        }
      }
    });

    var type = parser.type('ExampleObject');
    var ctx = new ModelParseContext({
      blah: '123a',
      tgt3: '12',
      tlt5: '123456',
      tlt5d: '12d34'
    }, type)
    type.validate(ctx);
    this.areIdentical(4, ctx.errors.length);
    this.areIdentical('value does not match /^\\d+$/:', ctx.errors[0].msg);
    this.areIdentical('length must be at least 3:', ctx.errors[1].msg);
    this.areIdentical('length must be at most 5:', ctx.errors[2].msg);
    this.areIdentical('value does not match /^\\d+$/:', ctx.errors[3].msg);


:noInline')
  static DescriptorProto_ReservedRange create() => DescriptorProto_ReservedRange._();
  DescriptorProto_ReservedRange createEmptyInstance() => create();
  static $pb.PbList<DescriptorProto_ReservedRange> createRepeated() => $pb.PbList<DescriptorProto_ReservedRange>();
  @$core.pragma('dart2js:noInline')
  static DescriptorProto_ReservedRange getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DescriptorProto_ReservedRange>(create);
  static DescriptorProto_ReservedRange? _defaultInstance;

  @$pb.TagNumber(1)
  $core.int get start => $_getIZ(0);
  @$pb.TagNumber(1)
  set start($core.int v) { $_setSignedInt32(0, v); }
  @$pb.TagNumber(1)
  $core.bool hasStart() => $_has(0);
  @$pb.TagNumber(1)
  void clearStart() => clearField(1);

  @$pb.TagNumber(2)
  $core.int get end => $_getIZ(1);
  @$pb.TagNumber(2)
  set end($core.int v) { $_setSignedInt32(1, v); }
  @$pb.TagNumber(2)
  $core.bool hasEnd() => $_has(1);
  @$pb.TagNumber(2)
  void clearEnd() => clearField(2);
}

/// Describes a message type.
class DescriptorProto extends $pb.GeneratedMessage {
  factory DescriptorProto({
    $core.String? name,
    $core.Iterable<FieldDescriptorProto>? field,
    $core.Iterable<DescriptorProto>? nestedType,
    $core.Iterable<EnumDescriptorProto>? enumType,
    $core.Iterable<DescriptorProto_ExtensionRange>? extensionRange,
    $core.Iterable<FieldDescriptorProto>? extension,
    MessageOptions? options,
    $core.Iterable<OneofDescriptorProto>? oneofDecl,
    $core.Iterable<DescriptorProto_ReservedRange>? reservedRange,
    $core.Iterable<$core.String>? reservedName,
  }) {
    final $result = create();
    if (name != null) {
      $result.name = name;
    }
    if (field != null) {
      $result.field.addAll(field);
    }
    if (nestedType != null) {
      $result.nestedType.addAll(nestedType);
    }
    if (enumType != null) {
      $result.enumType.addAll(enumType);
    }
    if (extensionRange != null) {
      $result.extensionRange.addAll(extensionRange);
    }
    if (extension != null) {
      $result.extension.addAll(extension);
    }
    if (options != null) {
      $result.options = options;
    }
    if (oneofDecl != null) {
      $result.oneofDecl.addAll(oneofDecl);
    }
    if (reservedRange != null) {
      $result.reservedRange.addAll(reservedRange);
    }
    if (reservedName != null) {
      $result.reservedName.addAll(reservedName);
    }
    return $result;
  }
  DescriptorProto._() : super();
  factory DescriptorProto.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
  factory DescriptorProto.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DescriptorProto', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'name')
    ..pc<FieldDescriptorProto>(2, _omitFieldNames


ainernetworking/cni/pkg/types"
	nadv1 "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1"
	"github.com/onsi/ginkgo/v2"
	"github.com/onsi/gomega"
	"github.com/urfave/cli/v2"

	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	k8stypes "k8s.io/apimachinery/pkg/types"
	"k8s.io/client-go/util/retry"
	"k8s.io/klog/v2"
	"k8s.io/utils/ptr"

	ovncnitypes "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/cni/types"
	"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/config"
	egressipv1 "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/crd/egressip/v1"
	libovsdbops "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/libovsdb/ops"
	"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/nbdb"
	addressset "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/ovn/address_set"
	"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/ovn/controller/udnenabledsvc"
	libovsdbtest "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/testing/libovsdb"
	ovntypes "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/types"
	"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/util"
)

var _ = ginkgo.Describe("EgressIP Operations for user defined network with topology L3", func() {
	var (
		app     *cli.App
		fakeOvn *FakeOVN

		nodeUDNLogicalRouterIPv4  = []string{"100.65.0.2"}
		node2UDNLogicalRouterIPv4 = []string{"100.65.0.3"}
	)

	const (
		nadName1             = "nad1"
		networkName1         = "network1"
		networkName1_        = networkName1 + "_"
		node1Name            = "node1"
		v4Net1               = "20.128.0.0/14"
		v4Node1Net1          = "20.128.0.0/16"
		v4Pod1IPNode1Net1    = "20.128.0.5"
		podName3             = "egress-pod3"
		v4Pod2IPNode1Net1    = "20.128.0.6"
		v4Node1Tsp           = "100.88.0.2"
		node2Name            = "node2"
		v4Node2Net1          = "20.129.0.0/16"
		v4Node2Tsp           = "100.88.0.3"
		podName4             = "egress-pod4"
		v4Pod1IPNode2Net1    = "20.129.0.2"
		v4Pod2IPNode2Net1    = "20.129.0.3"
		eIP1Mark             = 50000
		eIP2Mark             = 50001
		userDefinedNetworkID = "2"
		//tnlKey = zoneinterconnect.BaseTransitSwitchTunnelKey + userDefinedNetworkID
		tnlKey = "16711685"
	)

	getEgressIPStatusLen := func(egressIPName string) func() int {
		return func() int {
			tmp, err := fakeOvn.fakeClient.EgressIPClient.K8sV1().EgressIPs().Get(context.TODO(), egressIPName, metav1.GetOptions{})
			gomega.Expect(err).NotTo(g


			{
				this.formatter.WriteDocumentationTag(currentLine.Substring(num));
				return true;
			}
			string str3 = currentLine.Substring(num, num1 - num + 1);
			this.formatter.WriteDocumentationTag(str3);
			string str4 = currentLine.Substring(num1 + 1);
			return this.WriteDocumentationLine(str4, false);
		}

		protected virtual void WriteEndBlock(string statementName)
		{
		}

		protected virtual void WriteEndOfStatement()
		{
		}

		protected virtual void WriteEnumValueSeparator()
		{
		}

		public virtual void WriteEscapeLiteral(string literal)
		{
			this.formatter.WriteLiteral(this.OnConvertString(literal));
		}

		protected abstract void WriteEventDeclaration(EventDefinition @event);

		public virtual void WriteException(Exception ex, IMemberDefinition member)
		{
			string[] strArray = this.exceptionFormatter.Format(ex, member.get_FullName(), member.get_DeclaringType().get_Module().get_FilePath());
			if (!this.Settings.WriteExceptionsAsComments)
			{
				this.formatter.WriteException(strArray);
				this.formatter.WriteExceptionMailToLink("mailto: JustDecompilePublicFeedback@telerik.com", strArray);
				return;
			}
			string[] array = (
				from exceptionLine in strArray
				select String.Concat(this.Language.CommentLineSymbol, " ", exceptionLine)).ToArray<string>();
			this.formatter.WriteException(array);
			string str = String.Concat(this.Language.CommentLineSymbol, " mailto: JustDecompilePublicFeedback@telerik.com");
			this.formatter.WriteExceptionMailToLink(str, strArray);
		}

		internal virtual void WriteIdentifier(string name, object identifier)
		{
			this.formatter.WriteIdentifier(name, identifier);
		}

		protected virtual void WriteInternal(IMemberDefinition member)
		{
			uint num = member.get_MetadataToken().ToUInt32();
			if (this.isStopped)
			{
				return;
			}
			this.membersStack.Push(member);
			bool flag = (!(member is TypeDefinition) ? false : member != this.CurrentType);
			if (!flag)
			{
				this.formatter.PreserveIndent(member);
			}
			try
			{
				if (this.Settings.WriteDocumentation && !flag)
				{
					int currentPosition = this.formatter.CurrentPosition;
					this.WriteDocumentation(member);
					this.AddMemberDocumentationOffsetSpan(num, currentPosition, this.formatter.CurrentPosition);
				}
				if (!(member is TypeDefinition))
				{
					int currentPosition1 = this.formatter.CurrentPosition;
					this.WriteAttributes(member, null);
					this.AddMemberAttributesOffsetSpan(num, currentPosition1, this.formatter.CurrentPosition);
					int num1 = this.formatter.CurrentPosition;
					if (member is MethodDefinition)
					{
						this.formatter.WriteMemberDeclaration(member);
						this.Write((MethodDefinition)member);
					}
					else if (member is PropertyDefinition)
					{
						this.formatter.WriteMemberDeclaration(member);
						this.Write((PropertyDefinition)member);
					}
					else if (member is EventDefinition)
					{
						this.formatter.WriteMemberDeclaration(member);
						this.Write((EventDefinition)member);
					}
					else if (member is FieldDefinition)
					{
						this.formatter.WriteMemberDeclaration(member);
						this.Write((FieldDefinition)member);
					}
					this.currentWritingInfo.MemberTokenToDecompiledCodeMap.Add(num, new OffsetSpan(num1, this.formatter.CurrentPosition - 1));
				}
				else
				{
					this.formatter.WriteMemberDeclaration(member);
					this.WriteTypeInANewWriterIfNeeded((TypeDefinition)member);
				}
			}
			catch (Exception exception1)


Company.fromJson(supplier_detail as Map<String, dynamic>);
    }
  }

  String get supplierReference => getString("supplier_reference");

  int get destinationId => getInt("destination");

  bool get isOpen => api.PurchaseOrderStatus.isNameIn(status, [
    "PENDING",
    "PLACED",
    "ON_HOLD",
  ]);

  bool get isPending =>
      api.PurchaseOrderStatus.isNameIn(status, ["PENDING", "ON_HOLD"]);

  bool get isPlaced => api.PurchaseOrderStatus.isNameIn(status, ["PLACED"]);

  bool get isFailed => api.PurchaseOrderStatus.isNameIn(status, [
    "CANCELLED",
    "LOST",
    "RETURNED",
  ]);

  Future<List<InvenTreePOLineItem>> getLineItems() async {
    final results = await InvenTreePOLineItem().list(
      filters: {"order": "${pk}"},
    );

    List<InvenTreePOLineItem> items = [];

    for (var result in results) {
      if (result is InvenTreePOLineItem) {
        items.add(result);
      }
    }

    return items;
  }

  /// Mark this order as "placed" / "issued"
  Future<void> issueOrder() async {
    // Order can only be placed when the order is 'pending'
    if (!isPending) {
      return;
    }

    showLoadingOverlay();
    await api.post("${url}issue/", expectedStatusCode: 201);
    hideLoadingOverlay();
  }

  /// Mark this order as "cancelled"
  Future<void> cancelOrder() async {
    if (!isOpen) {
      return;
    }

    showLoadingOverlay();
    await api.post("${url}cancel/", expectedStatusCode: 201);
    hideLoadingOverlay();
  }
}

class InvenTreePOLineItem extends InvenTreeOrderLine {
  InvenTreePOLineItem() : super();

  InvenTreePOLineItem.fromJson(Map<String, dynamic> json)
    : super.fromJson(json);

  @override
  InvenTreeModel createFromJson(Map<String, dynamic> json) =>
      InvenTreePOLineItem.fromJson(json);

  @override
  String get URL => "order/po-line/";

  @override
  List<String> get rolesRequired => ["purchase_order"];

  @override
  Map<String, Map<String, dynamic>> formFields() {
    return {
      "part": {
        // We cannot edit the supplier part field here
        "hidden": true,
      },
      "order": {
        // We cannot edit the order field here
        "hidden": true,
      },
      "reference": {},
      "quantity": {},
      "purchase_price": {},
      "purchase_price_currency": {},
      "destination": {},
      "notes": {},
      "link": {},
    };
  }

  @override
  Map<String, String> defaultFilters() {
    return {"part_detail": "true", "order_detail": "true"};
  }

  double get received => getDouble("received");

  bool get isComplete => received >= quantity;

  double get progressRatio {
    if (quantity <= 0 || received <= 0) {
      return 0;
    }

    return received / quantity;
  }

  String get progressString =>
      simpleNumberString(received) + " / " + simpleNumberString(quantity);

  double get outstanding => quantity - received;

  int get supplierPartId => getInt("part");

  InvenTreeSupplierPart? get supplierPart {
    dynamic detail = jsondata["supplier_part_detail"];

    if (detail == null) {
      return null;
    } else {
      return InvenTreeSupplierPart.fromJson(detail as Map<String, dynamic>);
    }
  }

  InvenTreePurchaseOrder? get purchaseOrder {
    dynamic detail = jsondata["order_detail"];

    if (detail == null) {
      return null;
    } else {
      return InvenTreePurchaseOrder.fr


oject/author">关于作者
    `;
    code4 = `
    关于作者
    `;
    tableData1 = [
        {
            key: 'url',
            value: '路由路径的 Observable 对象，是一个由路由路径中的各个部分组成的字符串数组'
        },{
            key: 'data',
            value: '一个 Observable，其中包含提供给路由的 data 对象。也包含由解析守卫（resolve guard）解析而来的值'
        },{
            key: 'paramMap',
            value: '一个 Observable，其中包含一个由当前路由的必要参数和可选参数组成的map对象。用这个 map 可以获取来自同名参数的单一值或多重值'
        },{
            key: 'queryParamMap',
            value: '一个 Observable，其中包含一个对所有路由都有效的查询参数组成的map对象。 用这个 map 可以获取来自查询参数的单一值或多重值'
        },{
            key: 'fragment',
            value: '一个适用于所有路由的 URL 的 fragment（片段）的 Observable'
        },{
            key: 'outlet',
            value: '要把该路由渲染到的 RouterOutlet 的名字。对于无名路由，它的路由名是 primary，而不是空串'
        },{
            key: 'routeConfig',
            value: '用于该路由的路由配置信息，其中包含原始路径'
        },{
            key: 'parent',
            value: '当该路由是一个子路由时，表示该路由的父级 ActivatedRoute'
        },{
            key: 'firstChild',
            value: '包含该路由的子路由列表中的第一个 ActivatedRoute'
        },{
            key: 'children',
            value: '包含当前路由下所有已激活的子路由'
        }
    ];
    tableData2 = [
        {
            key: 'NavigationStart',
            value: '本事件会在导航开始时触发'
        }, {
            key: 'RoutesRecognized',
            value: '本事件会在路由器解析完 URL，并识别出了相应的路由时触发'
        }, {
            key: 'RouteConfigLoadStart',
            value: '本事件会在 Router 对一个路由配置进行惰性加载之前触发'
        }, {
            key: 'RouteConfigLoadEnd',
            value: '本事件会在路由被惰性加载之后触发'
        }, {
            key: 'NavigationEnd',
            value: '本事件会在导航成功结束之后触发'
        }, {
            key: 'NavigationCancel',
            value: '本事件会在导航被取消之后触发。 这可能是因为在导航期间某个路由守卫返回了 false'
        }, {
            key: 'NavigationError',
            value: '这个事件会在导航由于意料之外的错误而失败时触发'
        }
    ];
    code5 = `
    constructor(router:Router) {
        router.events.subscribe(event:Event => {
            if(event instanceof NavigationStart) {
            //显示进度条
            } else if(event instanceof NavigationEnd) {
            //隐藏进度条
            }
        });
    }
    `;
}
/* eslint-disable @typescript-eslint/no-empty-function */
import { useState, useEffect } from 'react';

export const mockMediaQueryList: MediaQueryList = {
  media: '',
  matches: false,
  onchange: () => {},
  addListener: () => {},
  removeListener: () => {},
  addEventListener: () => {},
  removeEventListener: () => {},
  // eslint-disable-next-line no-unused-vars
  dispatchEvent: (_: Event) => true,


 a new value for a given key from an operator
	fn feed_value(who: AccountId, key: Key, value: Value) -> DispatchResult;
}

/// A simple trait to provide data
pub trait DataProvider<Key, Value> {
	/// Get data by key
	fn get(key: &Key) -> Option<Value>;
}

/// Extended data provider to provide timestamped data by key with no-op, and
/// all data.
pub trait DataProviderExtended<Key, TimestampedValue> {
	/// Get timestamped value by key
	fn get_no_op(key: &Key) -> Option<TimestampedValue>;
	/// Provide a list of tuples of key and timestamped value
	fn get_all_values() -> Vec<(Key, Option<TimestampedValue>)>;
}

#[allow(dead_code)] // rust cannot detect usage in macro_rules
pub fn median<T: Ord + Clone>(mut items: Vec<T>) -> Option<T> {
	if items.is_empty() {
		return None
	}

	let mid_index = items.len() / 2;

	items.sort();

	// Won't panic as guarded items not empty case.
	Some(items[mid_index as usize].clone())
}

#[macro_export]
macro_rules! create_median_value_data_provider {
	($name:ident, $key:ty, $value:ty, $timestamped_value:ty, [$( $provider:ty ),*]) => {
		pub struct $name;
		impl $crate::DataProvider<$key, $value> for $name {
			fn get(key: &$key) -> Option<$value> {
				let mut values = vec![];
				$(
					if let Some(v) = <$provider as $crate::DataProvider<$key, $value>>::get(&key) {
						values.push(v);
					}
				)*
				$crate::data_provider::median(values)
			}
		}
		impl $crate::DataProviderExtended<$key, $timestamped_value> for $name {
			fn get_no_op(key: &$key) -> Option<$timestamped_value> {
				let mut values = vec![];
				$(
					if let Some(v) = <$provider as $crate::DataProviderExtended<$key, $timestamped_value>>::get_no_op(&key) {
						values.push(v);
					}
				)*
				$crate::data_provider::median(values)
			}
			fn get_all_values() -> Vec<($key, Option<$timestamped_value>)> {
				let mut keys = sp_std::collections::btree_set::BTreeSet::new();
				$(
					<$provider as $crate::DataProviderExtended<$key, $timestamped_value>>::get_all_values()
						.into_iter()
						.for_each(|(k, _)| { keys.insert(k); });
				)*
				keys.into_iter().map(|k| (k, Self::get_no_op(&k))).collect()
			}
		}
	}
}

#[cfg(test)]
mod tests {
	use super::*;
	use sp_std::cell::RefCell;

	thread_local! {
		static MOCK_PRICE_1: RefCell<Option<u8>> = RefCell::new(None);
		static MOCK_PRICE_2: RefCell<Option<u8>> = RefCell::new(None);
		static MOCK_PRICE_3: RefCell<Option<u8>> = RefCell::new(None);
		static MOCK_PRICE_4: RefCell<Option<u8>> = RefCell::new(None);
	}

	macro_rules! mock_data_provider {
		($provider:ident, $price:ident) => {
			pub struct $provider;
			impl $provider {
				fn set_price(price: Option<u8>) {
					$price.with(|v| *v.borrow_mut() = price)
				}
			}
			impl DataProvider<u8, u8> for $provider {
				fn get(_: &u8) -> Option<u8> {
					$price.with(|v| *v.borrow())
				}
			}
			impl DataProviderExtended<u8, u8> for $provider {
				fn get_no_op(_: &u8) -> Option<u8> {
					$price.with(|v| *v.borrow())
				}
				fn get_all_values() -> Vec<(u8, Option<u8>)> {
					vec![(0, Self::get_no_op(&0


/* -*- c++ -*- ----------------------------------------------------------
   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
   https://www.lammps.org/, Sandia National Laboratories
   LAMMPS development team: developers@lammps.org

   Copyright (2003) Sandia Corporation.  Under the terms of Contract
   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
   certain rights in this software.  This software is distributed under
   the GNU General Public License.

   See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */

#ifdef BOND_CLASS
// clang-format off
BondStyle(harmonic/shift,BondHarmonicShift);
// clang-format on
#else

#ifndef LMP_BOND_HARMONIC_SHIFT_H
#define LMP_BOND_HARMONIC_SHIFT_H

#include "bond.h"

namespace LAMMPS_NS {

class BondHarmonicShift : public Bond {
 public:
  BondHarmonicShift(class LAMMPS *);
  ~BondHarmonicShift() override;
  void compute(int, int) override;
  void coeff(int, char **) override;
  double equilibrium_distance(int) override;
  void write_restart(FILE *) override;
  void read_restart(FILE *) override;
  void write_data(FILE *) override;
  double single(int, double, int, int, double &) override;
  void born_matrix(int, double, int, int, double &, double &) override;

 protected:
  double *k, *r0, *r1;

  void allocate();
};

}    // namespace LAMMPS_NS

#endif
#endif


._1a_7 span, ._3wxb ._1a_7 ._3f6a, ._3wxb ._1a_7 ._o2k, ._3wxb:hover ._1a_3 span, ._3wxb:hover ._55hu, ._3wxb:hover ._1a_7, ._3wxb:hover ._1a_7 span, ._3wxb:hover ._1a_7 ._o2k, ._3wxb:hover ._1a_7 ._3f6a, ._1a_0:hover ._1a_3 span, ._1a_0:hover ._55hu, ._1a_0:hover ._1a_7, ._1a_0:hover ._1a_7 span, ._1a_0:hover ._1a_7 ._o2k, ._1a_0:hover ._1a_7 ._3f6a, ._4vb9 ._1a_3 span, ._4vb9 ._55hu, ._4vb9 ._1a_7, ._4vb9 ._1a_7 span, ._4vb9 ._1a_7 ._3f6a, ._4vb9 ._1a_7 ._o2k, ._1hgw ._1a_7, ._1hgw ._1a_3 span, ._1hgw ._55hu, ._1hgw ._1a_7 span, ._1hgw ._1a_7 ._o2k, ._1hgw ._1a_7 ._3f6a, ._4vb9 ._1woq>div>div, li._1a_0:hover ._1woq>div>div, ._3wxb ._1woq>div>div, li._1hgw ._1woq>div>div, ._5q3i, ._zok, ._29u4, ._5eha, ._29u3, ._87x, ._u26, ._87v, ._39pj, ._1amz, ._1an0, ._5lae, ._5lad, ._5lac, ._39pk, ._4tk8, ._4tkb,  ._5q3k, ._4tkc>div b, ._5kzf, ._3g0e, ._3g07, ._1zrw, ._2qo7, ._7c_, ._7cl, ._4tjz, ._1w_0, ._1w_1, ._2l3_ ._53ij>div>div:first-of-type, ._7cm, ._4tjy, ._2-uq, ._2-up, ._2-ui, ._18kp, ._3o5t, ._3o5q, ._3o5r, ._2tga, ._y8y, ._2er9 ._1hqh ._4jq5, ._2qo9:hover, ._4867, ._5mcd, ._5mce, ._2f2w, ._1gpo, ._4uov, ._eb6, ._eb5, ._3es3, ._ipm, ._1xxq, ._3cn0, span._191t, ._1d5q, .__xn, .__xn a, ._3ion, ._3z6, ._1_ex>._1_ez:before, ._55xm, ._25ih, ._25ik, .uiTooltipX .tooltipContent, ._4g7f, ._2591, ._3r_2, ._4jtg, ._42kn, ._1xxs, ._22qy, ._3c5_, ._26z1, ._c0o, ._2-fy, ._1olv ._3cr5, ._1olv ._3cky._3cr5, ._1olv ._3ckz ._3cr5, ._1olv ._3ck-, ._1yw, ._3j4r, ._4-i0, ._79s,


def skip_lines():
    for _ in range(3):
        print()


* parameter).
     *
     * @since 2.4
     */
    @Parameter(property = "maven.surefire.debug")
    private String debugForkedProcess;

    /**
     * Kill the forked test process after a certain number of seconds. If set to 0, wait forever for the process, never
     * timing out.
     *
     * @since 2.4
     */
    @Parameter(property = "surefire.timeout")
    private int forkedProcessTimeoutInSeconds;

    /**
     * Forked process is normally terminated without any significant delay after given tests have completed.
     * If the particular tests started non-daemon Thread(s), the process hangs instead of been properly terminated
     * by {@code System.exit()}. Use this parameter in order to determine the timeout of terminating the process.
     * see the documentation:
     * http://maven.apache.org/surefire/maven-surefire-plugin/examples/shutdown.html
     * Turns to default fallback value of 30 seconds if negative integer.
     *
     * @since 2.20
     */
    @Parameter(property = "surefire.exitTimeout", defaultValue = "30")
    private int forkedProcessExitTimeoutInSeconds;

    /**
     * Stop executing queued parallel JUnit tests after a certain number of seconds.
     *

     * Example values: "3.5", "4"

     *

     * If set to 0, wait forever, never timing out.
     * Makes sense with specified {@code parallel} different from "none".
     *
     * @since 2.16
     */
    @Parameter(property = "surefire.parallel.timeout")
    private double parallelTestsTimeoutInSeconds;

    /**
     * Stop executing queued parallel JUnit tests
     * and {@code interrupt} currently running tests after a certain number of seconds.
     *

     * Example values: "3.5", "4"

     *

     * If set to 0, wait forever, never timing out.
     * Makes sense with specified {@code parallel} different from "none".
     *
     * @since 2.16
     */
    @Parameter(property = "surefire.parallel.forcedTimeout")
    private double parallelTestsTimeoutForcedInSeconds;

    @SuppressWarnings("checkstyle:linelength")
    /**
     * A list of {@literal <include>} elements specifying the tests (by pattern) that should be included in testing.
     * When not specified and when the {@code test} parameter is not specified, the default includes will be
     *

     * {@literal <includes>}
     *     {@literal <include>}**{@literal /}Test*.java{@literal </include>}
     *     {@literal <include>}**{@literal /}*Test.java{@literal </include>}
     *     {@literal <include>}**{@literal /}*Tests.java{@literal </include>}
     *     {@literal <include>}**{@literal /}*TestCase.java{@literal </include>}
     * {@literal </includes>}
     *

     * Each include item may also contain a comma-separated sub-list of items, which will be treated as multiple
     * {@literal <include>} entries.

     * Since 2.19 a complex syntax is supported in one parameter (JUnit 4, JUnit 4.7+, TestNG):
     *

     * {@literal <include>}%regex[.*[Cat|Dog].*], Basic????, !Unstable*{@literal </include>}
     * {@literal <include>}%regex[.*[Cat|Dog].*], !%regex[pkg.*Slow.*.class], pkg{@literal /}**{@literal /}*Fast*.java{@literal </include>}
     *

     *

     * This parameter is ignored if the TestNG {@code suiteXmlFiles} parameter is specified.

     *

     * Notice that these values are relative to the


dk.android.Weibo
com.weibo.sdk.android.WeiboParameters

接口分层结构

com.weibo.sdk.android.net.RequestListener
com.weibo.sdk.android.WeiboAuthListener

枚举分层结构

java.lang.Object

java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable)

com.weibo.sdk.android.net.NetStateManager.NetState

      概述
      软件包
      类
      使用
    树
      已过时
      索引
      帮助


�配置
 * Created: 2021-2-2 22:43:41
 * Author: yuzhanglong
 * Email: yuzl1123@163.com
 */

// eslint-disable-next-line no-undef
interface SerendipityEnv extends NodeJS.ProcessEnv {
  SERENDIPITY_CONFIG: 'DEVELOPMENT' | 'PRODUCTION'
  PROJECT_CONDITION: 'DEVELOPMENT' | 'PRODUCTION'
}

const PROCESS_ENV: SerendipityEnv = process.env as SerendipityEnv

// 脚手架开发者使用，判断当前是否为开发环境，便于 部分 jest 测试更加优雅地执行
export const isSerendipityDevelopment = (): boolean => PROCESS_ENV.SERENDIPITY_CONFIG === 'DEVELOPMENT'

// 生产环境
export const isProjectDevelopment = (): boolean => PROCESS_ENV.PROJECT_CONDITION === 'DEVELOPMENT'

// 开发环境
export const isProjectProduction = (): boolean => PROCESS_ENV.PROJECT_CONDITION === 'PRODUCTION'

export const setProjectDevelopment = (): void => {
  PROCESS_ENV.PROJECT_CONDITION = 'DEVELOPMENT'
}

export const setProjectProduction = (): void => {
  PROCESS_ENV.PROJECT_CONDITION = 'PRODUCTION'
}

export const setSerendipityDevelopment = (): void => {
  PROCESS_ENV.SERENDIPITY_CONFIG = 'DEVELOPMENT'
}

export const serendipityEnv = {
  isSerendipityDevelopment,
  isProjectDevelopment,
  isProjectProduction,
  setProjectDevelopment,
  setProjectProduction,
  setSerendipityDevelopment
}

// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

const {assert} = chai;

import * as Common from '../../../../../front_end/core/common/common.js';

const CharacterIdMap = Common.CharacterIdMap.CharacterIdMap;

describe('CharacterIdMap class', () => {
  it('is able to convert an element to a character', () => {
    const testElement = document.createElement('p');
    const characterIdMap = new CharacterIdMap();
    assert.strictEqual(characterIdMap.toChar(testElement), '!', 'element was not converted correctly');
  });

  it('is able to convert a character to an element', () => {
    const testElement = document.createElement('p');
    const characterIdMap = new CharacterIdMap();
    assert.strictEqual(characterIdMap.toChar(testElement), '!', 'element was not converted correctly');
    assert.strictEqual(characterIdMap.fromChar('!'), testElement, 'character was not converted correctly');
  });

  it('returns the same character when trying to convert an element that was already converted', () => {
    const testElement = document.createElement('p');
    const characterIdMap = new CharacterIdMap();
    assert.strictEqual(characterIdMap.toChar(testElement), '!', 'element was not converted correctly');
    assert.strictEqual(characterIdMap.toChar(testElement), '!', 'element was not converted correctly');
  });

  it('throws an error when trying to convert a number when there is no capacity left', () => {
    const upperLimit = 0xFFFF;
    const characterIdMap = new CharacterIdMap();
    assert.throws(() => {
      for (let index = 0; index <= upperLimit; index++) {
        const el = document.createElement('div');
        el.setAttribute('id', 'Div' + index);
        characterIdMap.toChar(el);
      }
    }, 'CharacterIdMap ran out of capacity!');
  });

  it('returns null when trying to convert  a character that does not exist in the Map', () => {
    const characterIdMap =


>_bbox.ymin()-ref_point.y())/dir.y();
            newmax = (pimpl->_bbox.ymax()-ref_point.y())/dir.y();
        } else {
            newmin = (pimpl->_bbox.ymax()-ref_point.y())/dir.y();
            newmax = (pimpl->_bbox.ymin()-ref_point.y())/dir.y();
        }
        if (to_infinity) {
            pimpl->_min = newmin;
            pimpl->_max = newmax;
        } else {
            if (newmin > pimpl->_min)
                pimpl->_min = newmin;
            if (newmax < pimpl->_max)
                pimpl->_max = newmax;
            if (pimpl->_max < pimpl->_min) {
                pimpl->_result = NO_INTERSECTION;
                return pimpl->_result;
            }
        }
        to_infinity = false;
    }
    CGAL_kernel_assertion(!to_infinity);
    if (pimpl->_max == pimpl->_min) {
        pimpl->_result = POINT;
        return pimpl->_result;
    }
    pimpl->_result = SEGMENT;
    return pimpl->_result;
}

CGAL_INLINE_FUNCTION
bool
Bbox_2_Line_2_pair::intersection(
    double &x1, double &y1, double &x2, double &y2) const
{
    if (!pimpl->_known)
        intersection_type();
    if (pimpl->_result != SEGMENT)
        return false;
    Lcart::Point_2 p1(pimpl->_line.point()
                + pimpl->_min*pimpl->_line.direction().to_vector());
    Lcart::Point_2 p2(pimpl->_line.point()
                + pimpl->_max*pimpl->_line.direction().to_vector());
    x1 = p1.x();
    y1 = p1.y();
    x2 = p2.x();
    y2 = p2.y();
    return true;
}

CGAL_INLINE_FUNCTION
bool
Bbox_2_Line_2_pair::intersection(
    double &x, double &y) const
{
    if (!pimpl->_known)
        intersection_type();
    if (pimpl->_result != POINT)
        return false;
    Lcart::Point_2 pt(pimpl->_line.point()
        + pimpl->_min*pimpl->_line.direction().to_vector());
    x = pt.x();
    y = pt.y();
    return true;
}

} //namespace CGAL


* @type {string}
   */
  public dsRua: string;

  /**
   * Número
   *
   * @type {number}
   */
  public nrEndereco: number;

  /**
   * Bairro
   *
   * @type {string}
   */
  public dsBairro: string;

  /**
   * Tipo de Endereço: 0 - Residencial; 1 - Comercial;
   *
   * @type {TipoEnderecoEnum}
   */
  public tpEndereco: TipoEnderecoEnum;

  /**
   * Usuário
   *
   * @type {Usuario}
   */
  public usuario: Usuario;

  /**
   * ID do Usuário
   *
   * @type {number}
   */
  public idUsuario: number;
}

/**
 * Inicia a entidade Endereço
 */
Endereco.init(
  {
    idEndereco: {
      field: 'id_endereco',
      allowNull: false,
      autoIncrement: true,
      primaryKey: true,
      type: DataTypes.INTEGER
    },
    dsRua: {
      field: 'ds_rua',
      type: DataTypes.STRING,
      allowNull: false
    },
    nrEndereco: {
      field: 'nr_endereco',
      type: DataTypes.INTEGER,
      allowNull: false
    },
    dsBairro: {
      field: 'ds_bairro',
      type: DataTypes.STRING,
      allowNull: false
    },
    tpEndereco: {
      field: 'tp_endereco',
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 0
    },
    idUsuario: {
      field: 'id_usuario',
      type: DataTypes.INTEGER,
      allowNull: false,
      references: {
        model: Usuario,
        key: 'id_usuario'
      }
    }
  },
  getDefaultTableConfig({ tableName: 'endereco' })
);

Endereco.belongsTo(Usuario, { foreignKey: 'idUsuario', as: 'usuario' });
Usuario.hasMany(Endereco, { foreignKey: 'idUsuario', as: 'enderecoList' });

// Endereco.sync({ alter: true });

export default Endereco;
const nums = [{ value1: 1, value2: 2 }, 6, 7, 8, 9];

const result = nums.reduce((first: any) => {
    let { value1, ...rest } = first;
    return rest;
});
result;
function identity<T>(arg: T) {
  console.log(arg);
}

identity("hello generics");
identity(20.0);
import { input, testInputPart2 } from './input';

const orbitsMap = new Map<string, string[]>();
export function orbits (input: string): void {
    const split = input.split(' ');
    // console.log(split.length);
    for (let i = 0; i < split.length; i++) {
        const orbit = split[i];
        const [a, b] = orbit.split(')');
        if (orbitsMap.get(a)) {
            orbitsMap.get(a).push(b);
        } else {
            orbitsMap.set(a, [b]);
        }
        if (!orbitsMap.get(b)) {
            orbitsMap.set(b, []);
        }
    }
}

// Test
// orbits(testInputPart2);

// Challenge
orbits(input);

const vertices = Array.from(orbitsMap.keys());

function getPath (start: string): Array<string> {
    const path = [];
    let currentVertex = start;
    while (currentVertex !== 'COM') {
        path.push(currentVertex);
        currentVertex = vertices.find((v) => orbitsMap.get(v).includes(currentVertex));
    }
    return path;
}

const orbitYOUPath = getPath('YOU');
const orbitSANPath = getPath('SAN');

console.log(orbitYOUPath.filter((v) => !orbitSANPath.includes(v)).length + orbitSANPath.filter((v) => !orbitYOUPath.includes(v)).length - 2);// Array


>

Request Body schema: application/json

tx_bytes

string <byte>

tx_bytes is the raw transaction.

mode

string

 Default:  "BROADCAST_MODE_UNSPECIFIED"

 Enum: "BROADCAST_MODE_UNSPECIFIED" "BROADCAST_MODE_BLOCK" "BROADCAST_MODE_SYNC" "BROADCAST_MODE_ASYNC"

BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC method.

BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering

BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for
the tx to be committed in a block.

BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for
a CheckTx execution response only.

BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns
immediately.

Responses

<button class="sc-EZpBh


TwinSerpentLakes = [
    (-3283.0, -19532.0),
    (-1025.0, -14423.0),
    (-5383.0, -12959.0),
    (-6837.0, -12938.0),
    (-5269.0, -10803.0),
    (-4180.0, -8806.0),
    (-7459.0, -7918.0),
    (-7314.0, -5004.0),
    (-7260.0, -1537.0),
    (-5765.0, -246.0),
    (-4722.0, 2951.0),
    (-7164.0, 4446.0),
    (-6170.0, 6072.0),
    (-5580.0, 4193.0),
    (-7627.0, 9236.0),
    (-7378.0, 11781.0),
    (-6985.0, 13468.0),
    (-6755.0, 14363.0),
    (-4186.0, 15450.0),
    (-6977.0, 16130.0),
    (-6759.0, 18749.0),
    (-7445.0, 22211.0),
    (-7418.0, 21231.0),
    (-3719.0, 19223.0),
    (-1495.0, 17257.0),
    (-225.0, 15508.0),
    (1851.0, 13088.0),
    (1284.0, 10680.0),
    (443.0, 10030.0),
    (3394.0, 12902.0),
    (3729.0, 14404.0),
    (2082.0, 19864.0),
    (4220.0, 14910.0),
    (2471.0, 13104.0),
    (5571.0, 9667.0),
    (6849.0, 8834.0),
    (3416.0, 11148.0),
    (1053.0, 10216.0),
    (5104.0, 4231.0),
    (6361.0, -336.0),
    (4964.0, -3964.0),
    (3353.0, -5873.0),
    (2477.0, -4192.0),
    (4719.0, -6641.0),
    (4520.0, -7882.0),
    (4941.0, -11123.0),
    (7176.0, -14002.0),
    (1195.0, -12633.0),
    (2525.0, -5997.0),
    (2225.0, -3778.0),
    (-900.0, -4527.0),
    (-4399.0, -7300.0),
    (-6666.0, -2761.0),
    (-4806.0, 901.0),
    (-1395.0, 3279.0),
    (-1866.0, 6989.0),
    (-3370.0, 9011.0),
    (-2252.0, 12553.0),
]

TwinSerpentLakes_outpost_path = [
    (-20183, 10506), (-18896, 12390), (-16812, 13585), (-16612, 13585)
]

TwinSerpentLakes_ids = {
    "outpost_id": 73,
    "map_id": 61
}


cwwjwmwc
  1-4 q: wmqrzpqhj
  4-7 t: tctsttlt
  13-14 h: hhhhhhhhhhhhhf
  2-3 j: jmjjjjj
  5-6 v: vvvvlv
  5-13 v: fnxvvvvvnvqvvvvvws
  16-17 l: gllllllllllgwqlll
  1-2 s: pnpfsqw
  6-13 g: ntzqggvbnwxrgskg
  5-12 k: krxmbxqbkhxlnvdxdkkq
  14-18 d: ddddddddjdddbdddddd
  4-7 z: zzzzxzzs
  15-18 d: dddddddddbddddpddh
  8-11 x: slxxxxxjkxxxrsdx
  4-6 n: nnnfzzn
  1-4 h: gslcmnhhfhvz
  1-4 d: tddqds
  2-3 c: fccp
  2-5 k: mkqrknj
  9-16 g: gpggdggwgwgwglggg
  2-5 h: hhjds
  4-5 b: zbnvld
  6-14 m: mfqmnmqtdmmzmm
  7-8 j: thvcsgjn
  1-5 x: xwjdxdqjtc
  4-17 r: fqbrqrnpslndrmjdhpjp
  4-5 c: ccccw
  5-6 v: vvvvdm
  5-12 n: nnqzjntfnnnd
  3-4 c: nccqlccq
  1-10 p: nrvvzpppqpn
  9-16 v: jvvrpvvvvvzvhhvvgz
  12-13 s: sjsslsssfxxkrssstkss
  1-3 t: vtwbh
  5-16 q: sxxfrqhqtvzbzqwg
  5-9 z: dnzlhzzzsdzz
  15-16 d: pdddddjddpkdddtdddd
  3-4 p: pplqppp
  7-9 s: scsslshsqssw
  2-3 v: vxvxv
  8-9 w: wqwwwwwgshww
  8-9 k: kkkkkkkkc
  9-10 v: vhfvvnvvtvvb
  1-12 z: zzzbzzzzzzzdzzzz
  6-7 b: bbbbbwhb
  12-13 z: zzzsvtlzzzzzz
  1-3 s: pssssssxw
  8-9 w: xwwwwwwdzw
  1-4 x: xxkxxx
  10-12 f: fffffffpffvffff
  18-19 w: wwspwwzwwqcrwwhwwww
  6-8 s: ssssstsks
  5-6 j: jjcjgm
  2-5 p: wprwpxbdkrfpmppqpd
  8-18 n: nnnnnnnnnnnnnnnnnn
  4-11 c: txncpqclrlc
  2-10 f: ffcffftfffxrxf
  1-4 t: ttttttt
  4-9 f: zdpjffffbfbl
  6-7 f: kfsffffffm
  1-4 b: bbdn
  6-12 k: kkhkkkkdqkbkjkkkl
  3-4 n: kmnn
  4-11 l: kllcllldllclll
  7-19 w: pfwdwdnkblwzgkfnfmh
  3-9 z: zzphzdnhqwlzzwzz
  15-16 h: hhhhhhhnhhhhhhhd
  1-4 l: vllll
  2-13 l: hdhvgdrlltlmjptzq
  1-3 p: njvpltppbkxpfpppp
  1-2 j: kkjv
  10-11 c:


VHT_RATE_2SS_MCS8] = DESC_RATEVHT2SS_MCS8,
	.maps[RTL_RC_VHT_RATE_2SS_MCS9] = DESC_RATEVHT2SS_MCS9,
};

static const struct pci_device_id rtl8822be_pci_ids[] = {
	{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0xB822, rtl8822be_hal_cfg)},
	{},
};

MODULE_DEVICE_TABLE(pci, rtl8822be_pci_ids);

MODULE_AUTHOR("Realtek WlanFAE	<wlanfae@realtek.com>");
MODULE_AUTHOR("Larry Finger	<Larry.Finger@lwfinger.net>");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Realtek 8822BE 802.11n PCI wireless");
MODULE_FIRMWARE("rtlwifi/rtl8822befw.bin");

module_param_named(swenc, rtl8822be_mod_params.sw_crypto, bool, 0444);
module_param_named(debug_level, rtl8822be_mod_params.debug_level, int, 0644);
module_param_named(debug_mask, rtl8822be_mod_params.debug_mask, ullong, 0644);
module_param_named(ips, rtl8822be_mod_params.inactiveps, bool, 0444);
module_param_named(swlps, rtl8822be_mod_params.swctrl_lps, bool, 0444);
module_param_named(fwlps, rtl8822be_mod_params.fwctrl_lps, bool, 0444);
module_param_named(msi, rtl8822be_mod_params.msi_support, bool, 0444);
module_param_named(dma64, rtl8822be_mod_params.dma64, bool, 0444);
module_param_named(aspm, rtl8822be_mod_params.aspm_support, int, 0444);
module_param_named(disable_watchdog, rtl8822be_mod_params.disable_watchdog,
		   bool, 0444);
MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n");
MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n");
MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n");
MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 1)\n");
MODULE_PARM_DESC(dma64, "Set to 1 to use DMA 64 (default 0)\n");
MODULE_PARM_DESC(aspm, "Set to 1 to enable ASPM (default 1)\n");
MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
MODULE_PARM_DESC(debug_mask, "Set debug mask (default 0)");
MODULE_PARM_DESC(disable_watchdog,
		 "Set to 1 to disable the watchdog (default 0)\n");

static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);

static struct pci_driver rtl8822be_driver = {
	.name = KBUILD_MODNAME,
	.id_table = rtl8822be_pci_ids,
	.probe = rtl_pci_probe,
	.remove = rtl_pci_disconnect,
	.driver.pm = &rtlwifi_pm_ops,
};

module_pci_driver(rtl8822be_driver);


";

import { ILocationState, ELocationTypes } from "../../types/store/location";

export const location: Reducer<ILocationState> = (
  state = { coords: [], address: "" },
  action
) => {
  switch (action.type) {
    case ELocationTypes.SET_LOCATION:
      return {
        ...state,
        coords: action.payload
      };

    case ELocationTypes.UPDATE_ADDRESS:
      return {
        ...state,
        address: action.payload
      };

    default:
      return state;
  }
};
interface ReplaceContent {
    [placeholder: string]: string
}

/**
 * 将内容插入到 html 模板
 *
 * @param html 要进行替换的模板 html
 * @param replaceContent 要替换的内容
 * @returns 替换完成的 html 内容
 */
export const replaceHtml = function (html: string, replaceContent: ReplaceContent = {}): string {
    // 替换所有占位符
    return Object.keys(replaceContent).reduce((html, nextKey) => {
        return html.replace(new RegExp(`{${nextKey}}`, 'g'), replaceContent[nextKey])
    }, html)
}

/**
 * 修复 js 内容缩进引起的问题
 *
 * @param html 要进行修复的 html 字符串
 * @returns 修复完成的 html 字符串
 */
export const fixRetraction = function (html: string): string {
    return html.replace(/\n/g, '')
}

/**
 * 支持的控制台显示颜色
 */
export enum Color {
    Red = 1,
    Green,
    Yellow,
    Blue
}

/**
 * 在绘制控制台信息时使用的颜色
 */
const COLOR_VALUE: { [name in Color]: string } = {
    [Color.Red]: '#ef9a9a',
    [Color.Green]: '#6b9955',
    [Color.Yellow]: '#c5c599',
    [Color.Blue]: '#8dc5e3'
}

/**
 * 给指定文本添加颜色
 *
 * @param content 要添加颜色的文本
 * @param colorName 要添加的颜色常量字符串
 * @param bolder 是否加粗
 */
export function colorful(content: string, colorName: Color = null, bold: boolean = false): string {
    const colorStyle = colorName ? `color: ${COLOR_VALUE[colorName]};` : ''
    const boldStyle = bold ? 'font-weight: bold;' : ''

    return `<text style="${[ colorStyle, boldStyle ].join(' ')}">${content}</text>`
}

/**
 * 生成控制台链接
 * @param content 要显示的内容
 * @param url 要跳转到的 url
 * @param newTab 是否在新标签页打开
 */
export function createLink(content: string, url: string, newTab: boolean = true): string {
    return `<a href="${url}" target="${newTab ? '_blank' : '_self'}">${content}</a>`
}

/**
 * 给房间内添加跳转链接
 *
 * @param roomName 添加调整链接的房间名
 * @param padEnd 要在左侧添加对齐空格的长度
 * @returns 打印在控制台上后可以点击跳转的房间名
 */
export function createRoomLink(roomName: string, padEnd: number = 0): string {
    return createLink(roomName, `https://screeps.com/a/#!/room/${Game.shard.name}/${roomName}`, false) +
        Array.from({ length: 6 - roomName.length + padEnd }, () => ' ').join('')
}

/**
 * 快捷生成单个常量帮助
 *
 * @param name 常量简称
 * @param constant 常量名
 */
export function createConst(name: string, constant: string): string {
    return `${colorful(name, Color.Green)} ${colorful(constant, Color.Blue)}


ng data and predicate registers as operands
zip2 z1.s, z2.s, p3.s
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
// CHECK-NEXT: zip2 z1.s, z2.s, p3.s
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

// Combining predicate and data registers as operands
zip2 p1.s, p2.s, z3.s
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
// CHECK-NEXT: zip2 p1.s, p2.s, z3.s
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

// --------------------------------------------------------------------------//
// Negative tests for instructions that are incompatible with movprfx

movprfx z31.d, p0/z, z6.d
zip2    z31.d, z31.d, z31.d
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov
// CHECK-NEXT: zip2    z31.d, z31.d, z31.d
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

movprfx z31, z6
zip2    z31.d, z31.d, z31.d
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov
// CHECK-NEXT: zip2    z31.d, z31.d, z31.d
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:


n{
				Region: "some region",
				Servers: ServerConfigurations{
					ServerConfiguration{
						URL: "https://some-api.api.{region}stackit.cloud",
						Variables: map[string]ServerVariable{
							"region": {
								DefaultValue: "eu01",
								EnumValues:   []string{},
							},
						},
					},
				},
			},
			regionEnvVar:    "",
			expectedServers: nil,
			isValid:         false,
		},
		{
			desc: "no_region",
			cfg: &Configuration{
				Region: "",
				Servers: ServerConfigurations{
					ServerConfiguration{
						URL: "https://some-api.api.{region}stackit.cloud",
						Variables: map[string]ServerVariable{
							"region": {
								DefaultValue: "eu01",
								EnumValues:   []string{},
							},
						},
					},
				},
			},
			regionEnvVar:    "",
			expectedServers: nil,
			isValid:         false,
		},
	} {
		t.Run(test.desc, func(t *testing.T) {
			if test.regionEnvVar != "" {
				t.Setenv("STACKIT_REGION", test.regionEnvVar)
			}

			err := ConfigureRegion(test.cfg)

			if err != nil && test.isValid {
				t.Fatalf("Test returned error on valid test case: %v", err)
			}

			if err == nil && !test.isValid {
				t.Fatalf("Test didn't return error on invalid test case")
			}

			if test.isValid && !cmp.Equal(test.cfg.Servers, test.expectedServers) {
				t.Fatalf("The server is wrong. Expected %+v, got %+v", test.expectedServers, test.cfg.Servers)
			}
		})
	}
}
package wait

import (
	"context"
	"fmt"
	"net/http"
	"testing"
	"time"

	"github.com/google/go-cmp/cmp"
	"github.com/google/go-cmp/cmp/cmpopts"
	"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
)

// Options used for comparing AsyncActionHandler
var cmpOpts = []cmp.Option{
	cmp.AllowUnexported(AsyncActionHandler[interface{}]{}),
	cmpopts.IgnoreFields(AsyncActionHandler[interface{}]{}, "checkFn"), // cmp won't compare functions well
}

func TestNew(t *testing.T) {
	checkFn := func() (waitFinished bool, res *interface{}, err error) { return true, nil, nil }
	got := New(checkFn)
	want := &AsyncActionHandler[interface{}]{
		checkFn:           checkFn,
		sleepBeforeWait:   0 * time.Second,
		throttle:          5 * time.Second,
		timeout:           30 * time.Minute,
		tempErrRetryLimit: 5,
	}

	diff := cmp.Diff(got, want, cmpOpts...)
	if diff != "" {
		t.Errorf("Data does not match: %s", diff)
	}
}

func TestSetThrottle(t *testing.T) {
	checkFn := func() (waitFinished bool, res *interface{}, err error) { return true, nil, nil }

	for _, tt := range []struct {
		desc     string
		throttle time.Duration
	}{
		{
			"base_1",
			time.Hour,
		},
		{
			"base_2",
			10 * time.Millisecond,
		},
		{
			"base_3",
			0,
		},
	} {
		t.Run(tt.desc, func(t *testing.T) {
			want := New(checkFn)
			want.throttle = tt.throttle
			got := New(checkFn)
			got.SetThrottle(tt.throttle)

			diff := cmp.Diff(got, want, cmpOpts...)
			if diff != "" {
				t.Errorf("Data does not match: %s", diff)
			}
		})
	}
}

func TestSetTimeout(t *testing.T) {
	checkFn := func()


Splitter .Bar{width:8px;background-color:#89a1b4}.gwt-VerticalSplitter .Bar{height:8px;background-color:#89a1b4}.gwt-MenuBar{background-color:#e7eff4;border:1px solid #89a1b4;cursor:default}.gwt-MenuBar .gwt-MenuItem{padding:1px 4px;font-size:8pt;cursor:default}.gwt-MenuBar .gwt-MenuItem-selected{background-color:#89a1b4}.gwt-ProgressBar-shell{border:2px solid #faf9f7;border-right:2px solid #848280;border-bottom:2px solid #848280;background-color:#aaa;height:14pt;width:300px}.gwt-ProgressBar-shell .gwt-ProgressBar-bar{background-color:#67a7e3}.gwt-ProgressBar-shell .gwt-ProgressBar-text{padding:0;margin:0;color:#fff}.gwt-PushButton{cursor:pointer}.gwt-FontImage{font-size:18px}.gwt-PushButton-up-disabled{cursor:default;filter:alpha(opacity=50);opacity:.5}.gwt-Tree .gwt-TreeItem{font-size:8pt}.gwt-Tree .gwt-TreeItem-selected{font-weight:700}.gwt-StackPanel .gwt-StackPanelItem{background-color:#e7eff4;cursor:pointer}.gwt-ButtonBar{padding:4px 0;border-collapse:separate;border-spacing:2px}.gwt-TabPanelBottom{border:1px solid #b4b4b4}.gwt-TabBar{font-weight:700}.gwt-TabBar .gwt-TabBarFirst{padding-left:3px}.gwt-TabBar .gwt-TabBarRest{padding-right:3px}.gwt-TabBar .gwt-TabBarItem{border-top:1px solid #b4b4b4;border-left:1px solid #b4b4b4;border-right:1px solid #b4b4b4;margin-right:6px;padding:4px 7px;cursor:pointer;background-color:#f4f4f4;opacity:.7}.gwt-TabBar .gwt-TabBarItem:hover{opacity:1}.gwt-TabBar .gwt-TabBarItem-selected{padding:4px 7px;margin-right:6px;cursor:default;background:transparent;opacity:1}.gwt-TabBar .gwt-TabBarItem-selected div{font-weight:700}.gwt-label label,.gwt-RadioButton label{font-weight:400}.selected-field-row{background-color:#eee}.x-modal{display:none!important}table.chart-preview td{padding:5px 0}div.bd,div.clear{width:100%}div.bd:after,div.clear:after{content:".";display:block;clear:both;visibility:hidden;height:0}.labkey-query-source{font-family:monospace;padding:5px}.labkey-force-word-break{word-wrap:break-word}.labkey-grid-row-invalid{background-color:#f7d9d5!important}.labkey-grid-cell-invalid{background-color:#f29c8d!important}td.sort-asc,td.sort-desc{text-decoration:none}a.upload-button{left:455px!important}table.labkey-tab-strip{width:100%;border-spacing:0;*border-collapse:collapse}.labkey-tab-strip{border-top:0}.labkey-tab-selected,td.labkey-tab-selected{border:1px solid #b4b4b4;border-bottom-color:#fff}.labkey-tab-selected,.labkey-tab-selected a,td.labkey-tab-selected{padding:4px 7px;background-color:#fff;color:#000;font-weight:700;white-space:nowrap}.labkey-tab-selected a{border-top:1px solid #b4b4b4;border-bottom:1px solid #


Test;

import java.io.IOException;
import java.io.InterruptedIOException;

/**
 * Unit tests for {@link ExceptionUtils}.
 */
public final class ExceptionUtilsTest {
  @Test
  public void isInterrupted() {
    assertTrue(ExceptionUtils.isInterrupted(new InterruptedException()));
    assertTrue(ExceptionUtils.isInterrupted(new InterruptedIOException()));
    assertFalse(ExceptionUtils.isInterrupted(new IOException()));
  }

  @Test
  public void containsInterruptedException() {
    Throwable t1 = new IOException(new RuntimeException(new InterruptedException()));
    Throwable t2 = new IOException(new InterruptedIOException());
    Throwable t3 = new InterruptedException();
    Throwable t4 = new IOException(new RuntimeException(new IOException()));
    assertTrue(ExceptionUtils.containsInterruptedException(t1));
    assertTrue(ExceptionUtils.containsInterruptedException(t2));
    assertTrue(ExceptionUtils.containsInterruptedException(t3));
    assertFalse(ExceptionUtils.containsInterruptedException(t4));
  }
}
/*
 * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
 * (the "License"). You may not use this work except in compliance with the License, which is
 * available at www.apache.org/licenses/LICENSE-2.0
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied, as more fully set forth in the License.
 *
 * See the NOTICE file distributed with this work for information regarding copyright ownership.
 */

package alluxio.util;

import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;

import org.junit.Test;

/**
 * Tests {@link IdUtils}.
 */
public final class IdUtilsTest {
  /**
   * Tests if output of {@link IdUtils#getRandomNonNegativeLong()} is non-negative.
   * Also tests for randomness property.
   */
  @Test
  public void getRandomNonNegativeLong() throws Exception {
    long first = IdUtils.getRandomNonNegativeLong();
    long second = IdUtils.getRandomNonNegativeLong();
    assertTrue(first >= 0);
    assertTrue(second >= 0);
    assertTrue(first != second);
  }

  /**
   * Tests if output of {@link IdUtils#createFileId(long)} is valid.
   */
  @Test
  public void createFileId() throws Exception {
    long containerId = 1;
    long fileId = IdUtils.createFileId(containerId);
    assertNotEquals(-1, fileId);
  }

  /**
   * Tests if output of {@link IdUtils#createRpcId()} is non-empty.
   * Also tests for randomness property.
   */
  @Test
  public void createRpcId() throws Exception {
    String first = IdUtils.createRpcId();
    assertTrue(!first.isEmpty());
    String second = IdUtils.createRpcId();
    assertTrue(!second.isEmpty());
    assertNotEquals(first, second);
  }
}
/*
 * FXGL - JavaFX Game Library. The MIT License (MIT).
 * Copyright (c) AlmasB (almaslvl@gmail.com).
 * See LICENSE for details.
 */
package com.almasb.fxgl.physics.box2d.dynamics.joints;

import com.almasb.fxgl.core.math.FXGLMath;
import com.almasb.fxgl.core.math.Vec2;
import com.almasb.fxgl.physics.box2d.common.JBoxSettings;
import com.almasb.fx


using System;
using System.Collections.Generic;
using System.Linq;

namespace DevsDaddy.GameShield.Core.Utils
{
    /// <summary>
    /// Enumerable Extensions
    /// </summary>
    public static class EnumerableExtensions
    {
        /// <summary>
        /// Shuffle
        /// </summary>
        /// <param name="sequence"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static IList<T> Shuffle<T>(this IEnumerable<T> sequence)
        {
            return sequence.Shuffle(new Random());
        }

        /// <summary>
        /// Shuffle
        /// </summary>
        /// <param name="sequence"></param>
        /// <param name="randomNumberGenerator"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static IList<T> Shuffle<T>(this IEnumerable<T> sequence, Random ran


, $tables = [], $sequences = [], $schemaConfig = null)`[[?]](https://github.com/oroinc/platform/tree/6.1.0/src/Oro/Bundle/MigrationBundle/Migration/Schema/SchemaWithNameGenerator.php#L25 "Oro\Bundle\MigrationBundle\Migration\Schema\SchemaWithNameGenerator")
* The `DataFixturesLoader::__construct(EntityManager $em, KernelInterface $kernel, ContainerInterface $container)`[[?]](https://github.com/oroinc/platform/tree/6.0.0/src/Oro/Bundle/MigrationBundle/Migration/Loader/DataFixturesLoader.php#L32 "Oro\Bundle\MigrationBundle\Migration\Loader\DataFixturesLoader") method was changed to `DataFixturesLoader::__construct(EntityManagerInterface $em, ContainerInterface $container)`[[?]](https://github.com/oroinc/platform/tree/6.1.0/src/Oro/Bundle/MigrationBundle/Migration/Loader/DataFixturesLoader.php#L27 "Oro\Bundle\MigrationBundle\Migration\Loader\DataFixturesLoader")
* The `AbstractEntityReferenceFixture::getObjectReferences(ObjectManager $objectManager, $className)`[[?]](https://github.com/oroinc/platform/tree/6.0.0/src/Oro/Bundle/MigrationBundle/Fixture/AbstractEntityReferenceFixture.php#L21 "Oro\Bundle\MigrationBundle\Fixture\AbstractEntityReferenceFixture") method was changed to `AbstractEntityReferenceFixture::getObjectReferences(ObjectManager $objectManager, $className)`[[?]](https://github.com/oroinc/platform/tree/6.1.0/src/Oro/Bundle/MigrationBundle/Fixture/AbstractEntityReferenceFixture.php#L19 "Oro\Bundle\MigrationBundle\Fixture\AbstractEntityReferenceFixture")

NavigationBundle
----------------
* The `TitleNode::__construct(Node $expr = null, $lineno, $tag = null)`[[?]](https://github.com/oroinc/platform/tree/6.0.0/src/Oro/Bundle/NavigationBundle/Twig/TitleNode.php#L20 "Oro\Bundle\NavigationBundle\Twig\TitleNode") method was changed to `TitleNode::__construct($expr = null, $lineno, $tag = null)`[[?]](https://github.com/oroinc/platform/tree/6.1.0/src/Oro/Bundle/NavigationBundle/Twig/TitleNode.php#L22 "Oro\Bundle\NavigationBundle\Twig\TitleNode")
* The `MenuUpdateTreeHandler::createTree(ItemInterface $root = null, $includeRoot = true)`[[?]](https://github.com/oroinc/platform/tree/6.0.0/src/Oro/Bundle/NavigationBundle/JsTree/MenuUpdateTreeHandler.php#L37 "Oro\Bundle\NavigationBundle\JsTree\MenuUpdateTreeHandler") method was changed to `MenuUpdateTreeHandler::createTree($root = null, $includeRoot = true)`[[?]](https://github.com/oroinc/platform/tree/6.1.0/src/Oro/Bundle/NavigationBundle/JsTree/MenuUpdateTreeHandler.php#L37 "Oro\Bundle\NavigationBundle\JsTree\MenuUpdateTreeHandler")
* The `AbstractNavigationHistoryItem::__construct($values = null)`[[?]](https://github.com/oroinc/platform/tree/6.0.0/src/Oro/Bundle/NavigationBundle/Entity/AbstractNavigationHistoryItem.php#L58 "Oro\Bundle\NavigationBundle\Entity\AbstractNavigationHistoryItem") method was changed to `AbstractNavigationHistoryItem::__construct($values = null)`[[?]](https://github.com/oroinc/platform/tree/6.1.0/src/Oro/Bundle/Navi