Then open **RNChat/ios/RNChat.xcworkspace** in Xcode and run the project.

## Can't build yourself?

Got troubles with building React Native code sample? Just create an issue at [Issues page](https://github.com/ConnectyCube/connectycube-reactnative-samples/issues).
# Botocove

Run a function against a selection of AWS accounts, Organizational Units (OUs)
or all AWS accounts in an organization, concurrently with thread safety.
Run in one or multiple regions.

Opinionated by default to work with the standard AWS Organization master/member
configuration from an organization master account but customisable for any
context.

- Fast
- Easy
- Dolphin Themed 🐬

Botocove is a simple decorator for functions to remove time and complexity
burden. Uses a `ThreadPoolExecutor` to run boto3 sessions against AWS accounts
concurrently.

Decorating a function in `@cove` provides a boto3 session to the decorated
Python function and runs it in every account requested, gathering all results
into a dictionary.

**Warning**: this tool gives you the potential to make dangerous changes
at scale. **Test carefully and make idempotent changes**! Please read available
arguments to understand safe experimentation with this package.

## Pre-requisites and Info

An AWS session with `sts:assumerole` and `sts:get-caller-identity` access,
and accounts that contain a IAM role with trust relationship to the Botocove
calling account.

By default, the session is expected to be in an AWS Organization Master or
a delegated Organization admin account. You can alter nearly all behaviour of
Cove with appropriate [arguments](#arguments)

Cove will not execute a function call in the account it's called from.

In the Botocove calling account the minimum IAM requirements are:

- `sts:AssumeRole` on all of the roles in the target accounts.
- `organizations:ListAccounts` to run against an AWS organization and capture
  account metadata.
- `organizations:ListChildren` to run against specific OUs.

In the organization member accounts:

- A target role that trusts the calling account - for example `AWSControlTowerExecution`
or
[`OrganizationAccountAccessRole` role](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_access.html)

See the [arguments](#arguments) section for how to change these defaults to work
with any account configuration, including running without an AWS Organization.

## Quickstart

A function written to interact with one
[boto3 session](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html)
can now be called with a `session` from every account and region required by
assuming a role in for each account - except the host account you're running
from.

For example:

A standard approach: this function takes a boto3 `session` and gets all IAM
users from a single AWS account. You would then manually run it in each account.

```python
import boto3

def get_iam_users(session):
    iam = session.client("iam", region_name="eu-west-1")
    all_users = iam.get_paginator("list_users").paginate().build_full_result()
    return all_users

def main():
    session = boto3.session.Session(profile_name="my_dev_account")
    users = get_iam_users(session)
    print(users) # A single account's IAM users
```

Now with `@cove`: a session for every account in the organization is injected
by the decorator. A safe example to run as a test!

```python
from pprint import pprint
import boto3
from botocove import cove

@cove()
def get_iam_users(session):
    iam = session.client("iam", region_name="eu-west-1


="../enums/Json_GameObjects.StarshipInitialContact.html" class="tsd-kind-icon">Starship<wbr/>Initial<wbr/>Contact

Vault<wbr/>Zone

Zone

IAttribute

IAttribute<wbr/>Choices

IAttribute<wbr/>Master

IGame<wbr/>Object

Attribute<wbr/>Value

Legend

Type alias

Type alias with type parameter

Enumeration

Interface

Settings

Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select>

Generated using TypeDoc

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


: "kubeflow.org", Version: "v1beta1", Resource: "mxjobs"}

var mxjobsKind = schema.GroupVersionKind{Group: "kubeflow.org", Version: "v1beta1", Kind: "MXJob"}

// Get takes name of the mXJob, and returns the corresponding mXJob object, and an error if there is any.
func (c *FakeMXJobs) Get(name string, options v1.GetOptions) (result *v1beta1.MXJob, err error) {
	obj, err := c.Fake.
		Invokes(testing.NewGetAction(mxjobsResource, c.ns, name), &v1beta1.MXJob{})

	if obj == nil {
		return nil, err
	}
	return obj.(*v1beta1.MXJob), err
}

// List takes label and field selectors, and returns the list of MXJobs that match those selectors.
func (c *FakeMXJobs) List(opts v1.ListOptions) (result *v1beta1.MXJobList, err error) {
	obj, err := c.Fake.
		Invokes(testing.NewListAction(mxjobsResource, mxjobsKind, c.ns, opts), &v1beta1.MXJobList{})

	if obj == nil {
		return nil, err
	}

	label, _, _ := testing.ExtractFromListOptions(opts)
	if label == nil {
		label = labels.Everything()
	}
	list := &v1beta1.MXJobList{ListMeta: obj.(*v1beta1.MXJobList).ListMeta}
	for _, item := range obj.(*v1beta1.MXJobList).Items {
		if label.Matches(labels.Set(item.Labels)) {
			list.Items = append(list.Items, item)
		}
	}
	return list, err
}

// Watch returns a watch.Interface that watches the requested mXJobs.
func (c *FakeMXJobs) Watch(opts v1.ListOptions) (watch.Interface, error) {
	return c.Fake.
		InvokesWatch(testing.NewWatchAction(mxjobsResource, c.ns, opts))

}

// Create takes the representation of a mXJob and creates it.  Returns the server's representation of the mXJob, and an error, if there is any.
func (c *FakeMXJobs) Create(mXJob *v1beta1.MXJob) (result *v1beta1.MXJob, err error) {
	obj, err := c.Fake.
		Invokes(testing.NewCreateAction(mxjobsResource, c.ns, mXJob), &v1beta1.MXJob{})

	if obj == nil {
		return nil, err
	}
	return obj.(*v1beta1.MXJob), err
}

// Update takes the representation of a mXJob and updates it. Returns the server's representation of the mXJob, and an error, if there is any.
func (c *FakeMXJobs) Update(mXJob *v1beta1.MXJob) (result *v1beta1.MXJob, err error) {
	obj, err := c.Fake.
		Invokes(testing.NewUpdateAction(mxjobsResource, c.ns, mXJob), &v1beta1.MXJob{})

	if obj == nil {
		return nil, err
	}
	return obj.(*v1beta1.MXJob), err
}

// Delete takes name of the mXJob and deletes it. Returns an error if one occurs.
func (c *FakeMXJobs) Delete(name string, options *v1.DeleteOptions) error {
	_, err := c.Fake.
		Invokes(testing.NewDeleteAction(mxjobsResource, c.ns, name), &v1beta1.MXJob{})

	return err
}

// DeleteCollection deletes a collection of objects.
func (c *FakeMXJobs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
	action := testing.NewDeleteCollectionAction(mxjobsResource, c.ns, listOptions)

	_, err := c.Fake.Invokes(action, &v1beta1.MXJobList{})
	return err
}

// Patch applies the patch and returns the patched mXJob.
func (c *


="SPKAC-FORMAT">SPKAC FORMAT

The input to the -spkac command line option is a Netscape signed public key and challenge. This will usually come from the KEYGEN tag in an HTML form to create a new private key. It is however possible to create SPKACs using openssl-spkac(1).

The file should contain the variable SPKAC set to the value of the SPKAC and also the required DN components as name value pairs. If you need to include the same component twice then it can be preceded by a number and a '.'.

When processing SPKAC format, the output is DER if the -out flag is used, but PEM format if sending to stdout or the -outdir flag is used.

EXAMPLES

Note: these examples assume that the directory structure this command assumes is already set up and the relevant files already exist. This usually involves creating a CA certificate and private key with openssl-req(1), a serial number file and an empty index file and placing them in the relevant directories.

To use the sample configuration file below the directories demoCA, demoCA/private and demoCA/newcerts would be created. The CA certificate would be copied to demoCA/cacert.pem and its private key to demoCA/private/cakey.pem. A file demoCA/serial would be created containing for example "01" and the empty index file demoCA/index.txt.

Sign a certificate request:

openssl ca -in req.pem -out newcert.pem

Sign an SM2 certificate request:

openssl ca -in sm2.csr -out sm2.crt -md sm3 \
        -sigopt "distid:1234567812345678" \
        -vfyopt "distid:1234567812345678"

Sign a certificate request, using CA extensions:

openssl ca -in req.pem -extensions v3_ca -out newcert.pem

Generate a CRL

openssl ca -gencrl -out crl.pem

Sign several requests:

openssl ca -infiles req1.pem req2.pem req3.pem

Certify a Netscape SPKAC:

openssl ca -spkac spkac.txt

A sample SPKAC file (the SPKAC line has been truncated for clarity):

SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5
CN=Steve Test
emailAddress=steve@openssl.org
0.OU=OpenSSL Group
1.OU=Another Group

A sample configuration file with the relevant sections for this command:

[ ca ]
default_ca      = CA_default            # The default ca section

[ CA_default ]

dir            = ./demoCA              # top dir
database       = $dir/index.txt        # index file.
new_certs_dir  = $dir/newcerts         # new certs dir

certificate    = $dir/cacert.pem       # The CA cert
serial         = $dir/serial           # serial no file
#rand_serial    = yes                  # for random serial#'s
private_key    = $dir/private/cakey.pem# CA private key

default_days   = 365                   # how long to certify for
default_crl_days= 30                   # how long before next CRL
default_md     = md5                   # md to use

policy         = policy_any            # default policy
email_in_dn    = no                    # Don't add the email into cert DN

name_opt       = ca_default            #


 true;
  }
};

export interface ThreadRepository {
  getById(id: string): Promise<ThreadEntity>;
  getAllThreads(): Promise<Array<ThreadEntity>>;
  save(thread: ThreadEntity): Promise<void>;
}
/**
 * Return this from any 'resolve' function. It allows us to set either data/error based on the outcome
 * of the actual back end call.
 */
// export interface ResolvedValue<T> {
//   data?: T;
export class ResolvedValue<T> {
  // data?: T
  // error?: any;

  public data?: T
  public error?: any;

  constructor(dataIn: T, errorIn: Error = null) {
    this.data = dataIn;
    this.error = errorIn;
  }

  hasError(): boolean {
    return this.error !== null;
  }
}
import { Pipe, PipeTransform } from '@angular/core';
import consultant from './models/consultant';

@Pipe({
  name: 'filter'
})
export class FilterPipe implements PipeTransform {
  searchLastname: string;

  transform(values: consultant[], searchLastname: string): any {

    if (!values) return;
    if (searchLastname == undefined || searchLastname === "") return values;

    return values.filter(items => items.lastname.toLowerCase().indexOf(searchLastname.toLowerCase()) !== -1)
  }
}
import {Pipe, PipeTransform} from '@angular/core';
import {Contact} from '../contact';

@Pipe({
  name: 'contactAddressToText'
})
export class ContactAddressToTextPipe implements PipeTransform {

  transform(contact: Contact, args?: any): any {
    let addressText = '';
    if (contact.streetAddress) {
      addressText += `${contact.streetAddress}, `;
    }
    if (contact.postCode) {
      addressText += `${contact.postCode} `;
    }
    if (contact.city) {
      addressText += contact.city;
    }
    return addressText;
  }
}
/** A method to create type-guard for string unions */
export const guard =
	<T extends readonly unknown[]>(array: T) =>
	(value: unknown): value is (typeof array)[number] =>
		array.includes(value);

export type Guard<T> = T extends readonly unknown[] ? T[number] : never;
import faker from "faker";
import * as data from "../data";
import * as core from ".";
import { GetProductsInput } from "./types";

jest.mock("../data", () => ({
  createProduct: jest.fn(),
  deleteProduct: jest.fn(),
  getProduct: jest.fn(),
  getProductCount: jest.fn(),
  getProducts: jest.fn()
}));

beforeEach(() => {
  jest.resetAllMocks();
});

describe("createProduct core function", () => {
  it("delegates to createProduct data function", async () => {
    const name = faker.commerce.product();
    const createdProduct = {
      id: faker.random.uuid(),
      name
    };
    (data.createProduct as jest.Mock).mockResolvedValueOnce(createdProduct);
    const output = await core.createProduct({
      name
    });
    expect(data.createProduct).toHaveBeenCalledTimes(1);
    expect(data.createProduct).toBeCalledWith({
      name
    });
    expect(output).toBe(createdProduct);
  });
});

describe("deleteProduct core function", () => {
  describe("when product exists", () => {
    let id: string;
    let product: data.Product;
    let output: core.Product;

    beforeEach(async () => {
      id = faker.random.uuid();
      product = {
        id,
        name: faker.random.uuid()
      };
      (data.getProduct as jest.Mock).mockResolvedValueOnce(product);
      output = await core.deleteProduct({
        id
      });
    });

    it("calls


OpenAIChatCompletionChoiceMessageModel(
    //       role: OpenAIChatMessageRole.assistant,
    //       content: [
    //         OpenAIChatCompletionChoiceMessageContentItemModel.text(
    //           re,
    //         ),
    //       ],
    //     ));
    requestMessages.insert(0, ChatCompletionMessage.assistant(content: re));
  }
  if (question != '') {
    // requestMessages.insert(
    //     0,
    //     OpenAIChatCompletionChoiceMessageModel(
    //       role: OpenAIChatMessageRole.user,
    //       content: [
    //         OpenAIChatCompletionChoiceMessageContentItemModel.text(
    //           question,
    //         ),
    //       ],
    //     ));
    requestMessages.insert(
        0,
        ChatCompletionMessage.user(
            content: ChatCompletionUserMessageContent.string(question)));
  }
  DateTime now = DateTime.now();
  var hour = now.hour;
  var minute = now.minute;
  String formattedTime =
      '${hour.toString().padLeft(2, '0')}:${minute.toString().padLeft(2, '0')}';
  String period;
  if (hour >= 20 || hour < 1) {
    period = S.current.night;
  } else if (hour >= 1 && hour < 6) {
    period = S.current.dawn;
  } else if (hour >= 6 && hour < 10) {
    period = S.current.morning;
  } else if (hour >= 10 && hour < 12) {
    period = S.current.forenoon;
  } else if (hour >= 12 && hour < 14) {
    period = S.current.noon;
  } else if (hour >= 14 && hour < 18) {
    period = S.current.afternoon;
  } else {
    period = S.current.evening;
  }
  // var windowName = decode(await runCmd(
  //     "powershell -ExecutionPolicy Bypass -File ${await loadAsset("scripts\\getwindowname.ps1")}"));
  String windowInfo = await getWindow(infoGetter, cmd) ?? '';
  String window = '';
  if (infoGetter == S.current.screenshot) {
    window = S.current.windowInfoScreenshot;
    final bytes = await File(windowInfo).readAsBytes();
    String base64 = base64Encode(bytes);
    // requestMessages.insert(
    //     0,
    //     OpenAIChatCompletionChoiceMessageModel(
    //         role: OpenAIChatMessageRole.system,
    //         content: [
    //           OpenAIChatCompletionChoiceMessageContentItemModel.imageUrl(
    //               base64)
    //         ]));
    requestMessages.insert(
        0,
        ChatCompletionMessage.user(
            content: ChatCompletionMessageContentParts([
          ChatCompletionMessageContentPart.text(
            text: window,
          ),
          ChatCompletionMessageContentPart.image(
              imageUrl: ChatCompletionMessageImageUrl(url: 'data:image/png;base64,$base64'))
        ])));
  } else if (infoGetter == S.current.shell) {
    window = S.current.windowInfoName(windowInfo);
  }
  var weather = await getWeather();
  // requestMessages.insert(
  //     0,
  //     OpenAIChatCompletionChoiceMessageModel(
  //       role: OpenAIChatMessageRole.system,
  //       content: [
  //         OpenAIChatCompletionChoiceMessageContentItemModel.text(
  //           S.current.modelWeather(getSeason(DateTime.now()), period,
  //               formattedTime, weather, window),
  //         ),
  //       ],
  //     ));
  requestMessages.insert(
      0,
      ChatCompletionMessage.system(
          content: S.current.modelWeather(getSeason(DateTime.now()), period,
              formattedTime, weather, window)));
  user = us


nk_target 0x0
	launchtemplate MAX_QUAKE_DIRT_GEYSER TEMPLATE_TARGET | 4, 0x3 0 0x4 0x10
	pause 0x0
	launchtemplate MAX_QUAKE_ROCK_GEYSER TEMPLATE_TARGET | 4, 0x3 bank_target 0xfff0 0x10
	return

.align 2
.global gRolloutExplosionSpriteTemplate
gRolloutExplosionSpriteTemplate: objtemplate ANIM_TAG_UNUSED_EXPLOSION_2 ANIM_TAG_UNUSED_EXPLOSION_2 OAM_OFF_32x32 0x83E3F90 0x0 gDummySpriteAffineAnimTable SpriteCB_RolloutExplosion
MAX_QUAKE_DIRT_GEYSER: objtemplate ANIM_TAG_MUD_SAND ANIM_TAG_MUD_SAND OAM_OFF_16x16 gDummySpriteAnimTable 0x0 gDummySpriteAffineAnimTable 0x80B8D59
MAX_QUAKE_ROCK_GEYSER: objtemplate ANIM_TAG_ROCKS ANIM_TAG_ROCKS OAM_OFF_32x32 0x83E73A8 0x0 gDummySpriteAffineAnimTable SpriteCB_Geyser

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.pool
@Credits to Skeli
ANIM_MAX_DARKNESS:
	loadparticle ANIM_TAG_SHADOW_BALL
	loadparticle ANIM_TAG_VERTICAL_HEX
	loadparticle ANIM_TAG_ORBS
	loadparticle ANIM_TAG_UNUSED_PINK_ORB
	loadparticle ANIM_TAG_UNUSED_EXPLOSION_2
	loadparticle ANIM_TAG_VERTICAL_HEX
	loadparticle ANIM_TAG_CIRCLE_OF_LIGHT
	launchtask AnimTask_BlendParticle 0x5 0x5 ANIM_TAG_ORBS 0x2 0xA 0xA 0x441F @;Reddish pink
	launchtask AnimTask_BlendParticle 0x5 0x5 ANIM_TAG_UNUSED_PINK_ORB 0x2 0xA 0xA 0x640B @;Purple
	launchtask AnimTask_BlendParticle 0x5 0x5 ANIM_TAG_CIRCLE_OF_LIGHT 0x2 0xE 0xE 0x3006 @;Purple
	launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1
	soundcomplex 0x70 SOUND_PAN_ATTACKER 0x9 0x5
	launchtemplate DARKNESS_HOLE TEMPLATE_ATTACKER | 2, 0x5, bank_attacker, -20, 0, 145, 0
	launchtemplate DARKNESS_HOLE TEMPLATE_ATTACKER | 2, 0x5, bank_attacker, 20, 0, 145, 0
	pause 0x48
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_BG 0x0 0x0 0xE 0x0 @;Black
	call DARKNESS_ORB_LAUNCH_PINK
	call DARKNESS_ORB_LAUNCH_PURPLE
	call DARKNESS_ORB_LAUNCH_PINK
	call DARKNESS_ORB_LAUNCH_PURPLE
	call DARKNESS_ORB_LAUNCH_PINK
	call DARKNESS_ORB_LAUNCH_PURPLE
	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x4 62 0x1
	call DARKNESS_ORB_LAUNCH_PINK
	call DARKNESS_ORB_LAUNCH_PURPLE
	call DARKNESS_ORB_LAUNCH_PINK
	call DARKNESS_ORB_LAUNCH_PURPLE
	call DARKNESS_ORB_LAUNCH_PINK
	call DARKNESS_ORB_LAUNCH_PURPLE
	call DARKNESS_ORB_LAUNCH_PINK


on onListen();

  /// OnData listener callback
  @protected
  void onData(dynamic /*String|List<int>*/ data) {
    MqttLogger.log('MqttConnection::onData');
    // Protect against 0 bytes but should never happen.
    if (data.length == 0) {
      MqttLogger.log('MqttServerConnection::onData - Error - 0 byte message');
      return;
    }

    messageStream.addAll(data);

    while (messageStream.isMessageAvailable()) {
      var messageIsValid = true;
      MqttMessage? msg;

      try {
        msg = MqttMessage.createFrom(messageStream);
      } on Exception {
        MqttLogger.log(
          'MqttServerConnection::_ondata - message is not yet valid, '
          'waiting for more data ...',
        );
        messageIsValid = false;
      }
      if (!messageIsValid) {
        messageStream.reset();
        return;
      }
      if (messageIsValid) {
        messageStream.shrink();
        MqttLogger.log(
          'MqttServerConnection::_onData - message received ',
          msg,
        );
        if (!clientEventBus!.streamController.isClosed) {
          if (msg!.header!.messageType == MqttMessageType.connectAck) {
            clientEventBus!.fire(ConnectAckMessageAvailable(msg));
          } else {
            clientEventBus!.fire(MessageAvailable(msg));
          }
          MqttLogger.log(
            'MqttServerConnection::_onData - message available event fired',
          );
        } else {
          MqttLogger.log(
            'MqttServerConnection::_onData - WARN - message available event not fired, event bus is closed',
          );
        }
      }
    }
  }

  // Apply any socket options, true indicates options applied
  bool _applySocketOptions(Socket socket, List<RawSocketOption> socketOptions) {
    if (socketOptions.isNotEmpty) {
      MqttLogger.log(
        'MqttServerConnection::__applySocketOptions - Socket options supplied, applying',
      );
      for (final option in socketOptions) {
        socket.setRawOption(option);
      }
    }
    return socketOptions.isNotEmpty;
  }

  // Check for a timeout exception
  bool _isSocketTimeout(Exception e) {
    if (e is SocketException) {
      // There are different timeout codes for Linux and Windows so check for both
      if (e.osError?.errorCode == wsaETimedOut ||
          e.osError?.errorCode == eTimedOut) {
        return true;
      }
    }
    return false;
  }

  // Create the listening stream subscription and subscribe the callbacks
  void _startListening() {
    stopListening();
    MqttLogger.log('MqttServerConnection::_startListening');
    try {
      listeners.add(onListen());
    } on Exception catch (e) {
      print('MqttServerConnection::_startListening - exception raised $e');
    }
  }
}
/*
 * Package : mqtt_client
 * Author : S. Hamblett <steve.hamblett@linux.com>
 * Date   : 19/06/2017
 * Copyright :  S.Hamblett
 */

part of '../../../mqtt_client.dart';

/// Implementation of the variable header for an MQTT Connect message.
class MqttPublishVariableHeader extends MqttVariableHeader {
  /// Standard header
  MqttHeader? header;

  /// Initializes a new instance of the MqttPublishVariableHeader class.
  MqttPublishVariableHeader(this.header);

  /// Initializes a new instance of the MqttPublishVariableHeader class.
  MqttPublishVariableHeader.fromByteBuffer(
    this.header,
    MqttByteBuffer variableHeaderStream,
  ) {
    readFrom(variable


};

int
runBug51775(NDBT_Context* ctx, NDBT_Step* step)
{
  Ndb* pNdb = GETNDB(step);

  NdbTransaction * pTrans1 = pNdb->startTransaction();
  if (pTrans1 == NULL)
  {
    ERR(pNdb->getNdbError());
    return NDBT_FAILED;
  }
  TransGuard g1(pTrans1);

  NdbTransaction * pTrans2 = pNdb->startTransaction();
  if (pTrans2 == NULL)
  {
    pTrans1->close();
    ERR(pNdb->getNdbError());
    return NDBT_FAILED;
  }

  TransGuard g2(pTrans2);

  {
    NdbOperation * pOp = pTrans1->getNdbOperation(ctx->getTab()->getName());
    if (pOp == NULL)
    {
      ERR(pOp->getNdbError());
      return NDBT_FAILED;
    }

    if (pOp->insertTuple() != 0)
    {
      ERR(pOp->getNdbError());
      return NDBT_FAILED;
    }

    HugoOperations hugoOps(* ctx->getTab());
    hugoOps.setValues(pOp, 0, 0);
  }

  {
    NdbOperation * pOp = pTrans2->getNdbOperation(ctx->getTab()->getName());
    if (pOp == NULL)
    {
      ERR(pOp->getNdbError());
      return NDBT_FAILED;
    }

    if (pOp->readTuple() != 0)
    {
      ERR(pOp->getNdbError());
      return NDBT_FAILED;
    }

    HugoOperations hugoOps(* ctx->getTab());
    hugoOps.equalForRow(pOp, 0);
    pOp->getValue(NdbDictionary::Column::FRAGMENT);
  }

  pTrans1->execute(NoCommit); // We now have un uncommitted insert

  /**
   * Now send a read...which will get 266
   */
  pTrans2->executeAsynch(NoCommit, 0, 0);
  int res = pNdb->pollNdb(1, 1000);
  ndbout_c("res: %u", res);

  NdbSleep_SecSleep(10);
  ndbout_c("pollNdb()");
  while (pNdb->pollNdb() + res == 0);

  return NDBT_OK;
}

int testFragmentedApiFailImpl(NDBT_Context* ctx, NDBT_Step* step)
{
  /* Setup a separate connection for running scan operations
   * with that will be disconnected without affecting
   * the test framework
   */
  if (otherConnection != NULL)
  {
    ndbout << "FragApiFail : Connection not null" << endl;
    return NDBT_FAILED;
  }

  char connectString[256];
  ctx->m_cluster_connection.get_connectstring(connectString,
                                              sizeof(connectString));

  otherConnection= new Ndb_cluster_connection(connectString);

  if (otherConnection == NULL)
  {
    ndbout << "FragApiFail : Connection is null" << endl;
    return NDBT_FAILED;
  }

  int rc= otherConnection->connect();

  if (rc!= 0)
  {
    ndbout << "FragApiFail : Connect failed with rc " << rc << endl;
    return NDBT_FAILED;
  }

  /* Check that all nodes are alive - if one has failed
   * then probably we exposed bad API_FAILREQ handling
   */
  if (otherConnection->wait_until_ready(10,10) != 0)
  {
    ndbout << "FragApiFail : Cluster connection was not ready" << endl;
    return NDBT_FAILED;
  }

  for (int i=0; i < MAX_STEPS; i++)
  {
    /* We must create the Ndb objects here as we
     * are still single threaded
     */
    stepNdbs[i]= new Ndb(otherConnection,


2f, 102.12f, 0.0f, false, false, 128.0f, 26.0f)
                close()
                moveTo(128.0f, 218.0f)
                arcToRelative(90.0f, 90.0f, 0.0f, true, true, 90.0f, -90.0f)
                arcTo(90.1f, 90.1f, 0.0f, false, true, 128.0f, 218.0f)
                close()
                moveTo(138.0f, 84.0f)
                arcToRelative(10.0f, 10.0f, 0.0f, true, true, -10.0f, -10.0f)
                arcTo(10.0f, 10.0f, 0.0f, false, true, 138.0f, 84.0f)
                close()
                moveTo(138.0f, 128.0f)
                arcToRelative(10.0f, 10.0f, 0.0f, true, true, -10.0f, -10.0f)
                arcTo(10.0f, 10.0f, 0.0f, false, true, 138.0f, 128.0f)
                close()
                moveTo(138.0f, 172.0f)
                arcToRelative(10.0f, 10.0f, 0.0f, true, true, -10.0f, -10.0f)
                arcTo(10.0f, 10.0f, 0.0f, false, true, 138.0f, 172.0f)
                close()
            }
        }
        .build()
        return _dotsThreeCircleVertical!!
    }

private var _dotsThreeCircleVertical: ImageVector? = null
package com.adamglin.phosphoricons.light

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.PathFillType.Companion.NonZero
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.StrokeCap.Companion.Butt
import androidx.compose.ui.graphics.StrokeJoin.Companion.Miter
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.ImageVector.Builder
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp
import com.adamglin.phosphoricons.LightGroup

public val LightGroup.ChartPie: ImageVector
    get() {
        if (_chartPie != null) {
            return _chartPie!!
        }
        _chartPie = Builder(name = "ChartPie", defaultWidth = 24.0.dp, defaultHeight = 24.0.dp,
                viewportWidth = 256.0f, viewportHeight = 256.0f).apply {
            path(fill = SolidColor(Color(0xFF000000)), stroke = null, strokeLineWidth = 0.0f,
                    strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
                    pathFillType = NonZero) {
                moveTo(128.0f, 26.0f)
                arcTo(102.0f, 102.0f, 0.0f, true, false, 230.0f, 128.0f)
                arcTo(102.12f, 102.12f, 0.0f, false, false, 128.0f, 26.0f)
                close()
                moveTo(202.74f, 77.92f)
                lineTo(134.0f, 117.61f)
                lineTo(134.0f, 38.2f)
                arcTo(90.0f, 90.0f, 0.0f, false, true, 202.74f, 77.92f)
                close()
                moveTo(122.0f, 38.2f)
                verticalLineToRelative(86.34f)
                lineTo(47.24f, 167.7f)
                arcTo(90.0f, 90.0f


ooltip .bp4-running-text pre{
    border:1px solid buttonborder;
    -webkit-box-shadow:none;
            box-shadow:none;
  }
}
.bp4-tooltip.bp4-dark .bp4-key,
.bp4-tooltip.bp4-dark .bp4-running-text kbd,
.bp4-dark .bp4-tooltip .bp4-key,
.bp4-dark .bp4-tooltip .bp4-running-text kbd{
  background:#ffffff;
  -webkit-box-shadow:0 0 0 1px rgba(17, 20, 24, 0.1), 0 1px 1px rgba(17, 20, 24, 0.2);
          box-shadow:0 0 0 1px rgba(17, 20, 24, 0.1), 0 1px 1px rgba(17, 20, 24, 0.2);
  color:#5f6b7c;
}
.bp4-tooltip.bp4-dark .bp4-icon.bp4-intent-primary,
.bp4-tooltip.bp4-dark .bp4-icon-standard.bp4-intent-primary,
.bp4-tooltip.bp4-dark .bp4-icon-large.bp4-intent-primary,
.bp4-dark .bp4-tooltip .bp4-icon.bp4-intent-primary,
.bp4-dark .bp4-tooltip .bp4-icon-standard.bp4-intent-primary,
.bp4-dark .bp4-tooltip .bp4-icon-large.bp4-intent-primary{
  color:#215db0;
}
.bp4-tooltip.bp4-dark .bp4-icon.bp4-intent-success,
.bp4-tooltip.bp4-dark .bp4-icon-standard.bp4-intent-success,
.bp4-tooltip.bp4-dark .bp4-icon-large.bp4-intent-success,
.bp4-dark .bp4-tooltip .bp4-icon.bp4-intent-success,
.bp4-dark .bp4-tooltip .bp4-icon-standard.bp4-intent-success,
.bp4-dark .bp4-tooltip .bp4-icon-large.bp4-intent-success{
  color:#1c6e42;
}
.bp4-tooltip.bp4-dark .bp4-icon.bp4-intent-warning,
.bp4-tooltip.bp4-dark .bp4-icon-standard.bp4-intent-warning,
.bp4-tooltip.bp4-dark .bp4-icon-large.bp4-intent-warning,
.bp4-dark .bp4-tooltip .bp4-icon.bp4-intent-warning,
.bp4-dark .bp4-tooltip .bp4-icon-standard.bp4-intent-warning,
.bp4-dark .bp4-tooltip .bp4-icon-large.bp4-intent-warning{
  color:#935610;
}
.bp4-tooltip.bp4-dark .bp4-icon.bp4-intent-danger,
.bp4-tooltip.bp4-dark .bp4-icon-standard.bp4-intent-danger,
.bp4-tooltip.bp4-dark .bp4-icon-large.bp4-intent-danger,
.bp4-dark .bp4-tooltip .bp4-icon.bp4-intent-danger,
.bp4-dark .bp4-tooltip .bp4-icon-standard.bp4-intent-danger,
.bp4-dark .bp4-tooltip .bp4-icon-large.bp4-intent-danger{
  color:#ac2f33;
}
.bp4-tooltip.bp4-intent-primary .bp4-popover-content{
  background:#2d72d2;
  color:#ffffff;
}
.bp4-tooltip.bp4-intent-primary .bp4-popover-arrow-fill{
  fill:#2d72d2;
}
@media (forced-colors: active) and (prefers-color-scheme: dark){
  .bp4-tooltip.bp4-intent-primary .bp4-


vance();
      await parser.advance();
      await parser.advance();
      expect(parser.hasMoreCommand()).toBe(false);

      parser.rewind();
      expect(parser.hasMoreCommand()).toBe(true);

      await parser.advance();
      await parser.advance();
      await parser.advance();
      expect(parser.hasMoreCommand()).toBe(false);
    });
  });
  describe("symbol", () => {
    test("コマンド種別がA命令の時、シンボル文字列を返す", async () => {
      const parser = getParser(["@symbol\n", "@10"]);

      await parser.advance();
      expect(parser.commandType()).toBe("A_COMMAND");
      expect(parser.symbol()).toBe("symbol");

      await parser.advance();
      expect(parser.commandType()).toBe("A_COMMAND");
      expect(parser.symbol()).toBe("10");
    });
    test("コマンド種別がL命令の時、シンボル文字列を返す", async () => {
      const parser = getParser(["    (symbol)\n"]);

      await parser.advance();
      expect(parser.commandType()).toBe("L_COMMAND");
      expect(parser.symbol()).toBe("symbol");
    });
  });
  describe("dest", () => {
    const expected: [string, string | null][] = [
      ["M=D+1\n", "M"],
      ["AD=M+1", "AD"],
      ["0;JMP // コメント", null],
      ["D=A // コメントを含む行", "D"],
      ["M=-1", "M"],
      ["M=!M", "M"]
    ];

    const parser = getParser(expected.map(([command, _]) => command));
    for (const [command, dest] of expected) {
      test(`command: ${command}の時、dest:${dest}を返す`, async () => {
        await parser.advance();
        expect(parser.commandType()).toBe("C_COMMAND");
        expect(parser.dest()).toBe(dest);
      });
    }
  });
  describe("comp", () => {
    const expected: [string, string | null][] = [
      ["0;JMP // コメント\n", "0"],
      ["M=M+1", "M+1"],
      ["D=A // コメントを含む", "A"],
      ["M=-1", "-1"],
      ["M=!M", "!M"]
    ];

    const parser = getParser(expected.map(([command, _]) => command));
    for (const [command, comp] of expected) {
      test(`command: ${command}の時、comp:${comp}を返す`, async () => {
        await parser.advance();
        expect(parser.commandType()).toBe("C_COMMAND");
        expect(parser.comp()).toBe(comp);
      });
    }
  });
  describe("jump", () => {
    const expected: [string, string | null][] = [
      ["0;JMP // コメント\n", "JMP"],
      ["M=M+1\n", null],
      ["D=A // コメントを含む行\n", null]
    ];

    const parser = getParser(expected.map(([command, _]) => command));
    for (const [command, jump] of expected) {
      test(`command: ${command}の時、jump:${jump}を返す`, async () => {
        await parser.advance();
        expect(parser.commandType()).toBe("C_COMMAND");
        expect(parser.jump()).toBe(jump);
      });
    }
  });
  describe("commandType", () => {
    test('ロードしたコマンドが「"A_COMMAND"」', async () => {
      // prettier-ignore
      const parser = getParser([
        "@1         \n",
        "         @10\n",
        "@abc\n",
        "..."
      ]);
      await parser.advance();
      expect(parser.commandType()).toBe("A_COMMAND");

      await parser.advance();
      expect(parser.c


it assumes
//   lower ASCII only.

  // The lex_op table indicates which elements trigger regular expression mode. Elements that trigger this mode cause a following / to delimit a regular expression, whereas other elements would
//   cause a following / to indicate division. By the way, the operator ! must be in the table even though it is never used. The reason is that it is a substring of !==; without it, !== would
//   fail to parse.

  // Caterwaul 1.1.3 adds support for Unicode characters, even though they're technically not allowed as identifiers in Javascript. All Unicode characters are treated as identifiers since
//   Javascript assigns no semantics to them.

  // Caterwaul 1.2 adds @ as an identifier character. This is a hack for me to encode metadata on symbols without having to build subtrees, and it is transparent to Javascript->Javascript
//   compilation since @ is not a valid character in Javascript.

  // ES5 adds function* and yield* as keywords, which breaks the "reserved words look like identifiers" property.

  lex_starred = hash('function* yield*'),
       lex_op = hash('. ?. new ++ -- u++ u-- u+ u- typeof void u~ u! u* u... ! * / % + - << >> >>> < > <= >= instanceof in of == != === !== & ^ | && || ?? ? = ' +
                     '+= -= *= /= %= &= |= ^= <<= >>= >>>= : , &&= ||= ??= => return throw case var const let async await yield yield* break continue else u; ;'),

    lex_table = function (s) {for (var i = 0, xs = [false]; i < 8; ++i) xs.push.apply(xs, xs); for (var i = 0, l = s.length; i < l; ++i) xs[s.charCodeAt(i)] = true; return xs},
    lex_float = lex_table('.0123456789'),    lex_decimal = lex_table('0123456789'),  lex_integer = lex_table('0123456789abcdefABCDEFx'),  lex_exp = lex_table('eE'),
    lex_space = lex_table(' \n\r\t'),        lex_bracket = lex_table('()[]{}?:'),     lex_opener = lex_table('([{?:'),                  lex_punct = lex_table('+-*/%&|^!~=<>?:;.,'),
      lex_eol = lex_table('\n\r'),     lex_regexp_suffix = lex_table('gims'),          lex_quote = lex_table('\'"/'),                   lex_slash = '/'.charCodeAt(0),
     lex_zero = '0'.charCodeAt(0),     lex_postfix_unary = hash('++ --'),              lex_ident = lex_table('@\\$_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'),
     lex_star = '*'.charCodeAt(0),              lex_back = '\\'.charCodeAt(0),             lex_x = 'x'.charCodeAt(0),                     lex_dot = '.'.charCodeAt(0),
 lex_backtick = '`'.charCodeAt(0),              lex_hash = '#'.charCodeAt(0),          lex_qmark = '?'.charCodeAt(0),                       lex_n = 'n'.charCodeAt(0),

  // Parse data.
//   The lexer and parser aren't entirely separate, nor can they be considering the complexity of Javascript's grammar. The lexer ends up grouping parens and identifying block constructs such
//   as 'if', 'for', 'while', and 'with'. The parser then folds operators and ends by folding these block-level constructs.

  // Caterwaul 1.2.7 and 1.3 introduce a few fictional operators into the list. These operators are written such that they could never appear in valid Javascript, but are available to
//   non-Javascript compilers like waul. So far these operators are:

  // | ::  right-associative; folds just after == and ===
//     ::: right-associative; folds just after ::

  // These operators matter only if you're writing waul-facing code. If you're writing Javascript-to-Javascript mappings you can ignore their existence, since no valid Javascript will contain
//   them in the first place.

    parse_reduce_order = map(hash, ['function function*', 'new', '(


ag::NO_CACHE);

        builder.order(&k_dim, &thread_dims_0_1, Order::OUTER);
        builder.order(&thread_dim_0_0, &thread_dim_1_0, Order::OUTER);
        builder.order(&unroll_dim_0_0, &unroll_dim_1_0, Order::OUTER);
        builder.order(&unroll_dims_0_1, &unroll_dims_1_1, Order::OUTER);
        builder.order(&unroll_dim_a, &unroll_dim_b, Order::BEFORE);
        builder.order(&unroll_dim_b, &unroll_dims_0_1, Order::BEFORE);

        for id in &unroll_dims_1_2 {
            builder.action(Action::DimKind(id, DimKind::VECTOR));
        }

        Test2
    }
}
//! This module implements the `kill` system call, which allows to send a signal to a process.

use crate::errno::Errno;
use crate::errno;
use crate::file::Uid;
use crate::process::Process;
use crate::process::Regs;
use crate::process::State;
use crate::process::pid::Pid;
use crate::process::signal::Signal;
use crate::process;

/// Tries to kill the process with PID `pid` with the signal `sig`.
/// `euid` is the effective user ID of the sender process.
/// If `sig` is None, the function doesn't send a signal, but still checks if there is a process
/// that could be killed.
fn try_kill(pid: i32, sig: Option<Signal>, euid: Uid) -> Result<i32, Errno> {
	if let Some(proc) = Process::get_by_pid(pid as Pid) {
		let mut guard = proc.lock(false);
		let proc = guard.get_mut();

		if proc.get_state() != State::Zombie {
			if euid == proc.get_uid() || euid == proc.get_euid() {
				if let Some(sig) = sig {
					proc.kill(sig, false);
				}

				Ok(0)
			} else {
				Err(errno::EPERM)
			}
		} else {
			Err(errno::ESRCH)
		}
	} else {
		Err(errno::ESRCH)
	}
}

/// Sends the signal `sig` to the processes according to the given value `pid`.
/// `proc` is the current process.
/// If `sig` is None, the function doesn't send a signal, but still checks if there is a process
/// that could be killed.
fn send_signal(pid: i32, sig: Option<Signal>, proc: &mut Process) -> Result<i32, Errno> {
	if pid == proc.get_pid() as _ {
		if let Some(sig) = sig {
			proc.kill(sig, false);
		}
		Ok(0)
	} else if pid > 0 {
		try_kill(pid, sig, proc.get_euid())
	} else if pid == 0 || -pid as Pid == proc.get_pid() {
		let group = proc.get_group_processes();

		if let Some(sig) = sig {
			for p in group {
				try_kill(*p as _, Some(sig.clone()), proc.get_euid()).unwrap();
			}
		}

		if !group.is_empty() {
			Ok(0)
		} else {
			Err(errno::ESRCH)
		}
	} else if pid == -1 {
		let mut scheduler_guard = process::get_scheduler().lock(false);
		let scheduler = scheduler_guard.get_mut();

		// Variable telling whether at least one process is killed
		let mut found = false;

		scheduler.foreach_process(| pid, p | {
			if *pid != process::pid::INIT_PID && *pid != proc.get_pid() {


{
		___U3CvrUsageU3Ek__BackingField_11 = value;
	}

	inline static int32_t get_offset_of__flags_12() { return static_cast<int32_t>(offsetof(RenderTextureDescriptor_t74FEC57A54F89E11748E1865F7DCA3565BFAF58E, ____flags_12)); }
	inline int32_t get__flags_12() const { return ____flags_12; }
	inline int32_t* get_address_of__flags_12() { return &____flags_12; }
	inline void set__flags_12(int32_t value)
	{
		____flags_12 = value;
	}

	inline static int32_t get_offset_of_U3CmemorylessU3Ek__BackingField_13() { return static_cast<int32_t>(offsetof(RenderTextureDescriptor_t74FEC57A54F89E11748E1865F7DCA3565BFAF58E, ___U3CmemorylessU3Ek__BackingField_13)); }
	inline int32_t get_U3CmemorylessU3Ek__BackingField_13() const { return ___U3CmemorylessU3Ek__BackingField_13; }
	inline int32_t* get_address_of_U3CmemorylessU3Ek__BackingField_13() { return &___U3CmemorylessU3Ek__BackingField_13; }
	inline void set_U3CmemorylessU3Ek__BackingField_13(int32_t value)
	{
		___U3CmemorylessU3Ek__BackingField_13 = value;
	}
};

struct RenderTextureDescriptor_t74FEC57A54F89E11748E1865F7DCA3565BFAF58E_StaticFields
{
public:
	// System.Int32[] UnityEngine.RenderTextureDescriptor::depthFormatBits
	Int32U5BU5D_t2B9E4FDDDB9F0A00EC0AC631BA2DA915EB1ECF83* ___depthFormatBits_8;

public:
	inline static int32_t get_offset_of_depthFormatBits_8() { return static_cast<int32_t>(offsetof(RenderTextureDescriptor_t74FEC57A54F89E11748E1865F7DCA3565BFAF58E_StaticFields, ___depthFormatBits_8)); }
	inline Int32U5BU5D_t2B9E4FDDDB9F0A00EC0AC631BA2DA915EB1ECF83* get_depthFormatBits_8() const { return ___depthFormatBits_8; }
	inline Int32U5BU5D_t2B9E4FDDDB9F0A00EC0AC631BA2DA915EB1ECF83** get_address_of_depthFormatBits_8() { return &___depthFormatBits_8; }
	inline void set_depthFormatBits_8(Int32U5BU5D_t2B9E4FDDDB9F0A00EC0AC631BA2DA915EB1ECF83* value)
	{
		___depthFormatBits_8 = value;
		Il2CppCodeGenWriteBarrier((void**)(&___depthFormatBits_8), (void*)value);
	}
};

// UnityEngine.Rendering.BatchRendererCullingOutput
struct BatchRendererCullingOutput_tCB979B7E23BAD0142D9B51A0F7D9218431E221A6
{
public:
	// Unity.Jobs.JobHandle UnityEngine.Rendering.BatchRendererCullingOutput::cullingJobsFence
	JobHandle_tDA498A2E49AEDE014468F416A8A98A6B258D73D1  ___cullingJobsFence_0;
	// UnityEngine.Plane* UnityEngine.Rendering.BatchRendererCullingOutput::cullingPlanes
	Plane_t0903921088DEEDE1BCDEA5BF279EDBCFC9679AED * ___cullingPlanes_1;
	// Unit


</script>

<!DOCTYPE html>

<meta charset="utf-8">
<title>GLSL step-gentype function test</title>
<link rel="stylesheet" href="../../../resources/js-test-style.css"/>
<link rel="stylesheet" href="../../../resources/glsl-feature-tests.css"/>


<term>object</term> a dictionary [address structures]{@link https://docs.ccxt.com/#/?id=address-structure}, indexed by the network.</returns>
    public async Task<List<DepositAddress>> FetchDepositAddressesByNetwork(string code, Dicti


 r14(lr) in r1 and r2 */

	add		r1, sp, #XCPTCONTEXT_SIZE
	mov		r2, r14

	/* Save r13(sp), r14(lr), r15(pc), and the CPSR */

	add		r0, sp, #(4*REG_SP)		/* Offset to pc, cpsr storage */
	stmia	r0, {r1-r4}
#endif

	/* Then call the undef insn handler with interrupts disabled.
	 * void arm_undefinedinsn(struct xcptcontext *xcp)
	 */

	mov		fp, #0					/* Init frame pointer */
	mov		r0, sp					/* Get r0=xcp */
	mov		r4, sp					/* Save the SP in a preserved register */
	bic		sp, sp, #7				/* Force 8-byte alignment */
	bl		arm_undefinedinsn		/* Call the handler */
	mov		sp, r4					/* Restore the possibly unaligned stack pointer */

	/* Upon return from arm_undefinedinsn, r0 holds the pointer to the register
	 * state save area to use to restore the registers.  This may or may not
	 * be the same value that was passed to arm_undefinedinsn:  It will differ if a
	 * context switch is required.
	 */

	/* Restore the CPSR, SVC mode registers and return */

	ldr		r1, [r0, #(4*REG_CPSR)]	/* Fetch the return SPSR */
	msr		spsr_cxsf, r1			/* Set the return mode SPSR */

#ifdef CONFIG_BUILD_KERNEL
	/* Are we leaving in user mode?  If so then we need to restore the
	 * values of USER mode r13(sp) and r14(lr).
	 */

	and		r2, r1, #PSR_MODE_MASK	/* Interrupted mode */
	cmp		r2, #PSR_MODE_USR		/* User mode? */
	bne		.Lundefleavesvc			/* Branch if not user mode */

	/* ldmia with ^ will return the user mode registers (provided that r15
	 * is not in the register list).
	 */

	mov		r13, r0					/* (SVC) R13=Register storage area */
	ldmia	r13, {r0-R12}			/* Restore common R0-R12 */
	add		r14, r13, #(4*REG_R13)	/* (SVC) R14=address of R13/R14 storage */
	ldmia	r14, {r13, r14}^		/* Restore user mode R13/R14 */
	add		r14, r13, #(4*REG_R15)	/* (SVC) R14=address of R15 storage */
	ldmia	r14, {r15}^				/* Return */

.Lundefleavesvc:
#endif
	/* Life is simple when everything is SVC mode */

	ldmia	r0, {r0-r15}^			/* Return */

.Lundeftmp:
	.word	g_undeftmp
	.size	arm_vectorundefinsn, . - arm_vectorundefinsn

	.align	5

/************************************************************************************
 * Name: arm_vectorfiq
 *
 * Description:
 *   Shouldn't happen unless a arm_decodefiq() is provided.  FIQ is primarily used
 *   with the TrustZone feature in order to handle secure interrupts.
 *
 ************************************************************************************/

#ifdef CONFIG_ARMV7A_DECODEFIQ
	.globl	arm_decodefiq
#endif
	.globl	arm_vectorfiq
	.type	arm_vectorfiq, %function

arm_vectorfiq:
#ifdef CONFIG_ARMV7A_DECODEFIQ
	/* On


)
	popl	%ecx
	cfi_adjust_cfa_offset (-4)
	popl	%eax
	cfi_adjust_cfa_offset (-4)
	jmp	*(%eax)
	cfi_endproc
	.size	_dl_tlsdesc_resolve_abs_plus_addend, .-_dl_tlsdesc_resolve_abs_plus_addend

     /* This function is a wrapper for a lazy resolver for TLS_DESC
	REL relocations that had zero addends.  %ebx points to the
	caller's GOT.  %eax points to a TLS descriptor, such that
	0(%eax) holds the address of the resolver wrapper itself
	(unless some other thread beat us to it) and 4(%eax) holds a
	pointer to the relocation.

	When the actual resolver returns, it will have adjusted the
	TLS descriptor such that we can tail-call it for it to return
	the TP offset of the symbol.  */

	.hidden _dl_tlsdesc_resolve_rel
	.global	_dl_tlsdesc_resolve_rel
	.type	_dl_tlsdesc_resolve_rel,@function
	cfi_startproc
	.align 16
_dl_tlsdesc_resolve_rel:
0:
	_CET_ENDBR
	pushl	%eax
	cfi_adjust_cfa_offset (4)
	pushl	%ecx
	cfi_adjust_cfa_offset (4)
	pushl	%edx
	cfi_adjust_cfa_offset (4)
	movl	$1f - 0b, %ecx
	movl	4(%ebx), %edx
	call	_dl_tlsdesc_resolve_rel_fixup
1:
	popl	%edx
	cfi_adjust_cfa_offset (-4)
	popl	%ecx
	cfi_adjust_cfa_offset (-4)
	popl	%eax
	cfi_adjust_cfa_offset (-4)
	jmp	*(%eax)
	cfi_endproc
	.size	_dl_tlsdesc_resolve_rel, .-_dl_tlsdesc_resolve_rel

     /* This function is a wrapper for a lazy resolver for TLS_DESC
	RELA relocations.  %ebx points to the caller's GOT.  %eax
	points to a TLS descriptor, such that 0(%eax) holds the
	address of the resolver wrapper itself (unless some other
	thread beat us to it) and 4(%eax) holds a pointer to the
	relocation.

	When the actual resolver returns, it will have adjusted the
	TLS descriptor such that we can tail-call it for it to return


#ifndef POLARDECOMPOSITION_H
#define POLARDECOMPOSITION_H

#include "btMatrix3x3.h"

/**
 * This class is used to compute the polar decomposition of a matrix. In
 * general, the polar decomposition factorizes a matrix, A, into two parts: a
 * unitary matrix (U) and a positive, semi-definite Hermitian matrix (H).
 * However, in this particular implementation the original matrix, A, is
 * required to be a square 3x3 matrix with real elements. This means that U will
 * be an orthogonal matrix and H with be a positive-definite, symmetric matrix.
 */
class btPolarDecomposition
{
public:
	/**
     * Creates an instance with optional parameters.
     *
     * @param tolerance     - the tolerance used to determine convergence of the
     *                        algorithm
     * @param maxIterations - the maximum number of iterations used to achieve
     *                        convergence
     */
	btPolarDecomposition(btScalar tolerance = btScalar(0.0001),
						 unsigned int maxIterations = 16);

	/**
     * Decomposes a matrix into orthogonal and symmetric, positive-definite
     * parts. If the number of iterations returned by this function is equal to
     * the maximum number of iterations, the algorithm has failed to converge.
     *
     * @param a - the original matrix
     * @param u - the resulting orthogonal matrix
     * @param h - the resulting symmetric matrix
     *
     * @return the number of iterations performed by the algorithm.
     */
	unsigned int decompose(const btMatrix3x3& a, btMatrix3x3& u, btMatrix3x3& h) const;

	/**
     * Returns the maximum number of iterations that this algorithm will perform
     * to achieve convergence.
     *
     * @return maximum number of iterations
     */
	unsigned int maxIterations() const;

private:
	btScalar m_tolerance;
	unsigned int m_maxIterations;
};

/**
 * This functions decomposes the matrix 'a' into two parts: an orthogonal matrix
 * 'u' and a symmetric, positive-definite matrix 'h'. If the number of
 * iterations returned by this function is equal to
 * btPolarDecomposition::DEFAULT_MAX_ITERATIONS, the algorithm has failed to
 * converge.
 *
 * @param a - the original matrix
 * @param u - the resulting orthogonal matrix
 * @param h - the resulting symmetric matrix
 *
 * @return the number of iterations performed by the algorithm.
 */
unsigned int polarDecompose(const btMatrix3x3& a, btMatrix3x3& u, btMatrix3x3& h);

#endif  // POLARDECOMPOSITION_H


 Gelo",
[44192] = "Decepador de Estalactites",
[44193] = "Estalactite Quebrada",
[44194] = "Kilt do Amigo Gigante",
[44195] = "Espaldares dos Senhores Gigantes",
[44196] = "Faixa da Serpe Mirrada",
[44197] = "Braçadeiras do Acordo de Cortesia",
[44198] = "Peitoral do Conselho Solene",
[44199] = "Maça da Tormenta Vindoura",
[44200] = "Munhequeiras de Tendão Ancestral",
[44201] = "Escarpes do Vigor Dracônico",
[44202] = "Sandálias da Fúria Carmesim",
[44203] = "Braçadeiras Dragão Amistoso",
[44204] = "Guantes dos Ditames Tenazes",
[44205] = "Coxotes da Represália Sangrenta",
[44206] = "Ervas com Crostas de Geada",
[44207] = "Flor de Congelamento Rápido",
[44208] = "Tronco Estilhaçado",
[44210] = "Faces da Perdição",
[44211] = "Luvas Tecidas com Gelo",
[44212] = "MSG-3",
[44213] = "Pingente Negraluna",
[44214] = "Tocha Purificadora",
[44215] = "Colar de Negraluna",
[44216] = "Manto do Extermínio Sagrado",
[44217] = "Punhal Negraluna",
[44218] = "Algoz Negraluna",
[44219] = "Cajado-mago Negraluna",
[44220] = "Missiva do Martelo de Orgrim",
[44221] = "Rédeas de Grifo Emprestado",
[44222] = "Pistola de Dardos",
[44223] = "Rédeas do Urso de Guerra Preto",
[44224] = "Rédeas do Urso de Guerra Preto",
[44225] = "Rédeas do Urso Marrom Encouraçado",
[44226] = "Rédeas do Urso Marrom Encouraçado",
[44227] = "Monster - Axe, 2H Nexus",
[44228] = "Tempero Bebê",
[44229] = "Rédeas de Mantícora Emprestada",
[44230] = "Rédeas do Mamute Peludo",
[44231] = "Rédeas do Mamute Peludo",
[44232] = "Monster - Mace, Nexus D01",
[44233] = "Monster - Shield, Nexus D01",
[44234] = "Rédeas do Mamute Túndrico do Viajante",
[44235] = "Rédeas do Mamute Túndrico do Viajante",
[44236] = "Monster - Item, Harpoon (2H)",
[44237] = "Monster - Sword, Horde Jagged Bloody (Back)",
[44238] = "Monstro - Espada, 1M Nexus D01",
[44239] = "Guarda-pernas Padrão",
[44240] = "Coxotes Especiais",
[44241] = "Persuasor Profano",
[44242] = "Capa do Soldado Sombrio",
[44243] = "Escarpes Temperados com Toxinas",
[44244] = "Esmagador de Esqueleto Argênteo",
[44245] = "Escopeta Varre-zumbis",
[44246] = "Orbe de Ilusão",
[44247] = "Braçadeiras Defletoras de Presas",
[44248] = "Elmo do Reparador de Batalha",
[44249] = "Lâmina Rúnica da Demonstração de


Fannounce&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80

```

我只下载过两次这个种子，但根据种子和对等的不同，下载速度可能会有很大差异。

最后，你还可以通过 [Google BigQuery](https://www.reddit.com/r/bigquery/comments/3cej2b/17_billion_reddit_comments_loaded_on_bigquery/?st=j9xmvats&sh=5843d18e) 查看所有 Reddit 评论。 BigQuery 表似乎随着时间的推移而更新，而 torrent 不是，所以这也是一个不错的选择。 我个人将会使用 torrent，因为它是完全免费的，所以，如果你想完全遵循它，就需要这样做，但如果你愿意的话，可以随意改变主意，使用 Google BigQuery 的东西！

由于数据下载可能需要相当长的时间，我会在这里中断。 一旦你下载了数据，继续下一个教程。 你可以仅仅下载`2015-01`文件来跟随整个系列教程，你不需要整个 17 亿个评论转储。 一个月的就足够了。

## 二、聊天数据结构

欢迎阅读 Python 和 TensorFlow 聊天机器人系列教程的第二部分。现在，我假设你已经下载了数据，或者你只是在这里观看。对于大多数机器学习，你需要获取数据，并且某些时候需要输入和输出。对于神经网络，这表示实际神经网络的输入层和输出层。对于聊天机器人来说，这意味着我们需要将东西拆成评论和回复。评论是输入，回复是所需的输出。现在使用 Reddit，并不是所有的评论都有回复，然后很多评论会有很多回复！我们需要挑一个。

我们需要考虑的另一件事是，当我们遍历这个文件时，我们可能会发现一个回复，但随后我们可能会找到更好的回复。我们可以使用一种方法是看看得票最高的。我们可能也只想要得票最高的回应。我们可以考虑在这里很多事情，按照你的希望随意调整！

首先，我们的数据格式，如果我们走了 torrent  路线：

```json
{"author":"Arve","link_id":"t3_5yba3","score":0,"body":"Can we please deprecate the word \"Ajax\" now? \r\n\r\n(But yeah, this _is_ much nicer)","score_hidden":false,"author_flair_text":null,"gilded":0,"subreddit":"reddit.com","edited":false,"author_flair_css_class":null,"retrieved_on":1427426409,"name":"t1_c0299ap","created_utc":"1192450643","parent_id":"t1_c02999p","controversiality":0,"ups":0,"distinguished":null,"id":"c0299ap","subre


 != n)
				continue;

			// 启发式规则：第三张纸片的大小应该与第二张纸片的大小相同。
			if (nblocks == 2 && r != blocks[1])
				continue;

			// 启发式规则：第四张纸片和第五张纸片的大小之和应该为第一张纸片的大小，
			// 即拼接所得到的正方形某一边纸片数不能超过 3 张。
			if (nblocks == 4 && (r + blocks[3]) != blocks[0])
				continue;

			// 记录当前切分。
			blocks[nblocks] = r;

			// 继续切分。
			cut_by_tip(area - (r * r), blocks, nblocks + 1, goal);

			// 根据 finished 标志决定是否提前退出。
			if (finished)
				return;
		}
	}
}

// 使用回溯法构建拆分方案。参数为尚未切分的面积数量。
void cut_by_hard_work(int area, int blocks[NMAX], int nblocks)
{
	// 当切分纸片数达到当前可行的最小纸片数，但仍有面积剩余，不需继续尝试。
	if (area >= 0 && nblocks > smallest)
		return;

	// 对于纸张数为 smallest 来说，已经找到了一个实际拼接方案，则对于同样的纸张数来说，其他
	// 拆分方案不必再去尝试。
	if (area == 0 && nblocks == smallest && found)
		return;

	// 启发式规则：至少有两张边长为 1 的纸片。
	if (area == 0 && ncount[1] <= 1)
		return;

	// 切分完毕，且切分方案纸片张数较当前最优值 smallest 小。
	if (area == 0)
	{
		int temp[NMAX];

		// 注意数组作为形式参数时，传递的是指针，故不能使用 sizeof(blocks) 来计算
		// 数组 blocks 的大小。
		memcpy(temp, blocks, NMAX * sizeof(int));

		// 将纸片大小按从大到小排序。
		sort(temp, temp + nblocks, cmp);

		// 不检测当前方案是否与之前生成的未能成功拼接的方案重复，会增加搜索时间。
		// 但检测的话生成方案数很多，需要多量的内存。

		// 重置网格。
		memset(cell, 0, sizeof(cell));

		// 尝试拼接。
		finished = false;
		fill(temp, 0, nblocks, false);
		if (finished)
		{
			smallest = nblocks;
			found = true;
		}
	}
	else
	{
		// 找到能切分出的最大边长的纸片。
		int c, r, up, down, step;
		for (r = n - 2; r >= 1; r--)
			if (area >= (r * r))
				break;

		c = r;
		step = (nblocks == 0) ? 1 : (-1);
		r = (nbloc


        int n = s.length();
        int arr[] = new int[n];

        for (int i = 0; i < n; i++) {

            if (i == 0)
                // No. of occurrences of 0th character
                // in all the substrings
                arr[i] = n;

            else
                // No. of occurrences of ith character
                // in all the substrings
                arr[i] = (n - i) + arr[i - 1] - i;
        }

        int sum = 0;
        for (int i = 0; i < n; i++) {
            char ch = s.charAt(i);
            // Check if ith character is a vowel
            if (ch == 'a' || ch == 'e' || ch == 'i'
                || ch == 'o' || ch == 'u')
                sum += arr[i];
        }

        // Return the total sum
        // of occurrences of vowels
        return sum;
    }

    // Driver Code
    public static void main(String args[])
    {
        String s = "daceh";
        System.out.println(vowel_calc(s));
    }
}

```

## Python3

```py

# Python 3 implementation of
# a more efficient approach.
# return sum of all occurrences of all vowels
def sumVowel(string):
    n = len(string)
    sum = 0
    string = string.lower()

    # iterate through every character in the string
    for i in range(0, n):
        s = string[i]

        # checks if the character is a vowel or not
        if (s=="a" or s == "e" or s == "i" or s == "o" or s == "u"):

            # uses below expression to calculate the count
                        # of all occurrences of character in substrings
                        # of the string
            sum += ((n - i) * (i + 1))

    # return the total sum of occurrence
    return sum

#driver code
if __name__ == '__main__':
    #input string here
    string = "abhay"
    #print returned sum
    print(sumVowel(string))

# This code is contributed by
# Abhay Subramanian K

```

## C#

```cs

// C# implementation of the above approach

using System;

public class Gfg {

    // Returns the total sum of
    // occurrences of all vowels
    static int vowel_calc(string s)
    {
        int n = s.Length;
        int[] arr = new int[n];

        for (int i = 0; i


    std::cerr << "Tree  is valid\n";
  else
    std::cerr << "Tree is not valid\n";
  return 0;
}
// Copyright (c) 1997
// Utrecht University (The Netherlands),
// ETH Zurich (Switzerland),
// INRIA Sophia-Antipolis (France),
// Max-Planck-Institute Saarbruecken (Germany),
// and Tel-Aviv University (Israel).  All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 3 of the License,
// or (at your option) any later version.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
//
// Author(s)     : Lutz Kettner  <kettner@mpi-sb.mpg.de>

#ifndef CGAL_HEADER_ONLY

#include <CGAL/IO/File_writer_wavefront.h>
#include <CGAL/IO/File_writer_wavefront_impl.h>

#endif // CGAL_HEADER_ONLY

// EOF //
// This file is a copy of the file distributed with boost 1.55
// It is distributed with CGAL to work around a bug in boost 1.54
// and must be used only with boost 1.54 by including
// CGAL/boost/graph/dijkstra_shortest_paths.hpp

//=======================================================================
// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//=======================================================================
//
//
// Revision History:
//   04 April 2001: Added named parameter variant. (Jeremy Siek)
//   01 April 2001: Modified to use new <boost/limits.hpp> header. (JMaddock)
//
#ifndef BOOST_GRAPH_DIJKSTRA_HPP
#define BOOST_GRAPH_DIJKSTRA_HPP

#include <functional>
#include <boost/limits.hpp>
#include <boost/graph/named_function_params.hpp>
#include <boost/graph/breadth_first_search.hpp>
#include <boost/graph/relax.hpp>
#include <boost/pending/indirect_cmp.hpp>
#include <boost/graph/exception.hpp>
#include <boost/pending/relaxed_heap.hpp>
#include <boost/graph/overloading.hpp>
#include <boost/smart_ptr.hpp>
#include <boost/graph/detail/d_ary_heap.hpp>
#include <boost/graph/two_bit_color_map.hpp>
#include <boost/property_map/property_map.hpp>
#include <boost/property_map/vector_property_map.hpp>
#include <boost/type_traits.hpp>
#include <boost/concept/assert.hpp>

#ifdef BOOST_GRAPH_DIJKSTRA_TESTING
#  include <boost/pending/mutable_queue.hpp>
#endif // BOOST_GRAPH_DIJKSTRA_TESTING

namespace boost {

  /**
   * @brief Updates a particular value in a queue used by Dijkstra's
   * algorithm.
   *
   * This routine is called by Dijkstra's algorithm after it has
   * decreased the distance from the source vertex to the given @p
   * vertex. By default, this routine will just call @c
   * Q.update(vertex). However, other queues may provide more
   * specialized versions of this routine.
   *


RAMP_DESCR_NUM_MAPPINGS], %l2
	add		%l0, HVTRAMP_DESCR_MAPS, %l3

1:	ldx		[%l3 + HVTRAMP_MAPPING_VADDR], %o0
	clr		%o1
	ldx		[%l3 + HVTRAMP_MAPPING_TTE], %o2
	mov		HV_MMU_IMMU | HV_MMU_DMMU, %o3
	mov		HV_FAST_MMU_MAP_PERM_ADDR, %o5
	ta		HV_FAST_TRAP

	brnz,pn		%o0, 80f
	 nop

	add		%l1, 1, %l1
	cmp		%l1, %l2
	blt,a,pt	%xcc, 1b
	 add		%l3, HVTRAMP_MAPPING_SIZE, %l3

	ldx		[%l0 + HVTRAMP_DESCR_FAULT_INFO_PA], %o0
	mov		HV_FAST_MMU_FAULT_AREA_CONF, %o5
	ta		HV_FAST_TRAP

	brnz,pn		%o0, 80f
	 nop

	wrpr		%g0, (PSTATE_PRIV | PSTATE_PEF), %pstate

	ldx		[%l0 + HVTRAMP_DESCR_THREAD_REG], %l6

	mov		1, %o0
	set		1f, %o1
	mov		HV_FAST_MMU_ENABLE, %o5
	ta		HV_FAST_TRAP

	ba,pt		%xcc, 80f
	 nop

1:
	wr		%g0, 0, %fprs
	wr		%g0, ASI_P, %asi

	mov		PRIMARY_CONTEXT, %g7
	stxa		%g0, [%g7] ASI_MMU
	membar		#Sync

	mov		SECONDARY_CONTEXT, %g7
	stxa		%g0, [%g7] ASI_MMU
	membar		#Sync

	mov		%l6, %g6
	ldx		[%g6 + TI_TASK], %g4

	mov		1, %g5
	sllx		%g5, THREAD_SHIFT, %g5
	sub		%g5, (STACKFRAME_SZ + STACK_BIAS), %g5
	add		%g6, %g5, %sp

	call		init_irqwork_curcpu
	 nop
	call		hard_smp_processor_id
	 nop

	call		sun4v_register_mondo_queues
	 nop

	call		init_cur_cpu_trap
	 mov		%g6, %o0

	wrpr		%g0, (PSTATE_PRIV | PSTATE_PEF | PSTATE_IE), %pstate

	call		smp_callin
	 nop

	call		cpu_panic
	 nop

80:	ba,pt		%xcc, 80b
	 nop

	.align		8
hv_cpu_startup_end:


要塞，北風凍原",
	[246] = "嘶軸簡易機場，北風凍原",
	[247] = "繁星之眠，龍骨荒野",
	[248] = "藥劑師營地，凜風峽灣",
	[249] = "歐尼克瓦營地，灰白之丘",
	[250] = "征服堡，灰白之丘",
	[251] = "弗塔根堡，龍骨荒野",
	[252] = "龍眠神殿，龍骨荒野",
	[253] = "琥珀松小屋，灰白之丘",
	[254] = "毒怨之地，龍骨荒野",
	[255] = "西荒兵團，灰白之丘",
	[256] = "阿格瑪之錘，龍骨荒野",
	[257] = "戰歌堡，北風凍原",
	[258] = "坦卡雷村，北風凍原",
	[259] = "博格洛克前哨，北風凍原",
	[260] = "柯爾克隆先鋒駐地，龍骨荒野",
	[261] = "任務 - 繁星之眠到溫特加德結束",
	[262] = "灰白之丘，聯盟木材行開始01",
	[263] = "灰白之丘，聯盟木材行結束01",
	[264] = "傳送，奧伯丁 (NEW)",
	[265] = "傳送，塞拉摩 (NEW)",
	[266] = "傳送，米奈希爾 (NEW)",
	[267] = "灰白之丘，聯盟木材行開始",
	[268] = "灰白之丘，聯盟木材行結束",
	[269] = "任務 - 鎮西要塞到溫特加德要塞開始",
	[270] = "任務 - 鎮西要塞到溫特加德要塞結束",
	[271] = "灰白之丘，部落木材行開始",
	[272] = "灰白之丘，部落木材行結束",
	[273] = "龍眠神殿 - 下層到上層，龍骨荒野 - 起點",
	[274] = "龍眠神殿 - 下層到上層，龍骨荒野 - 終點",
	[275] = "龍眠神殿 - 上層到下層，龍骨荒野 - 起點",
	[276] = "龍眠神殿 - 上層到下層，龍骨荒野 - 終點",
	[277] = "龍眠神殿 - 上層到中層，龍骨荒野 - 起點",
	[278] = "龍眠神殿 - 上層到中層，龍骨荒野 - 終點",
	[279] = "龍眠神殿 - 中層到


from django.contrib import admin
from Inventario.models import Categoria,Marca,Producto

class MarcaAdmin(admin.ModelAdmin):
    list_display = ['nombre','imagen', 'descripcion']

class CategoriaAdmin(admin.ModelAdmin):
    list_display = ['nombre','imagen','descripcion']

class ProductoAdmin(admin.ModelAdmin):
    list_display = ['nombre','precio','disponibilidad','cantidad','categoria','imagen']

admin.site.register(Marca, MarcaAdmin)
admin.site.register(Categoria,CategoriaAdmin)
admin.site.register(Producto, ProductoAdmin)


init()
        }
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sg_shader_image_desc {
    pub name: *const ::std::os::raw::c_char,
    pub image_type: sg_image_type,
    pub sampler_type: sg_sampler_type,
}
impl Default for sg_shader_image_desc {
    fn default() -> Self {
        let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sg_shader_stage_desc {
    pub source: *const ::std::os::raw::c_char,
    pub bytecode: sg_range,
    pub entry: *const ::std::os::raw::c_char,
    pub d3d11_target: *const ::std::os::raw::c_char,
    pub uniform_blocks: [sg_shader_uniform_block_desc; 4usize],
    pub images: [sg_shader_image_desc; 12usize],
}
impl Default for sg_shader_stage_desc {
    fn default() -> Self {
        let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sg_shader_desc {
    pub _start_canary: u32,
    pub attrs: [sg_shader_attr_desc; 16usize],
    pub vs: sg_shader_stage_desc,
    pub fs: sg_shader_stage_desc,
    pub label: *const ::std::os::raw::c_char,
    pub _end_canary: u32,
}
impl Default for sg_shader_desc {
    fn default() -> Self {
        let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sg_buffer_layout_desc {
    pub stride: ::std::os::raw::c_int,
    pub step_func: sg_vertex_step,
    pub step_rate: ::std::os::raw::c_int,
}
impl Default for sg_buffer_layout_desc {
    fn default() -> Self {
        let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sg_vertex_attr_desc {
    pub buffer_index: ::std::os::raw::c_int,
    pub offset: ::std::os::raw::c_int,
    pub format: sg_vertex_format,
}
impl Default for sg_vertex_attr_desc {
    fn default() -> Self {
        let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sg_layout_desc {
    pub buffers: [sg_buffer_layout_desc; 8usize],
    pub attrs: [sg_vertex_attr_desc; 16usize],
}
impl


'
        'ど' -> 'と'

        'は' -> 'ば'
        'ば' -> 'ぱ'
        'ぱ' -> 'は'
        'ひ' -> 'び'
        'び' -> 'ぴ'
        'ぴ' -> 'ひ'
        'ふ' -> 'ぶ'
        'ぶ' -> 'ぷ'
        'ぷ' -> 'ふ'
        'へ' -> 'べ'
        'べ' -> 'ぺ'
        'ぺ' -> 'へ'
        'ほ' -> 'ぼ'
        'ぼ' -> 'ぽ'
        'ぽ' -> 'ほ'

        'や' -> 'ゃ'
        'ゃ' -> 'や'
        'ゆ' -> 'ゅ'
        'ゅ' -> 'ゆ'
        'よ' -> 'ょ'
        'ょ' -> 'よ'

        'わ' -> 'ゎ'
        'ゎ' -> 'わ'

        'a' -> 'A'
        'b' -> 'B'
        'c' -> 'C'
        'A' -> 'a'
        'B' -> 'b'
        'C' -> 'c'

        'd' -> 'D'
        'e' -> 'E'
        'f' -> 'F'
        'D' -> 'd'
        'E' -> 'e'
        'F' -> 'f'

        'g' -> 'G'
        'h' -> 'H'
        'i' -> 'I'
        'G' -> 'g'
        'H' -> 'h'
        'I' -> 'i'

        'j' -> 'J'
        'k' -> 'K'
        'l' -> 'L'
        'J' -> 'j'
        'K' -> 'k'
        'L' -> 'l'

        'm' -> 'M'
        'n' -> 'N'
        'o' -> 'O'
        'M' -> 'm'
        'N' -> 'n'
        'O' -> 'o'

        'p' -> 'P'
        'q' -> 'Q'
        'r' -> 'R'
        's' -> 'S'
        'P' -> 'p'
        'Q' -> 'q'
        'R' -> 'r'
        'S' -> 's'

        't' -> 'T'
        'u' -> 'U'
        'v' -> 'V'
        'T' -> 't'
        'U' -> 'u'
        'V' -> 'v'

        'w' -> 'W'
        'x' -> 'X'
        'y' -> 'Y'
        'z' -> 'Z'
        'W' -> 'w'
        'X' -> 'x'
        'Y' -> 'y'
        'Z' -> 'z'

        else -> null
    }
}

/** 濁点 **/
fun Char.getDakutenFlickLeft(): Char? {
    return when (this) {
        'う', 'ぅ' -> 'ゔ'
        'か' -> 'が'
        'き' -> 'ぎ'
        'く' -> 'ぐ'
        'け' -> 'げ'
        'こ' -> 'ご'
        'さ' -> 'ざ'
        'し' -> 'じ'
        'す' -> 'ず'
        'せ' -> 'ぜ'
        'そ' -> 'ぞ'
        'た' -> 'だ'
        'ち' -> 'ぢ'
        'つ', 'っ' -> 'づ'
        'て' -> 'で'
        'と' -> 'ど'
        'は', 'ぱ' -> 'ば'
        'ひ', 'ぴ' -> 'び'
        'ふ', 'ぷ' -> 'ぶ'
        'へ', 'ぺ' -> 'べ'
        'ほ', 'ぽ' -> 'ぼ'
        else -> null
    }
}

/** 半濁点 **/
fun Char.getDakutenFlickRight(): Char? {
    return when


substract 8 from the vtbl method poner before calling in.

*/

    .global doThunk
    .type   doThunk,2

    .global __0fMCMethodThunkHdoThunkPve
    .type   __0fMCMethodThunkHdoThunkPve,2

    .global __0fMCMethodThunkHdoThunkie
    .type   __0fMCMethodThunkHdoThunkie,2

    .global __0fMCMethodThunkHdoThunkv
    .type   __0fMCMethodThunkHdoThunkv,2

    .global __0fMCMethodThunkHdoThunk6F_GUIDe
    .type   __0fMCMethodThunkHdoThunk6F_GUIDe,2

    .global __0fMCMethodThunkHdoThunkR6QTextContextEvent
    .type   __0fMCMethodThunkHdoThunkR6QTextContextEvent,2

doThunk:
__0fMCMethodThunkHdoThunkR6QTextContextEvent:
__0fMCMethodThunkHdoThunkie:
__0fMCMethodThunkHdoThunkv:
__0fMCMethodThunkHdoThunk6F_GUIDe:
__0fMCMethodThunkHdoThunkPve:
    save    %sp,-64,%sp
    lduw    [this +4], vtbl    /* vtbl = this->pfnMethod */
    lduw    [this], this       /* this = this->pObject */

    ba      CompleteThunk0
    dec     8, vtbl            /* vtbl = vtbl - sizeof(VTABLE_ENTRY) */


ry_'+dpuuid+".datepicker._selectDay('#"+a.id+"',"+Y.getMonth()+","+Y.getFullYear()+', this);return false;"')+">"+(bb&&!G?" ":bc?''+Y.getDate()+"":''+Y.getDate()+"")+"	",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"
"}n++,n>11&&(n=0,o++),Q+="

"+(j?"
"+(g[0]>0&&N==g[1]-1?'

':""):""),M+=Q}K+=M}K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'':""),a._keyEvent=!1;return K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='
',m="";if(f||!i)m+=''+g[b]+"";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+='<option value="'+p+'"'+(p==b?' selected="selected"':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?" ":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+=''+c+"";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" "+">";for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?" ":"")+m),l+="
";return l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=


  return true;
  }
  return false;
}

static AddressRanges
ConvertDWARFRanges(const DWARFAddressRangesVector &DwarfRanges) {
  AddressRanges Ranges;
  for (const DWARFAddressRange &DwarfRange : DwarfRanges) {
    if (DwarfRange.LowPC < DwarfRange.HighPC)
      Ranges.insert({DwarfRange.LowPC, DwarfRange.HighPC});
  }
  return Ranges;
}

static void parseInlineInfo(GsymCreator &Gsym, OutputAggregator &Out,
                            CUInfo &CUI, DWARFDie Die, uint32_t Depth,
                            FunctionInfo &FI, InlineInfo &Parent,
                            const AddressRanges &AllParentRanges,
                            bool &WarnIfEmpty) {
  if (!hasInlineInfo(Die, Depth))
    return;

  dwarf::Tag Tag = Die.getTag();
  if (Tag == dwarf::DW_TAG_inlined_subroutine) {
    // create new InlineInfo and append to parent.children
    InlineInfo II;
    AddressRanges AllInlineRanges;
    Expected<DWARFAddressRangesVector> RangesOrError = Die.getAddressRanges();
    if (RangesOrError) {
      AllInlineRanges = ConvertDWARFRanges(RangesOrError.get());
      uint32_t EmptyCount = 0;
      for (const AddressRange &InlineRange : AllInlineRanges) {
        // Check for empty inline range in case inline function was outlined
        // or has not code
        if (InlineRange.empty()) {
          ++EmptyCount;
        } else {
          if (Parent.Ranges.contains(InlineRange)) {
            II.Ranges.insert(InlineRange);
          } else {
            // Only warn if the current inline range is not within any of all
            // of the parent ranges. If we have a DW_TAG_subpgram with multiple
            // ranges we will emit a FunctionInfo for each range of that
            // function that only emits information within the current range,
            // so we only want to emit an error if the DWARF has issues, not
            // when a range currently just isn't in the range we are currently
            // parsing for.
            if (AllParentRanges.contains(InlineRange)) {
              WarnIfEmpty = false;
            } else
              Out.Report("Function DIE has uncontained address range",
                         [&](raw_ostream &OS) {
                           OS << "error: inlined function DIE at "
                              << HEX32(Die.getOffset()) << " has a range ["
                              << HEX64(InlineRange.start()) << " - "
                              << HEX64(InlineRange.end())
                              << ") that isn't contained in "
                              << "any parent address ranges, this inline range "
                                 "will be "
                                 "removed.\n";
                         });
          }
        }
      }
      // If we have all empty ranges for the inlines, then don't warn if we
      // have an empty InlineInfo at the top level as all inline functions
      // were elided.
      if (EmptyCount == AllInlineRanges.size())
        WarnIfEmpty = false;
    }
    if (II.Ranges.empty())
      return;

    if (auto NameIndex = getQualifiedNameIndex(Die, CUI.Language, Gsym))
      II.Name = *NameIndex;
    const uint64_t DwarfFileIdx = dwarf::toUnsigned(
        Die.findRecursively(dwarf::DW_AT_call_file), UINT32_MAX);
    std::optional<uint32_t> OptGSymFileIdx =
        CUI.DWARFToGSYMFileIndex(Gsym, DwarfFileIdx);
    if (OptGSymFileIdx) {
      II.CallFile = OptGSymFileIdx.value();


the node swap with highest gain. However, the lazy update strategy ensures
        // that the gains are accurate and give a good estimate.
        pq.push(PQElement { recomputed_gain, elem.swap });
        continue;
      }

      // Perform swap
      vertex_swap(communication_hg, u, v);
      current_objective -= gain;
      performed_swaps.push_back(elem);
      already_moved[u] = true;
      already_moved[v] = true;
      DBG << "Swap block ID of nodes" << u << "and" << v << "with gain" << gain
          << "( New Objective =" << current_objective << ")";
      if ( current_objective <= best_objective ) {
        best_idx = performed_swaps.size();
        best_objective = current_objective;
      }
      ASSERT(current_objective == metrics::quality(communication_hg, Objective::steiner_tree));
    }

    // Rollback to best seen solution
    for ( int i = performed_swaps.size() - 1; i >= best_idx; --i ) {
      const PQElement& elem = performed_swaps[i];
      vertex_swap(communication_hg, elem.swap.first, elem.swap.second);
      current_objective += elem.gain;
    }
    ASSERT(current_objective == metrics::quality(communication_hg, Objective::steiner_tree));
    ASSERT(current_objective == best_objective);

    if ( current_objective == objective_before ) {
      ++fruitless_rounds;
    } else {
      fruitless_rounds = 0;
    }

    found_improvement = best_idx > 0 && fruitless_rounds <= MAX_NUMBER_OF_FRUITLESS_ROUNDS;
    ++pass_nr;
  }
  DBG << "Local Search Result =" << current_objective << "\n";
}

INSTANTIATE_CLASS_WITH_PARTITIONED_HG(KerninghanLin)

}  // namespace kahypar
/*******************************************************************************
 * MIT License
 *
 * This file is part of Mt-KaHyPar.
 *
 * Copyright (C) 2021 Noah Wahl <noah.wahl@student.kit.edu>
 * Copyright (C) 2021 Tobias Heuer <tobias.heuer@kit.edu>
 * Copyright (C) 2021 Lars Gottesbüren <lars.gottesbueren@kit.edu>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 ******************************************************************************/

#include "mt-kahypar/partition/coarsening/multilevel_uncoarsener.h"
#include "mt-kahypar/definitions.h"
#include "mt-kahypar/io/partitioning_output.h"
#include "mt-kahypar/partition/refinement/i_refiner.h"
#include "mt-kahypar/partition/metrics.h"
#include "mt-kahypar/utils/stats.h


**این آموزش برای کسانی است که می‌خواهند گیم مود خود را از سرور SA:MP به سرور open.mp منتقل کنند.**

:::note

اگر از پلاگین FCNPC استفاده می‌کنید، لطفاً فعلاً متوقف شوید زیرا این پلاگین در حال حاضر برای open.mp کار نمی‌کند.

:::

## گام 1

آخرین نسخه فایل‌های سرور open.mp را از [https://github.com/openmultiplayer/open.mp/releases](https://github.com/openmultiplayer/open.mp/releases/latest) دانلود کنید

![](<https://raw.githubusercontent.com/adib-yg/openmp-server-installation/refs/heads/main/screenshots/Screenshot%20(1).png>)

- `open.mp-win-x86.zip` سرور **ویندوز**
- `open.mp-linux-x86.tar.gz` سرور **لینوکس**
- `open.mp-linux-x86-dynssl.tar.gz` سرور **لینوکس** (Dynamic SSL)

## گام 2

محتویات آرشیو `.zip` یا `.tar.gz` را روی دیسک خود extract کنید

![](<https://raw.githubusercontent.com/adib-yg/openmp-server-installation/refs/heads/main/screenshots/Screenshot%20(3).png>)

:::note

- **components:** کامپوننت‌های open.mp
- **filterscripts:** فایل‌های فیلتر اسکریپت سرور شما (اسکریپت‌های جانبی)
- **gamemodes:** فایل‌های گیم مود سرور شما (اسکریپت‌های اصلی)
- **models:** مدل‌های سفارشی سرور شما (بافت‌ها .txd .dff)
- **plugins:** فایل‌های پلاگین سرور شما (پلاگین‌های قدیمی)
- **qawno:** برنامه ویرایشگر Pawn و include های سرور شما
- **scriptfiles:** فایل‌های INI یا چیزهای دیگر.
- **bans.json:** فایل لیست بن
- **config.json:** فایل پیکربندی سرور
- **omp-server.exe:** برنامه سرور open.mp
- **omp-server.pdb:** فایل دیباگ سرور open.mp

:::

## گام 3

فایل گیم مود `.pwn` خود را در پوشه **gamemodes** قرار دهید

## گام 4

include های مورد نیاز (مثلاً `sscanf2.inc`، `streamer.inc`) را در پوشه **qawno/include** قرار دهید

:::note

اگر از include های YSI-4 در گیم مود خود استفاده می‌کنید، به [YSI-5.x](https://github.com/pawn-lang/YSI-Includes/releases) بروزرسانی کنید

:::

## گام 5

پلاگین‌های مورد نیاز (مثلاً `sscanf.dll`، `streamer.dll`) را در پوشه **plugins** قرار دهید

<hr />

:::warning

اگر از پلاگین‌های زیر در جدول استفاده می‌کنید، باید نسخه‌ای از پلاگین که با omp سازگار ا


by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

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

   You should have received a copy of the GNU General Public License
   along with this library.  If not, see <http://www.gnu.org/licenses/>.

     $Id$

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

#include "config.h"
#include "musicbrainz5/defines.h"

#include "musicbrainz5/Medium.h"

#include "musicbrainz5/Disc.h"
#include "musicbrainz5/DiscList.h"
#include "musicbrainz5/Track.h"
#include "musicbrainz5/TrackList.h"

class MusicBrainz5::CMediumPrivate
{
	public:
		CMediumPrivate()
		:	m_Position(0),
			m_DiscList(0),
			m_TrackList(0)
		{
		}

		std::string m_Title;
		int m_Position;
		std::string m_Format;
		CDiscList *m_DiscList;
		CTrackList *m_TrackList;
};

MusicBrainz5::CMedium::CMedium(const XMLNode& Node)
:	CEntity(),
	m_d(new CMediumPrivate)
{
	if (!Node.isEmpty())
	{
		//std::cout << "Medium node: " << std::endl << Node.createXMLString(true) << std::endl;

		Parse(Node);
	}
}

MusicBrainz5::CMedium::CMedium(const CMedium& Other)
:	CEntity(),
	m_d(new CMediumPrivate)
{
	*this=Other;
}

MusicBrainz5::CMedium& MusicBrainz5::CMedium::operator =(const CMedium& Other)
{
	if (this!=&Other)
	{
		Cleanup();

		CEntity::operator =(Other);

		m_d->m_Title=Other.m_d->m_Title;
		m_d->m_Position=Other.m_d->m_Position;
		m_d->m_Format=Other.m_d->m_Format;

		if (Other.m_d->m_DiscList)
			m_d->m_DiscList=new CDiscList(*Other.m_d->m_DiscList);

		if (Other.m_d->m_TrackList)
			m_d->m_TrackList=new CTrackList(*Other.m_d->m_TrackList);
	}

	return *this;
}

MusicBrainz5::CMedium::~CMedium()
{
	Cleanup();

	delete m_d;
}

void MusicBrainz5::CMedium::Cleanup()
{
	delete m_d->m_DiscList;
	m_d->m_DiscList=0;

	delete m_d->m_TrackList;
	m_d->m_TrackList=0;
}

MusicBrainz5::CMedium *MusicBrainz5::CMedium::Clone()
{
	return new CMedium(*this);
}

void MusicBrainz5::CMedium::ParseAttribute(const std::string& Name, const std::string& /*Value*/)
{
#ifdef _MB5_DEBUG_
	std::cerr << "Unrecognised medium attribute: '" << Name << "'" << std::endl;
#else
	(void)Name;
#endif
}

void MusicBrainz5::CMedium::ParseElement(const XMLNode& Node)
{
	std::string NodeName=Node.getName();

	if ("title"==NodeName)
	{
		ProcessItem(Node,m_d->m_Title);
	}


des (CC)
 * are not stored in the output and the max code length in bits is 12, vs 16 in compress.
 *
 * EOI is simply detected by the end of the data stream, while CC happens if the
 * dictionary gets filled. Data is written/read from bit streams, which handle
 * byte-alignment for us in a transparent way.

 * The decoder relies on the hardcoded data layout produced by the encoder, since
 * no additional reconstruction data is added to the output, so they must match.
 * The nice thing about LZW is that we can reconstruct the dictionary directly from
 * the stream of codes generated by the encoder, so this avoids storing additional
 * headers in the bit stream.

 * The output code length is variable. It starts with the minimum number of bits
 * required to store the base byte-sized dictionary and automatically increases
 * as the dictionary gets larger (it starts at 9-bits and grows to 10-bits when
 * code 512 is added, then 11-bits when 1024 is added, and so on). If the dictionary
 * is filled (4096 items for a 12-bits dictionary), the whole thing is cleared and
 * the process starts over. This is the main reason why the encoder and the decoder
 * must match perfectly, since the lengths of the codes will not be specified with
 * the data itself.

 * USEFUL LINKS:
 * https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch
 * http://rosettacode.org/wiki/LZW_compression
 * http://www.cs.duke.edu/csed/curious/compression/lzw.html
 * http://www.cs.cf.ac.uk/Dave/Multimedia/node214.html
 * http://marknelson.us/1989/10/01/lzw-data-compression/
 */
#include "config.h"

#include <string>
#include <memory.h>
#include "tvgCompressor.h"

namespace tvg {

/************************************************************************/
/* LZW Implementation                                                   */
/************************************************************************/

//LZW Dictionary helper:
constexpr int Nil = -1;
constexpr int MaxDictBits = 12;
constexpr int StartBits = 9;
constexpr int FirstCode = (1 << (StartBits - 1)); // 256
constexpr int MaxDictEntries = (1 << MaxDictBits);     // 4096

//Round up to the next power-of-two number, e.g. 37 => 64
static int nextPowerOfTwo(int num)
{
    --num;
    for (size_t i = 1; i < sizeof(num) * 8; i <<= 1) {
        num = num | num >> i;
    }
    return ++num;
}

struct BitStreamWriter
{
    uint8_t* stream;       //Growable buffer to store our bits. Heap allocated & owned by the class instance.
    int bytesAllocated;    //Current size of heap-allocated stream buffer *in bytes*.
    int granularity;       //Amount bytesAllocated multiplies by when auto-resizing in appendBit().
    int currBytePos;       //Current byte being written to, from 0 to bytesAllocated-1.
    int nextBitPos;        //Bit position within the current byte to access next. 0 to 7.
    int numBitsWritten;    //Number of bits in use from the stream buffer, not including byte-rounding padding.

    void internalInit()
    {
        stream = nullptr;
        bytesAllocated = 0;
        granularity = 2;
        currBytePos = 0;
        nextBitPos = 0;
        numBitsWritten = 0;
    }

    uint8_t* allocBytes(const int bytesWanted, uint8_t * oldPtr, const int oldSize)
    {
        auto newMemory = static_cast<uint8_t *>(malloc(bytesWanted));
        memset(newMemory, 0, bytesWanted);

        if (oldPtr) {
            memcpy(newMemory, oldPtr, oldSize);
            free(oldPtr);
        }
        return newMemory;
    }

    BitStreamWriter()
    {
        /* 8192 bits for a start (1024 bytes). It will resize if needed.
           Default granularity is


EEn1JWquzclJidvyCITQ+8K/6bEqJaB4Drj0HA8ptX
									k0bOjMF+dfve8efcykBEXzGfywTddIZy/QgloZiGY/S+ne2bJboo/kjVYoA8blU4
									z0NyldTf9dRBCzRhL/gSA+Gh+XPBLD5vdo8HalFsmbABbQpQHX69CxccB5a/QwMy
									vsdMmeEXrZ0p4RfXH+S2ZHSnGaVr7MONCoGtbrWril5wWWLE2SQapM5M4J5CJ15C
									RwIDAQAB`;
			let rsa = new JSEncrypt();
			rsa.setPublicKey(publicKey);
			return rsa.encrypt(key);
		}
		/**
		 * 用RSA私钥 解密
		 */
		public static RSADecrypt(data: any, privateKey: string): any {
			let rsa = new JSEncrypt();
			rsa.setPrivateKey(privateKey);
			return rsa.decrypt(data);
		}
		/**
		 * DES加密
		 */
		public static DESEncrypt(data, key): any {
			let keyHex = CryptoJS.enc.Utf8.parse(key);
			let encrypted = CryptoJS.DES.encrypt(data, keyHex, {
				mode: CryptoJS.mode.ECB,
				padding: CryptoJS.pad.Pkcs7
			});
			return encrypted.toString();
		}
		/**
		 * DES解密
		 */
		public static DESDecrypt(data, key): any {
			let keyHex = CryptoJS.enc.Utf8.parse(key);
			let decrypted = CryptoJS.DES.decrypt(data, keyHex, {
				mode: CryptoJS.mode.ECB,
				padding: CryptoJS.pad.Pkcs7
			})
			return decrypted.toString(CryptoJS.enc.Utf8)
		}
	}
}import { Component, OnInit } from '@angular/core';
import { Hero } from './hero';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent implements OnInit {
  constructor() { }
  ngOnInit() {
    this.resetHeroes();
    this.setCurrentClasses();
  }

  heroes: Hero[];
  currentHero: Hero;
  resetHeroes() {
    this.heroes = Hero.heroes.map(hero => hero.clone())
    this.currentHero = this.heroes[0];
  }

  onSave(event?: KeyboardEvent) {
    let evtMsg = event ? ' Event target is ' + (<HTMLElement>event.target).textContent : '';
    console.log('Saved.' + evtMsg);
    if (event) { event.stopPropagation(); }
  }

  deleteHero(hero?: Hero) {
    console.log(`Delete ${hero ? hero.name : 'the hero'}.`);
  }
  // interpolation
  title = 'Template Syntax';
  heroImageUrl = 'assets/images/hero.png';
  getVal(): number { return 2; }

  // mental-model
  isUnchanged = true;
  isSpecial = true;
  clicked = '';
  name: string = Hero.heroes[0].name;
  help = '';

  //  property vs. attribute
  iconUrl = 'assets/images/ng-logo.png';
  villainImageUrl = 'assets/images/villain.png';

  //  property
  canSave = true;
  classes = 'special';

  // attribute
  actionName = 'Got for it';

  // class
  badCurly = 'bad curly';

  // event
  onClickMe(event?: KeyboardEvent) {
    let evtMsg = event ? ' Event target class is ' + (<HTMLElement>event.target).className : '';
    console.log('Click me.' + evtMsg);
  }

  fontSize


&&g=="top-bottom"||h=="right-left"&&g=="bottom-top"){c--;
if(c>=0)for(f=0;f<e[c].length;f++){d=e[c][f]+1;j.children(":nth-child("+d+")").animate({opacity:k},a.time,function(){if(b){l(j,e,c,h,g,k);b=false}})}else i.isFunction(a.complete)&&a.complete.apply(this)}}var a=i.extend({},i.fn.diagonalFade.defaultOptions,n);return this.each(function(){for(var j=i(this),e=j.width(),f=j.height(),h=j.children(),g=i(h[0]).outerWidth(true),k=i(h[0]).outerHeight(true),e=Math.floor(e/g),f=Math.floor(f/k),k=[],g=[],c=0,b=0;b<f;b++){k[b]=Array(e);for(var d=0;d<e;d++)if(h[b*
e+d]&&h[b*e+d].offsetWidth>0&&h[b*e+d].offsetHeight>0){k[b][d]=c;c++}}switch(a.fade){case "in":var m=1;break;case "out":m=0}if(a.fadeDirection_y=="top-bottom"&&a.fadeDirection_x=="left-right"||a.fadeDirection_y=="bottom-top"&&a.fadeDirection_x=="right-left"){for(b=0;b<f+e-1;b++){h=b<e?0:b-e+1;c=[];for(d=b-(b<f?0:b-f+1);d>=h;d--)c.push(k[d][b-d]);g.push(c)}if(a.fadeDirection_y=="top-bottom"&&a.fadeDirection_x=="left-right")l(j,g,-1,a.fadeDirection_x,a.fadeDirection_y,m);else if(a.fadeDirection_y==
"bottom-top"&&a.fadeDirection_x=="right-left"){c=g.length;l(j,g,c,a.fadeDirection_x,a.fadeDirection_y,m)}}else if(a.fadeDirection_y=="bottom-top"&&a.fadeDirection_x=="left-right"||a.fadeDirection_y=="top-bottom"&&a.fadeDirection_x=="right-left"){for(b=1-f;b<e;b++){c=[];for(d=0;d<f;d++)b+d>=0&&b+d<e&&c.push(k[d][b+d]);g.push(c)}if(a.fadeDirection_y=="bottom-top"&&a.fadeDirection_x=="left-right")l(j,g,-1,a.fadeDirection_x,a.fadeDirection_y,m);else if(a.fadeDirection_y=="top-bottom"&&a.fadeDirection_x==
"right-left"){c=g.length;l(j,g,c,a.fadeDirection_x,a.fadeDirection_y,m)}}})};i.fn.diagonalFade.defaultOptions={time:100,fadeDirection_x:"left-right",fadeDirection_y:"top-bottom",fade:"out",complete:null}})(jQuery);/**
 * jQuery Diagonal Matrix Fade Plugin
 * Examples and documentation at: http://jonobr1.github.com/diagonalFade
 * Copyright (c) 2010 Jono Brandel
 * Version: .01 (18-MAY-2010)
 * Requires: jQuery v1.3.2 or later
 *
 * TODO:
 * + Extend Cycle or write own (based on jquery.cycle.lite.js)
 * + Make it so it's not just for a fixed container
 *
 * Copyright 2010 jonobr1
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License f


2>

                                                                            熊猫正正

                                    2016-11-17

                                                                        共314905人围观
                                        ，发现 24 个不明物体

                                      系统安全终端安全

*本文原创作者：熊猫正正 ，本文属FreeBuf原创奖励计划，未经许可禁止转载

一、事件概述

 前段日子我的Mac电脑日历经常会弹一些推广链接广告啥的，不是在线澳门赌场，娱乐场，就是啪啪啪视频链接，反正这两类东西，大家都懂的，今天老婆回家，手机里又出现了，然后问我这是啥东西，怎么老是给我发这些消息，我才发现这东西”不简单“，之前在我Mac上出现没当回事，想想其实这种情况已经有一个月左右了，因为我老婆的appleid和我的Mac上使用的appleid是同一个，所以我们俩同时收到了这些垃圾推广信息，喜欢研究的我，当然也不能放过这个问题了，研究是什么原因？里面又隐藏着什么？能抓到一两个样本，就更好了，哈哈！

二、“真凶“追查记

 前面说到我的电脑经常会出现日历推送信息，如下图所示：


 only a single value (one row with one column),
//! then you can also deserialize into a plain `field`:
//!
//!   ```rust, no_run
//! # use hdbconnect::{Connection, HdbResult, IntoConnectParams};
//! # fn foo() -> HdbResult<()> {
//! # let mut connection = Connection::new("...")?;
//! # let qry = "";
//!   let result: u32 = connection.query(qry)?.try_into()?;
//! # Ok(())
//! # }
//!   ```
//!
//! # 4. Deserialization of field values
//!
//! The deserialization of individual values provides flexibility without data loss:
//!
//! * You can e.g. convert values from a nullable column into a plain field,
//!   provided that no NULL values are given in the result set.
//!
//! * Vice versa, you can use an `Option<field>` as target structure,
//!   even if the column is marked as NOT NULL.
//!
//! * Source and target integer types can differ from each other,
//!   as long as the concrete values can be assigned without loss.
//!
//! * You can convert numeric values on-the-fly into default String representations.
//!
//! You should use this flexibility with some care though, or you will face errors
//! when the data violates the boundaries of the target values.
//!
//!
//! # 5. Binary Values
//!
//! So far, specialization support is not yet in rust stable. Without that, you  have to use
//! [`serde_bytes::Bytes`] and [`serde_bytes::ByteBuf`]
//! as lean wrappers around `&[u8]` and `Vec<u8>`
//! to serialize into or deserialize from binary database types.
//!
//! ```ignore
//! let raw_data: Vec<u8> = ...;
//! insert_stmt.add_batch(&(Bytes::new(&*raw_data)))?;
//! ```
//!
//!
//! ```rust, no_run
//! # use hdbconnect::{Connection, ResultSet, HdbResult, IntoConnectParams};
//! # fn foo() -> HdbResult<()> {
//! # let qry = "";
//! # let mut connection = Connection::new("...")?;
//! # let resultset: ResultSet = connection.query(qry)?;
//! let bindata: serde_bytes::ByteBuf = resultset.try_into()?; // single binary field
//! let first_byte = bindata[0];
//! # Ok(())
//! # }
//! ```
//!
//!
//! # 6. LOBs
//! Binary and Character LOBs can be treated like "normal" binary and String data, i.e.
//! you can convert them with the methods described above into [`serde_bytes::ByteBuf`]
//! or String values (see [`serde_bytes`] for serde's specialties regarding bytes).
//!
//! If necessary, you can easily avoid materializing the complete "Large Object",
//! and stream it e.g. into a writer. For doing so, you convert the value into one of
//! `hdbconnect::{BLob, CLob, NCLob}`.
//!
//! In this example the [`NCLob`] will, while being read by `std::io::copy()`,
//! continuously fetch more data from the database until it is completely transferred:
//!
//! ```rust, no_run
//! use hdbconnect::{Connection, HdbResult, IntoConnectParams, ResultSet};
//! use hdbconnect::types::NCLob;
//! # fn foo() -> HdbResult<()> {
//! # let query = "";
//! # let mut connection = Connection::new("...")?;
//! # let mut resultset: ResultSet = connection.query(query)?;
//! # let mut writer: Vec<u8> = vec![];
//! let mut nclob: NCLob = resultset.into_single_row()?.into_single_value()?.try_into_nclob()?;
//! std::io::copy(&mut nclob, &mut writer)?;
//! # Ok(())
//! # }
//! ```
//!
//! [`Connection`]: ../struct.Connection.html
//! [`statement()`]: ../struct.Connection.html#method.statement
//! [`query()`]: ../struct.Connection.html#method.quer


///

  ///

  /// The version fails to be deleted.
  ///

  ///

  /// The LATEST_WORKING version will only be deleted if the recipe
  /// has no other versions. If you try to delete LATEST_WORKING
  /// while other versions exist (or if they can't be deleted), then
  /// LATEST_WORKING will be listed as partial failure in the
  /// response.
  ///
  /// May throw [ConflictException].
  /// May throw [ResourceNotFoundException].
  /// May throw [ValidationException].
  ///
  /// Parameter [name] :
  /// The name of the recipe whose versions are to be deleted.
  ///
  /// Parameter [recipeVersions] :
  /// An array of version identifiers, for the recipe versions to be deleted.
  /// You can specify numeric versions (X.Y) or
  /// LATEST_WORKING. LATEST_PUBLISHED is not
  /// supported.
  Future<BatchDeleteRecipeVersionResponse> batchDeleteRecipeVersion({
    required String name,
    required List<String> recipeVersions,
  }) async {
    final $payload = <String, dynamic>{
      'RecipeVersions': recipeVersions,
    };
    final response = await _protocol.send(
      payload: $payload,
      method: 'POST',
      requestUri:
          '/recipes/${Uri.encodeComponent(name)}/batchDeleteRecipeVersion',
      exceptionFnMap: _exceptionFns,
    );
    return BatchDeleteRecipeVersionResponse.fromJson(response);
  }

  /// Creates a new DataBrew dataset.
  ///
  /// May throw [AccessDeniedException].
  /// May throw [ConflictException].
  /// May throw [ServiceQuotaExceededException].
  /// May throw [ValidationException].
  ///
  /// Parameter [name] :
  /// The name of the dataset to be created. Valid characters are alphanumeric
  /// (A-Z, a-z, 0-9), hyphen (-), period (.), and space.
  ///
  /// Parameter [format] :
  /// The file format of a dataset that is created from an Amazon S3 file or
  /// folder.
  ///
  /// Parameter [pathOptions] :
  /// A set of options that defines how DataBrew interprets an Amazon S3 path of
  /// the dataset.
  ///
  /// Parameter [tags] :
  /// Metadata tags to apply to this dataset.
  Future<CreateDatasetResponse> createDataset({
    required Input input,
    required String name,
    InputFormat? format,
    FormatOptions? formatOptions,
    PathOptions? pathOptions,
    Map<String, String>? tags,
  }) async {
    final $payload = <String, dynamic>{
      'Input': input,
      'Name': name,
      if (format != null) 'Format': format.value,
      if (formatOptions != null) 'FormatOptions': formatOptions,
      if (pathOptions != null) 'PathOptions': pathOptions,
      if (tags != null) 'Tags': tags,
    };
    final response = await _protocol.send(
      payload: $payload,
      method: 'POST',
      requestUri: '/datasets',
      exceptionFnMap: _exceptionFns,
    );
    return CreateDatasetResponse.fromJson(response);
  }

  /// Creates a new job to analyze a dataset and create its data profile.
  ///
  /// May throw [AccessDeniedException].
  /// May throw [ConflictException].
  /// May throw [ResourceNotFoundException].
  /// May throw [ServiceQuotaExceededException].
  /// May throw [ValidationException].
  ///
  /// Parameter [datasetName] :
  /// The name of the dataset that this job is to act upon.
  ///
  /// Parameter [name] :
  /// The name of the job to be created. Valid characters are alphanumeric (A-Z,
  /// a-z, 0-9), hyphen (-), period (.), and space.
  ///
  /// Parameter [roleArn] :
  /// The Amazon Resource Name (ARN) of t


#ifndef NET_DUMMYBIND_H
#define NET_DUMMYBIND_H

// Copyright(C) Jukka Kokkonen, 2002

#include "../../container/LinkedList.h"
#include "../INetBind.h"
#include "DummyConnection.h"

namespace net
{
    namespace dummy
    {
        // proto
        class DummyDriver;

        /**
         * Dummy net bind interface.
         */
        class DummyBind : public INetBind {
        public:
            DummyBind(const char *name);

            virtual INetConnection *acceptConnection()
            throw (NetDriverException *);

            virtual void listen(int backlog)
            throw (NetDriverException *);

            virtual int getMaxBacklog();

            virtual void unbind()
            throw (NetDriverException *);

            virtual ~DummyBind();

            const char *getName();

        private:
            char *name;
            int acceptAmount;

            LinkedList *acceptedConnections;

            void addAcceptedConnection(DummyConnection *connection);

            bool isAcceptingConnections();

            friend DummyDriver;
        };
    }
}

#endif