text:
package com.ustc.dystu.dandelion;

import java.io.IOException;

import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.ustc.dystu.dandelion.bean.NoteInfo;
import com.ustc.dystu.dandelion.constant.Constants;
import com.ustc.dystu.dandelion.net.DandelionAPI;
import com.ustc.dystu.dandelion.utils.Logger;
import com.ustc.dystu.dandelion.utils.blow.Parameter;
import com.ustc.dystu.dandelion.utils.blow.RecordThread;
import com.ustc.dystu.dandelion.utils.image.ImageCache;
import com.ustc.dystu.dandelion.utils.image.ImageFetcher;
import com.ustc.dystu.dandelion.utils.image.Utils;

public class BlowActivity extends Activity implements OnClickListener{

	private final String TAG = BlowActivity.class.getSimpleName();
	public static final int BLOW_FINISHED = 0;
	private static final int REQUEST_RANDOM_NOTE = 1;

	private Animation alphaAnimation;
	private Animation alphaAnimation2;
	private Animation scaleAnimation;;
	private Animation scaleAnimation2;;
	private Animation singleBlowAnim;;

	// 向右动画
	private Animation loadAnimation1;
	private Animation loadAnimation2;
	private Animation loadAnimation3;
	private Animation loadAnimation4;
	private Animation loadAnimation5;
	private Animation loadAnimation6;
	private Animation loadAnimation7;
	private Animation loadAnimation8;
	private Animation loadAnimation9;
	private Animation loadAnimation10;
	private Animation loadAnimation11;

	// 向左动画
	private Animation loadAnimation1_1;
	private Animation loadAnimation2_1;
	private Animation loadAnimation3_1;
	private Animation loadAnimation4_1;
	private Animation loadAnimation5_1;
	private Animation loadAnimation6_1;
	private Animation loadAnimation7_1;
	private Animation loadAnimation8_1;
	private Animation loadAnimation9_1;
	private Animation loadAnimation10_1;

	// 向前动画
	private Animation loadAnimation1_2;
	private Animation loadAnimation2_2;
	private Animation loadAnimation3_2;
	private Animation loadAnimation4_2;
	private Animation loadAnimation5_2;
	private Animation loadAnimation6_2;
	private Animation loadAnimation7_2;
	private Animation loadAnimation8_2;
	private Animation loadAnimation9_2;
	private Animation loadAnimation10_2;

	private ImageView ivDandelion;
	private ImageView ivDandelionLeft;
	private RelativeLayout rlResultControl;

	private ImageView ivSingleBlow;

	private ImageView iv1;
	private ImageView iv2;
	private ImageView iv3;
	private ImageView iv4;
	private ImageView iv5;
	private ImageView iv6;
	private ImageView iv7;
	private ImageView iv8;
	private ImageView iv9;
	private ImageView iv10;
	private ImageView iv11;

	private ImageView iv1_1;
	private ImageView iv2_1;
	private ImageView iv3_1;
	private ImageView iv4_1;
	private ImageView iv5_1;
	private ImageView iv6_1;
	private ImageView iv7_1;
	private ImageView iv8_1;
	private ImageView iv9_1;
	private ImageView iv10_1;

	private ImageView iv1_2;
	private ImageView iv2_2;
	private ImageView iv3_2;
	private ImageView iv4_2;
	private ImageView iv5_2;
	private ImageView iv6_2;
	private ImageView iv7_2;
	private ImageView iv8_2;
	private ImageView iv9_2;
	private ImageView iv10_2;

	RecordThread tt = null;
	ImageView ivBack;

	RelativeLayout rlSeedResult;
	private NoteInfo mNoteInfo;
	private MediaPlayer mediaPlayer;

	Handler mHandler = new Handler() {

		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case BLOW_FINISHED:
				startAnim();
				break;
			case REQUEST_RANDOM_NOTE:
				if (msg.obj != null) {
					mNoteInfo = (NoteInfo) msg.obj;
					Logger.d(TAG, "info result-->" + mNoteInfo);
					updateSeedResultInfo();
				}
				break;

			default:
				break;
			}
		}
	};

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_blow);

		tvTitle = (TextView) findViewById(R.id.tv_title);
		// tvTitle.setOnClickListener(this);

		ivBack = (ImageView) findViewById(R.id.iv_back);
		ivBack.setOnClickListener(this);

		initViews();
		initData();
		initBeepSound();
	}

	boolean canRecord = true;

	@Override
	protected void onResume() {
		if (canRecord) {
			startRecord();
		}

		super.onResume();
	}

	private void initViews() {
		initSeedResultInfo();
		initAnim();
	}

	private void initData() {
		clearSeedResult();
		new Thread() {
			public void run() {
				NoteInfo info = DandelionAPI.getInstance(BlowActivity.this)
						.getRandomTravelNote();
				Message msg = Message.obtain();
				msg.what = REQUEST_RANDOM_NOTE;
				msg.obj = info;
				mHandler.sendMessage(msg);
			};
		}.start();
	}

	private TextView tvResultLocation;
	private TextView tvResultTitle;
	private ImageView ivResultPortrait;
	private ImageView ivResultFolder;
	private TextView tvResultTime;

	private Button btnLetFlow;
	private Button btnEnter;

	private ImageFetcher mImageWorker;
	private ImageFetcher mPortraitWorker;
	private TextView tvTitle;

	private void initSeedResultInfo() {
		rlResultControl = (RelativeLayout) findViewById(R.id.rl_result_control);

		tvResultLocation = (TextView) findViewById(R.id.tv_result_location);
		tvResultTitle = (TextView) findViewById(R.id.tv_result_title);
		ivResultPortrait = (ImageView) findViewById(R.id.iv_result_portrait);
		ivResultFolder = (ImageView) findViewById(R.id.iv_result_folder);
		tvResultTime = (TextView) findViewById(R.id.tv_result_time);

		btnLetFlow = (Button) findViewById(R.id.btn_let_blow);
		btnLetFlow.setOnClickListener(this);
		btnEnter = (Button) findViewById(R.id.btn_enter_note);
		btnEnter.setOnClickListener(this);

		int[] wh = Utils.getMidPicWidthAndHeight(BlowActivity.this);
		mImageWorker = new ImageFetcher(this, wh[0], wh[1]);
		mImageWorker.setImageCache(new ImageCache(this,
				Constants.THUMNAIL_CACHE_PATH));
		mImageWorker.setLoadingImage(R.drawable.share_public_headview_bg);
		mImageWorker.setImageFadeIn(false);

		mPortraitWorker = new ImageFetcher(this, 80);
		mPortraitWorker.setImageCache(new ImageCache(this,
				Constants.THUMNAIL_CACHE_PROFILE_PATH));
		mPortraitWorker.setLoadingImage(R.drawable.icon_vdisk);
		mPortraitWorker.setImageFadeIn(false);

	}

	private void updateSeedResultInfo() {
		if (mNoteInfo != null) {
			tvResultLocation.setText(mNoteInfo.getFirstLocation());
			tvResultTitle.setText(mNoteInfo.note_title);
			tvResultTime.setText(mNoteInfo.getFormatNoteFromTime() + "   "
					+ mNoteInfo.getTotalDays());

			if (!TextUtils.isEmpty(mNoteInfo.note_folder_url)) {
				mImageWorker.loadImage(mNoteInfo.note_folder_url,
						ivResultFolder, true);
			} else {
				ivResultFolder
						.setImageResource(R.drawable.share_public_headview_bg);
			}

			if (mNoteInfo.userIno != null) {
				if (!TextUtils.isEmpty(mNoteInfo.userIno.profile_image_url)) {
					mPortraitWorker.loadImage(
							mNoteInfo.userIno.profile_image_url,
							ivResultPortrait, true);
				} else {
					ivResultPortrait.setImageResource(R.drawable.icon_vdisk);
				}
			}
		}
	}

	private void clearSeedResult() {
		tvResultLocation.setText("...");
		tvResultTitle.setText("...");
		tvResultTime.setText("...");

		ivResultFolder.setImageResource(R.drawable.share_public_headview_bg);
		ivResultPortrait.setImageResource(R.drawable.icon_vdisk);
	}

	private static final float BEEP_VOLUME = 0.80f;

	private void initBeepSound() {
		if (mediaPlayer == null) {
			// The volume on STREAM_SYSTEM is not adjustable, and users found it
			// too loud,
			// so we now play on the music stream.
			setVolumeControlStream(AudioManager.STREAM_MUSIC);
			mediaPlayer = new MediaPlayer();
			mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
			mediaPlayer.setOnCompletionListener(beepListener);

			AssetFileDescriptor file = getResources().openRawResourceFd(
					R.raw.blow1);
			try {
				mediaPlayer.setDataSource(file.getFileDescriptor(),
						file.getStartOffset(), file.getLength());
				file.close();
				mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME);
				mediaPlayer.prepare();
			} catch (IOException e) {
				mediaPlayer = null;
			}
		}
	}

	/**
	 * When the beep has finished playing, rewind to queue up another one.
	 */
	private final OnCompletionListener beepListener = new OnCompletionListener() {
		public void onCompletion(MediaPlayer mediaPlayer) {
			mediaPlayer.seekTo(0);
		}
	};

	private void initAnim() {
		alphaAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_alpha);
		alphaAnimation2 = AnimationUtils
				.loadAnimation(this, R.anim.anim_alpha2);
		scaleAnimation = AnimationUtils.loadAnimation(this,
				R.anim.anim_seed_result);
		scaleAnimation.setAnimationListener(new AnimationListener() {

			@Override
			public void onAnimationStart(Animation animation) {

			}

			@Override
			public void onAnimationRepeat(Animation animation) {

			}

			@Override
			public void onAnimationEnd(Animation animation) {
				rlResultControl.setVisibility(View.VISIBLE);
				rlResultControl.startAnimation(alphaAnimation2);
			}
		});

		scaleAnimation2 = AnimationUtils.loadAnimation(this,
				R.anim.anim_seed_result_dispear);
		scaleAnimation2.setAnimationListener(new AnimationListener() {

			@Override
			public void onAnimationStart(Animation animation) {
			}

			@Override
			public void onAnimationRepeat(Animation animation) {

			}

			@Override
			public void onAnimationEnd(Animation animation) {
				Logger.d(TAG, "satrt single blow anim...");
				startSingleBlowAnim();
				initData();
			}
		});

		singleBlowAnim = AnimationUtils.loadAnimation(this,
				R.anim.anim_single_blow);
		singleBlowAnim.setAnimationListener(new AnimationListener() {

			@Override
			public void onAnimationStart(Animation animation) {

			}

			@Override
			public void onAnimationRepeat(Animation animation) {

			}

			@Override
			public void onAnimationEnd(Animation animation) {
				ivSingleBlow.setVisibility(View.GONE);
				tvTitle.setEnabled(true);

				ivDandelion.setVisibility(View.VISIBLE);
				ivDandelion.setEnabled(true);
				ivDandelionLeft.setVisibility(View.INVISIBLE);
				canRecord = true;
				startRecord();
			}
		});

		loadAnimation1 = AnimationUtils.loadAnimation(this, R.anim.anim_1);
		loadAnimation2 = AnimationUtils.loadAnimation(this, R.anim.anim_2);
		loadAnimation3 = AnimationUtils.loadAnimation(this, R.anim.anim_3);
		loadAnimation4 = AnimationUtils.loadAnimation(this, R.anim.anim_4);
		loadAnimation5 = AnimationUtils.loadAnimation(this, R.anim.anim_5);
		loadAnimation6 = AnimationUtils.loadAnimation(this, R.anim.anim_6);
		loadAnimation7 = AnimationUtils.loadAnimation(this, R.anim.anim_7);
		loadAnimation8 = AnimationUtils.loadAnimation(this, R.anim.anim_8);
		loadAnimation9 = AnimationUtils.loadAnimation(this, R.anim.anim_9);
		loadAnimation10 = AnimationUtils.loadAnimation(this, R.anim.anim_10);
		loadAnimation11 = AnimationUtils.loadAnimation(this, R.anim.anim_11);

		loadAnimation1_1 = AnimationUtils.loadAnimation(this, R.anim.anim_1_1);
		loadAnimation2_1 = AnimationUtils.loadAnimation(this, R.anim.anim_2_1);
		loadAnimation3_1 = AnimationUtils.loadAnimation(this, R.anim.anim_3_1);
		loadAnimation4_1 = AnimationUtils.loadAnimation(this, R.anim.anim_4_1);
		loadAnimation5_1 = AnimationUtils.loadAnimation(this, R.anim.anim_5_1);
		loadAnimation6_1 = AnimationUtils.loadAnimation(this, R.anim.anim_6_1);
		loadAnimation7_1 = AnimationUtils.loadAnimation(this, R.anim.anim_7_1);
		loadAnimation8_1 = AnimationUtils.loadAnimation(this, R.anim.anim_8_1);
		loadAnimation9_1 = AnimationUtils.loadAnimation(this, R.anim.anim_9_1);
		loadAnimation10_1 = AnimationUtils
				.loadAnimation(this, R.anim.anim_10_1);

		loadAnimation1_2 = AnimationUtils.loadAnimation(this, R.anim.anim_2_2);
		loadAnimation2_2 = AnimationUtils.loadAnimation(this, R.anim.anim_2_2);
		loadAnimation3_2 = AnimationUtils.loadAnimation(this, R.anim.anim_3_2);
		loadAnimation4_2 = AnimationUtils.loadAnimation(this, R.anim.anim_4_2);
		loadAnimation5_2 = AnimationUtils.loadAnimation(this, R.anim.anim_5_2);
		loadAnimation6_2 = AnimationUtils.loadAnimation(this, R.anim.anim_6_2);
		loadAnimation7_2 = AnimationUtils.loadAnimation(this, R.anim.anim_7_2);
		loadAnimation8_2 = AnimationUtils.loadAnimation(this, R.anim.anim_8_2);
		loadAnimation9_2 = AnimationUtils.loadAnimation(this, R.anim.anim_9_2);
		loadAnimation10_2 = AnimationUtils
				.loadAnimation(this, R.anim.anim_10_2);

		loadAnimation11.setAnimationListener(new AnimationListener() {

			@Override
			public void onAnimationStart(Animation animation) {
			}

			@Override
			public void onAnimationRepeat(Animation animation) {
			}

			@Override
			public void onAnimationEnd(Animation animation) {
				startSeedResultAnim();
			}
		});

		iv1 = (ImageView) findViewById(R.id.iv_1);
		iv2 = (ImageView) findViewById(R.id.iv_2);
		iv3 = (ImageView) findViewById(R.id.iv_3);
		iv4 = (ImageView) findViewById(R.id.iv_4);
		iv5 = (ImageView) findViewById(R.id.iv_5);
		iv6 = (ImageView) findViewById(R.id.iv_6);
		iv7 = (ImageView) findViewById(R.id.iv_7);
		iv8 = (ImageView) findViewById(R.id.iv_8);
		iv9 = (ImageView) findViewById(R.id.iv_9);
		iv10 = (ImageView) findViewById(R.id.iv_10);
		iv11 = (ImageView) findViewById(R.id.iv_11);

		iv1_1 = (ImageView) findViewById(R.id.iv_1_1);
		iv2_1 = (ImageView) findViewById(R.id.iv_2_1);
		iv3_1 = (ImageView) findViewById(R.id.iv_3_1);
		iv4_1 = (ImageView) findViewById(R.id.iv_4_1);
		iv5_1 = (ImageView) findViewById(R.id.iv_5_1);
		iv6_1 = (ImageView) findViewById(R.id.iv_6_1);
		iv7_1 = (ImageView) findViewById(R.id.iv_7_1);
		iv8_1 = (ImageView) findViewById(R.id.iv_8_1);
		iv9_1 = (ImageView) findViewById(R.id.iv_9_1);
		iv10_1 = (ImageView) findViewById(R.id.iv_10_1);

		iv1_2 = (ImageView) findViewById(R.id.iv_1_2);
		iv2_2 = (ImageView) findViewById(R.id.iv_2_2);
		iv3_2 = (ImageView) findViewById(R.id.iv_3_2);
		iv4_2 = (ImageView) findViewById(R.id.iv_4_2);
		iv5_2 = (ImageView) findViewById(R.id.iv_5_2);
		iv6_2 = (ImageView) findViewById(R.id.iv_6_2);
		iv7_2 = (ImageView) findViewById(R.id.iv_7_2);
		iv8_2 = (ImageView) findViewById(R.id.iv_8_2);
		iv9_2 = (ImageView) findViewById(R.id.iv_9_2);
		iv10_2 = (ImageView) findViewById(R.id.iv_10_2);

		setSeedsInvisible();

		ivDandelion = (ImageView) findViewById(R.id.iv_dandelion);
		ivDandelion.setOnClickListener(this);
		ivDandelionLeft = (ImageView) findViewById(R.id.iv_dandelion_left);
		rlSeedResult = (RelativeLayout) findViewById(R.id.rl_seed_result);

		ivSingleBlow = (ImageView) findViewById(R.id.iv_single_blow);
	}

	private void setSeedsVisible() {
		iv1.setVisibility(View.VISIBLE);
		iv2.setVisibility(View.VISIBLE);
		iv3.setVisibility(View.VISIBLE);
		iv4.setVisibility(View.VISIBLE);
		iv5.setVisibility(View.VISIBLE);
		iv6.setVisibility(View.VISIBLE);
		iv7.setVisibility(View.VISIBLE);
		iv8.setVisibility(View.VISIBLE);
		iv9.setVisibility(View.VISIBLE);
		iv10.setVisibility(View.VISIBLE);
		iv11.setVisibility(View.VISIBLE);

		iv1_1.setVisibility(View.VISIBLE);
		iv2_1.setVisibility(View.VISIBLE);
		iv3_1.setVisibility(View.VISIBLE);
		iv4_1.setVisibility(View.VISIBLE);
		iv5_1.setVisibility(View.VISIBLE);
		iv6_1.setVisibility(View.VISIBLE);
		iv7_1.setVisibility(View.VISIBLE);
		iv8_1.setVisibility(View.VISIBLE);
		iv9_1.setVisibility(View.VISIBLE);
		iv10_1.setVisibility(View.VISIBLE);

		iv1_2.setVisibility(View.VISIBLE);
		iv2_2.setVisibility(View.VISIBLE);
		iv3_2.setVisibility(View.VISIBLE);
		iv4_2.setVisibility(View.VISIBLE);
		iv5_2.setVisibility(View.VISIBLE);
		iv6_2.setVisibility(View.VISIBLE);
		iv7_2.setVisibility(View.VISIBLE);
		iv8_2.setVisibility(View.VISIBLE);
		iv9_2.setVisibility(View.VISIBLE);
		iv10_2.setVisibility(View.VISIBLE);
	}

	private void setSeedsInvisible() {
		iv1.setVisibility(View.INVISIBLE);
		iv2.setVisibility(View.INVISIBLE);
		iv3.setVisibility(View.INVISIBLE);
		iv4.setVisibility(View.INVISIBLE);
		iv5.setVisibility(View.INVISIBLE);
		iv6.setVisibility(View.INVISIBLE);
		iv7.setVisibility(View.INVISIBLE);
		iv8.setVisibility(View.INVISIBLE);
		iv9.setVisibility(View.INVISIBLE);
		iv10.setVisibility(View.INVISIBLE);
		iv11.setVisibility(View.INVISIBLE);

		iv1_1.setVisibility(View.INVISIBLE);
		iv2_1.setVisibility(View.INVISIBLE);
		iv3_1.setVisibility(View.INVISIBLE);
		iv4_1.setVisibility(View.INVISIBLE);
		iv5_1.setVisibility(View.INVISIBLE);
		iv6_1.setVisibility(View.INVISIBLE);
		iv7_1.setVisibility(View.INVISIBLE);
		iv8_1.setVisibility(View.INVISIBLE);
		iv9_1.setVisibility(View.INVISIBLE);
		iv10_1.setVisibility(View.INVISIBLE);

		iv1_2.setVisibility(View.INVISIBLE);
		iv2_2.setVisibility(View.INVISIBLE);
		iv3_2.setVisibility(View.INVISIBLE);
		iv4_2.setVisibility(View.INVISIBLE);
		iv5_2.setVisibility(View.INVISIBLE);
		iv6_2.setVisibility(View.INVISIBLE);
		iv7_2.setVisibility(View.INVISIBLE);
		iv8_2.setVisibility(View.INVISIBLE);
		iv9_2.setVisibility(View.INVISIBLE);
		iv10_2.setVisibility(View.INVISIBLE);
	}

	private void startAnim() {
		Parameter.isblow = false;

		if (mediaPlayer != null) {
			mediaPlayer.start();
		}

		ivDandelion.startAnimation(alphaAnimation);
		ivDandelion.setVisibility(View.INVISIBLE);
		ivDandelionLeft.setVisibility(View.VISIBLE);
		ivDandelionLeft.startAnimation(alphaAnimation2);

		canRecord = false;

		setSeedsVisible();

		iv1.startAnimation(loadAnimation1);
		iv2.startAnimation(loadAnimation2);
		iv3.startAnimation(loadAnimation3);
		iv4.startAnimation(loadAnimation4);
		iv5.startAnimation(loadAnimation5);
		iv6.startAnimation(loadAnimation6);
		iv7.startAnimation(loadAnimation7);
		iv8.startAnimation(loadAnimation8);
		iv9.startAnimation(loadAnimation9);
		iv10.startAnimation(loadAnimation10);
		iv11.startAnimation(loadAnimation11);

		iv1_1.startAnimation(loadAnimation1_1);
		iv2_1.startAnimation(loadAnimation2_1);
		iv3_1.startAnimation(loadAnimation3_1);
		iv4_1.startAnimation(loadAnimation4_1);
		iv5_1.startAnimation(loadAnimation5_1);
		iv6_1.startAnimation(loadAnimation6_1);
		iv7_1.startAnimation(loadAnimation7_1);
		iv8_1.startAnimation(loadAnimation8_1);
		iv9_1.startAnimation(loadAnimation9_1);
		iv10_1.startAnimation(loadAnimation10_1);

		iv1_2.startAnimation(loadAnimation1_2);
		iv2_2.startAnimation(loadAnimation2_2);
		iv3_2.startAnimation(loadAnimation3_2);
		iv4_2.startAnimation(loadAnimation4_2);
		iv5_2.startAnimation(loadAnimation5_2);
		iv6_2.startAnimation(loadAnimation6_2);
		iv7_2.startAnimation(loadAnimation7_2);
		iv8_2.startAnimation(loadAnimation8_2);
		iv9_2.startAnimation(loadAnimation9_2);
		iv10_2.startAnimation(loadAnimation10_2);

		setSeedsInvisible();
	}

	private void startSeedResultAnim() {
		rlSeedResult.setVisibility(View.VISIBLE);
		rlSeedResult.startAnimation(scaleAnimation);
	}

	private void disappearSeedResultAnim() {
		rlSeedResult.startAnimation(scaleAnimation2);
		rlSeedResult.setVisibility(View.INVISIBLE);
	}

	private void startSingleBlowAnim() {
		ivSingleBlow.setVisibility(View.VISIBLE);
		ivSingleBlow.startAnimation(singleBlowAnim);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.tv_title:
			// tt = new RecordThread(r); // 点击按钮,启动线程
			// tt.start();
			tvTitle.setEnabled(false);
			startAnim();
			// startSeedResultAnim();
			// disappearSeedResultAnim();
			break;
		case R.id.iv_back:
			finish();
			break;
		case R.id.btn_let_blow:
			rlResultControl.startAnimation(alphaAnimation);
			rlResultControl.setVisibility(View.GONE);
			disappearSeedResultAnim();
			break;
		case R.id.btn_enter_note:
			Intent intent = new Intent();
			intent.putExtra("note_info", mNoteInfo);// 没有微博uids
			intent.setClass(this, NoteInfoActivity.class);
			startActivity(intent);

			reset();
			break;
		case R.id.iv_dandelion:
			ivDandelion.setEnabled(false);
			startAnim();
			break;
		default:
			break;
		}
	}

	private void reset() {
		rlResultControl.setVisibility(View.GONE);
		rlSeedResult.setVisibility(View.INVISIBLE);
		ivDandelion.setVisibility(View.VISIBLE);
		ivDandelion.setEnabled(true);
		ivDandelionLeft.setVisibility(View.INVISIBLE);
		tvTitle.setEnabled(true);

		canRecord = true;
	}

	private void startRecord() {
		Logger.d(TAG, "start record...");
		tt = new RecordThread(mHandler); // 点击按钮,启动线程
		tt.start();
	}

	private void stopRecord() {
		Parameter.isblow = false;
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();

		stopRecord();

		if (mediaPlayer != null) {
			mediaPlayer.stop();
		}
	}

}


text:
FROM debian:jessie
MAINTAINER Saïd Bouras <said.bouras@gmail.com>

ENV \
    DEBIAN_FRONTEND=noninteractive \
    S6_OVERLAY_VERSION=1.17.1.2

RUN set -x \
    && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list.d/nginx.list \
    && apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \
    && apt-get update

ADD https://github.com/just-containers/s6-overlay/releases/download/v$S6_OVERLAY_VERSION/s6-overlay-amd64.tar.gz /tmp/

# INSTALL NGINX and INCRON
RUN tar xzf /tmp/s6-overlay-amd64.tar.gz -C / \
    && apt-get install -y --no-install-recommends nginx incron \
    && rm -rf /var/lib/apt/lists/* \
    && rm -rf /tmp/s6-overlay-amd64.tar.gz \
    && echo "\ndaemon off;" >> /etc/nginx/nginx.conf \
    && chown -R nginx:nginx /var/log/nginx \
    && echo "root" > /etc/incron.allow \
    && echo "/etc/nginx/sites-enabled/ IN_MODIFY,IN_CREATE,IN_DELETE,IN_NO_LOOP /usr/sbin/nginx -s reload" >> /var/spool/incron/root \
    && echo "/etc/nginx/sites-available/ IN_MODIFY,IN_CREATE,IN_DELETE,IN_NO_LOOP /usr/sbin/nginx -s reload" >> /var/spool/incron/root \
    && echo "/etc/nginx/conf.d/ IN_MODIFY,IN_CREATE,IN_DELETE,IN_NO_LOOP /usr/sbin/nginx -s reload" >> /var/spool/incron/root \
    && echo "/etc/nginx/nginx.conf IN_MODIFY /usr/sbin/nginx -s reload" >> /var/spool/incron/root

# Clean
RUN apt-get autoremove -y --purge \
    && find . -type d -name ".git" | xargs rm -rf

# Copy configuration file and init files
COPY ./root/ /

# Expose ports.
EXPOSE 80
EXPOSE 443

# Define mountable directories.
VOLUME ["/etc/nginx"]

# Define working directory.
WORKDIR /etc/nginx

ENTRYPOINT ["/init"]

redpajama_set_name: RedPajamaGithub


text:
{% extends "portfolio/projects.html" %}

{% block body %}

{% load static %}
<link rel="stylesheet" href="{% static 'portfolio/styles/wikiviewer.css' %}" />

FCC_WIKI_VIEWER

BAC

        <button type="submit" class="btn btn-default" id="random">Random Wiki</button>
<form id="search">

          Search Wikipedia
          <input type="text" class="form-control" id="search-box" placeholder="Search Wikipedia">
          <button type="submit" class="btn btn-default" id="search-button">Search</button>

        </form>

{% load static %}

{% endblock %}


text:
ARG BASE_IMAGE_OS
ARG DOCKERBASEREGISTRY
FROM ${DOCKERBASEREGISTRY}${BASE_IMAGE_OS}

ARG BASEOS
ARG PGVERSION
ARG PG_FULL
ARG PACKAGER
ARG RELVER

MAINTAINER info@crunchydata.com

LABEL vendor="Crunchy Data" \
	url="https://crunchydata.com" \
	release="${RELVER}" \
	postgresql.version.major="${PGVERSION}" \
	postgresql.version="${PG_FULL}" \
	org.opencontainers.image.vendor="Crunchy Data" \
	io.openshift.tags="postgresql,postgres,sql,nosql,crunchy" \
	io.k8s.description="Trusted open source PostgreSQL-as-a-Service"

COPY redhat/atomic/help.1 /help.1
COPY redhat/atomic/help.md /help.md
COPY licenses /licenses

RUN ${PACKAGER} -y update && ${PACKAGER} -y clean all

# Create module file to disable postgres module, microdnf cannot do this with the current version
RUN if [ "$BASEOS" = "ubi8" ] ; then \
    echo "[postgresql]"  >> /etc/dnf/modules.d/postgresql.module \
    && echo "name=postgresql"  >> /etc/dnf/modules.d/postgresql.module \
    && echo "stream=10"  >> /etc/dnf/modules.d/postgresql.module \
    && echo "profiles="  >> /etc/dnf/modules.d/postgresql.module \
    && echo "state=disabled"  >> /etc/dnf/modules.d/postgresql.module ; \
fi

# Crunchy PostgreSQL repository
ADD conf/RPM-GPG-KEY-crunchydata* /
ADD conf/crunchypg${PGVERSION}.repo /etc/yum.repos.d/
RUN rpm --import RPM-GPG-KEY-crunchydata*


text:
/*
	OAT.WebClipBindings.bind(div, type, toXMLcallback, fromXMLcallback, activeCallback, inactiveCallback)
*/

OAT.WebClipBindings = {
	bind:function(div, typeCallback, toXMLcallback, fromXMLcallback, activeCallback, inactiveCallback) {
		var copyCallback = function() {
			var content = new LiveClipboardContent();
			content.data.formats[0] = new DataFormat();
			content.data.formats[0].type = typeCallback();
			content.data.formats[0].contentType = "application/xhtml+xml";
			content.data.formats[0].items = new Array(1);
			content.data.formats[0].items[0] = new DataItem();
			content.data.formats[0].items[0].data = toXMLcallback();
			return content;
		} /* copyCallback */

		var pasteCallback = function(clipData) {
			var type = typeCallback();
			for (var i=0; i<clipData.data.formats.length;i++) {
				if ((clipData.data.formats[i].type == type) &&
					(clipData.data.formats[i].items.length > 0) &&
					(clipData.data.formats[i].items[0].data)) {

					var xml = clipData.data.formats[i].items[0].data;
					fromXMLcallback(xml);
					return;
				} /* if suitable format found */
			} /* for all formats in clipboard */
		} /* pasteCallback */

        var webclip = new WebClip($(div),copyCallback,pasteCallback,activeCallback,inactiveCallback);
	} /* OAT.WebClipBindings.bind() */
}
OAT.Loader.featureLoaded("webclipbinding");


text:
using System;
using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Client.Framing;

namespace RawRabbit.Configuration.BasicPublish
{
	public class BasicPublishConfigurationBuilder : IBasicPublishConfigurationBuilder
	{
		public BasicPublishConfiguration Configuration { get; }

		public BasicPublishConfigurationBuilder(BasicPublishConfiguration initial)
		{
			Configuration = initial;
		}

		public IBasicPublishConfigurationBuilder OnExchange(string exchange)
		{
			Configuration.ExchangeName = exchange;
			return this;
		}

		public IBasicPublishConfigurationBuilder WithRoutingKey(string routingKey)
		{
			Configuration.RoutingKey = routingKey;
			return this;
		}

		public IBasicPublishConfigurationBuilder AsMandatory(bool mandatory = true)
		{
			Configuration.Mandatory = mandatory;
			return this;
		}

		public IBasicPublishConfigurationBuilder WithProperties(Action<IBasicProperties> propAction)
		{
			Configuration.BasicProperties = Configuration.BasicProperties ?? new BasicProperties();
			propAction?.Invoke(Configuration.BasicProperties);
			return this;
		}
	}
}


text:
body {
  font-family: 'Open Sans', sans-serif;
  overflow-x: hidden; }

p {
  font-family: 'Open Sans', sans-serif;
  text-align: center;
  font-size: 0.8em;
  line-height: 1.6;
  margin-top: 0; }

h1 {
  text-align: center;
  width: 100vw;
  margin: 0;
  margin-top: 10px;
  margin-bottom: 10px;
  font-weight: 600; }

h2 {
  font-size: 2em;
  text-align: center; }

a {
  font-weight: bold;
  text-decoration: none;
  color: black;
  font-weight: 600;
  cursor: pointer; }

::selection {
  background: #FF3333;
  /* WebKit/Blink Browsers */ }

::-moz-selection {
  background: #FF3333;
  /* Gecko Browsers */ }

.wrapper {
  position: relative;
  width: 100vw;
  display: flex;
  justify-content: space-around;
  align-items: center;
  flex-wrap: wrap;
  flex-direction: row; }

.object {
  width: 95vw;
  height: 200px;
  margin-bottom: 20px; }

.desktop {
  visibility: hidden; }

.lightBlue {
  background-color: #00e1ff; }

.yellow {
  background-color: #ffff9f; }

.grey {
  background-color: #dddddd; }

img {
  width: inherit;
  height: auto; }

.desktop {
  visibility: visible;
  background-color: lightgrey;
  width: 100vw;
  height: 100vh;
  z-index: 99;
  position: fixed;
  top: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center; }

.desktop p {
  font-size: 1.5em;
  width: 55vw;
  margin-bottom: 15vh; }

.description {
  text-align: left;
  margin-left: 2.5vw;
  margin-right: 2.5vw; }

.wrapper2 {
  position: relative;
  width: 100vw;
  display: flex;
  justify-content: space-around;
  align-items: center;
  flex-wrap: wrap;
  display: none; }

#linkTriggered {
  position: fixed;
  top: 0;
  left: 0;
  background-color: white;
  width: 100vw;
  height: 100vh;
  display: none; }

#linkTriggered p {
  margin-top: 40vh;
  font-size: 1.4em; }

.coverTest {
  position: absolute;
  width: inherit;
  height: inherit;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  opacity: 1; }

.coverTest:hover, .coverTest.hoverOnTouch {
  opacity: 0; }

.infoTest {
  position: absolute;
  width: inherit;
  height: inherit;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  opacity: 1; }

/*==============New CSS==============*/
.wrapper {
  width: 100vw;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column; }

.testObject {
  background-color: yellow;
  overflow: hidden;
  position: relative;
  -webkit-transition: all 0.5s ease-in-out;
  transition: all 0.5s ease-in-out; }

.marginBottom20 {
  margin-bottom: 20px; }

.hoverontouch--aktiv .testObject {
  background-color: blue; }

.info img, .cover img {
  display: block;
  height: auto;
  overflow: hidden;
  width: 100vw;
  max-width: 375px; }

.cover {
  position: absolute;
  top: 0;
  margin: 0;
  padding-top: 0;
  bottom: 0;
  opacity: 1; }

.hoverontouch--aktiv .cover {
  opacity: 0; }

.pink {
  background-color: #fc97ff; }

.blue {
  background-color: #2e1e89; }

.emptyDiv {
  min-height: 220px;
  background: yellow;
  width: 100vw;
  max-width: 375px; }

.link {
  position: relative;
  margin: 0 auto;
  width: 250px;
  height: auto;
  font-size: 1.2rem;
  cursor: pointer;
  text-decoration: underline;
  padding: 3px 5px 5px 5px;
  border-radius: 7px;
  background-color: #fff;
  -webkit-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out; }

.hoverontouch--aktiv .link {
  background-color: #c4c4c4;
  padding: 3px 15px 5px 15px; }

.links {
  width: 100vw;
  display: flex;
  align-items: center;
  justify-content: space-around;
  max-width: 375px; }

.link2, .link3 {
  position: relative;
  margin-bottom: 20px;
  height: auto;
  font-size: 1.2rem;
  cursor: pointer;
  -webkit-transition: all 0.25s ease-in-out;
  transition: all 0.25s ease-in-out; }

.link2:before {
  content: "";
  position: absolute;
  width: 100%;
  height: 2px;
  bottom: 0;
  left: 0;
  background-color: #000;
  visibility: hidden;
  -webkit-transform: scaleX(0);
  transform: scaleX(0);
  -webkit-transition: all 0.25s ease-in-out 0s;
  transition: all 0.25s ease-in-out 0s; }

.hoverontouch--aktiv .link2:before {
  visibility: visible;
  -webkit-transform: scaleX(1);
  transform: scaleX(1); }

.link3:before {
  content: "";
  position: absolute;
  width: 0%;
  height: 2px;
  bottom: 0;
  left: 0;
  background-color: #000;
  visibility: visible;
  -webkit-transition: all 0.25s ease-in-out 0s;
  transition: all 0.25s ease-in-out 0s; }

.hoverontouch--aktiv .link3:before {
  width: 100%;
  visibility: visible; }

/* ==========================================================================
   Media Queries
   ========================================================================== */
/*==========  Mobile First Method  ==========*/
/* Custom, iPhone Retina */
/* Extra Small Devices, Phones */
/* Small Devices, Tablets */
@media only screen and (min-width: 767px) {
  .description {
    text-align: center;
    font-size: 1rem; } }

/* Medium Devices, Desktops */
@media only screen and (min-width: 992px) {
  .description {
    font-size: 1.2rem;
    margin: 0 auto;
    max-width: 70vw;
    margin-bottom: 20px; } }

/* Large Devices, Wide Screens */


text:
//
//  MBBFastLoginView.m
//  BSBDJ
//
//  Created by Maskmale on 17/4/24.
//  Copyright © 2017年 Maskmale. All rights reserved.
//

#import "MBBFastLoginView.h"

@implementation MBBFastLoginView

+ (instancetype) fastLoginView
{
    return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] firstObject];
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/

@end


text:
from __future__ import division, print_function, absolute_import

from glob import glob
from os.path import join, basename, splitext

import nibabel as nib
import numpy as np

from dipy.workflows.utils import choose_create_out_dir
from dipy.segment.mask import median_otsu

def median_otsu_flow(input_files, out_dir='', save_masked=False,
                     median_radius=4, numpass=4, autocrop=False,
                     vol_idx=None, dilate=None):
    """ Workflow wrapping the median_otsu segmentation method.

    It applies median_otsu segmentation on each file found by 'globing'
    ``input_files`` and saves the results in a directory specified by
    ``out_dir``.

    Parameters
    ----------
    input_files : string
        Path to the input volumes. This path may contain wildcards to process
        multiple inputs at once.
    out_dir : string, optional
        Output directory (default input file directory)
    save_masked : bool
        Save mask
    median_radius : int, optional
        Radius (in voxels) of the applied median filter(default 4)
    numpass : int, optional
        Number of pass of the median filter (default 4)
    autocrop : bool, optional
        If True, the masked input_volumes will also be cropped using the
        bounding box defined by the masked data. Should be on if DWI is
        upsampled to 1x1x1 resolution. (default False)
    vol_idx : string, optional
        1D array representing indices of ``axis=3`` of a 4D `input_volume`
        'None' (the default) corresponds to ``(0,)`` (assumes first volume in
        4D array)
    dilate : string, optional
        number of iterations for binary dilation (default 'None')

    Outputs
    -------
    mask : Nifti File
           Binary volume representing the computed mask.
    masked : Nifti File
            Volume representing the masked input. This file is saved
            save_masked is True.
    """
    for fpath in glob(input_files):
        print('')
        print('Applying median_otsu segmentation on {0}'.format(fpath))
        img = nib.load(fpath)
        volume = img.get_data()

        masked, mask = median_otsu(volume, median_radius,
                                   numpass, autocrop,
                                   vol_idx, dilate)

        fname, ext = splitext(basename(fpath))
        if fname.endswith('.nii'):
            fname, _ = splitext(fname)
            ext = '.nii.gz'

        mask_fname = fname + '_mask' + ext

        out_dir_path = choose_create_out_dir(out_dir, fpath)

        mask_img = nib.Nifti1Image(mask.astype(np.float32), img.get_affine())
        mask_out_path = join(out_dir_path, mask_fname)
        mask_img.to_filename(mask_out_path)
        print('Mask saved as {0}'.format(mask_out_path))

        if save_masked:
            masked_fname = fname + '_bet' + ext
            masked_img = nib.Nifti1Image(
                masked, img.get_affine(), img.get_header())
            masked_out_path = join(out_dir_path, masked_fname)
            masked_img.to_filename(masked_out_path)
            print('Masked volume saved as {0}'.format(masked_out_path))


text:
ACCEPTED

#### According to
The Catalogue of Life, 3rd January 2011

#### Published in
Neth. Jl Pl. Path. 79(3): 85 (1973)

#### Original name
Embellisia hyacinthi de Hoog & P.J. Mull. bis, 1973

### Remarks
null


text:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="basic">
    <requiredProperties>
		<requiredProperty key="orienteerVersion">
			<defaultValue>${project.version}</defaultValue>
		</requiredProperty>
		<requiredProperty key="wicketOrientDBVersion">
		    <defaultValue>${wicket.orientdb.version}</defaultValue>
		</requiredProperty>
		<requiredProperty key="jettyVersion">
			<defaultValue>${jetty.version}</defaultValue>
		</requiredProperty>
	</requiredProperties>
	<fileSets>
		<fileSet filtered="true" packaged="true" encoding="UTF-8">
			<directory>src/main/java</directory>
			<includes>
				<include>**/*.java</include>
				<include>**/*.html</include>
			</includes>
		</fileSet>
		<fileSet filtered="true" packaged="true" encoding="UTF-8">
			<directory>src/test/java</directory>
			<includes>
				<include>**/*.java</include>
			</includes>
		</fileSet>
		<fileSet filtered="false" packaged="false" encoding="UTF-8">
			<directory>src/test/resources</directory>
			<includes>
				<include>**/*</include>
			</includes>
		</fileSet>
		<fileSet filtered="true" packaged="false" encoding="UTF-8">
			<directory/>
			<includes>
				<include>README.md</include>
			</includes>
		</fileSet>
		<fileSet filtered="true" packaged="false" encoding="UTF-8">
			<directory>src/main/resources</directory>
			<includes>
				<include>log4j2.xml</include>
			</includes>
		</fileSet>
		<fileSet filtered="true" packaged="true" encoding="UTF-8">
			<directory>src/main/resources</directory>
			<excludes>
				<exclude>log4j2.xml</exclude>
			</excludes>
		</fileSet>
		<fileSet filtered="true" packaged="false" encoding="UTF-8">
			<directory>src/main/resources/META-INF/services</directory>
			<includes>
				<include>org.apache.wicket.IInitializer</include>
			</includes>
		</fileSet>
		<fileSet filtered="true" packaged="true" encoding="UTF-8">
			<directory>src/main/resources/META-INF/services</directory>
			<excludes>
				<exclude>org.apache.wicket.IInitializer</exclude>
			</excludes>
		</fileSet>
	</fileSets>
</archetype-descriptor>


text:
PHPBUILDER=$(tail -n 1 /workspace/phpbuilder)

## Pull the latest image...
docker pull gcr.io/gae-runtimes/buildpacks/php74/builder:$PHPBUILDER

## Mark it with the latest tag...
docker tag gcr.io/gae-runtimes/buildpacks/php74/builder:$PHPBUILDER gcr.io/gae-runtimes/buildpacks/php74/builder:latest

## Make the workspace dir writable by the reduced permissions user from the builder...
find . -mindepth 1 -maxdepth 1 \( -path ./node_modules \) -prune -o -print0 |xargs -0 chown -R 33:33 /workspace


text:
import {Component, ChangeDetectorRef, ViewChild, AfterViewInit, ElementRef, OnInit} from '@angular/core';
import { VkService } from '../services/vk_service/vk.service'
import { Album } from '../models/album.model'
import { Photo } from '../models/photo.model'
import { ListPhotoComponent } from '../photo/list_photo.component'
import { AlbumComponent } from '../album/album.component'
import { User } from '../models/user.model'

@Component({
  selector: 'list-albums',
  templateUrl: 'list_albums.component.html',
  styleUrls: ['list_albums.component.css'],
  providers: [VkService]
})

export class ListAlbumComponent implements AfterViewInit, OnInit {
  // @ViewChild('albumContent')
  // private albumContent: AlbumComponent;
  currentUser: User;

  @ViewChild('listPhotoContent')
  private listPhotoContent: ListPhotoComponent;

  @ViewChild('arrayAlbumContent')
  private arrayAlbumContent: ElementRef;
  private arrayAlbums: Album[];
  private alertMessage: string;

  constructor(private vkServ: VkService, private ref: ChangeDetectorRef){
    this.arrayAlbums = [];
    this.alertMessage = ''
  }

  ngOnInit() {
    // this.vkServ.getUserInfo().subscribe((response) => this.checkUserResponse(response),
    //                                     (error) =>  this.alertMessage = error)
    this.vkServ.getUserInfo(this.checkUserResponse);

  }

  ngAfterViewInit() {
    //this.hideArrayAlbumContent();
    this.getAlbums();

  }

  private get fullName() {
    return this.currentUser.first_name + ' ' + this.currentUser.last_name
  }

  getSelectedAlbumContent(album: Album) {
    this.hideArrayAlbumContent();
    this.listPhotoContent.getAllPhotoInAlbum(album)
  }

  onBackwardFromAlbumContent(event) {
    this.showArrayAlbumContent();
  }

  showArrayAlbumContent() {
    this.arrayAlbumContent.nativeElement.hidden = false;
  }

  hideArrayAlbumContent() {
    this.arrayAlbumContent.nativeElement.hidden = true;
  }

  getAlbums(){
    // this.vkServ.vkGetAlbums().subscribe((response) => this.checkAlbumsResponse(response),
    //                                     (error) =>  this.alertMessage = error)
    this.vkServ.vkGetAlbums(this.checkAlbumsResponse)
  }

  checkAlbumsResponse = (resp) => {
    console.log(resp)
    if(!resp.error){
      this.arrayAlbums = <Album[]> resp.response;
      console.log(this.arrayAlbums)
      this.arrayAlbums.forEach((item) => { //find thumb image for array Albums
        this.vkServ.vkGetPhotoById(item.thumb_id, (resp) => {
          item.thumbPhoto = <Photo> resp.response[0];
          this.ref.detectChanges()
        })
      })
      this.showArrayAlbumContent();
    }
    else
      this.alertMessage = resp.error.error_msg;
  }

  checkUserResponse = (resp) => {

    if(!resp.error){
      this.currentUser = <User> resp.response[0];
      this.ref.detectChanges()
    }
    else
      this.alertMessage = resp.error.error_msg;
  }
}


text:
#include "ogr_avc.h"

CPL_CVSID("$Id: ogravce00driver.cpp f93644db7bb54fe7f1b0bd28b3b6320e1331e74f 2018-03-03 19:24:43Z Even Rouault $")

/************************************************************************/
/*                             Identify()                               */
/************************************************************************/

static int OGRAVCE00DriverIdentify( GDALOpenInfo * poOpenInfo )
{
    if( !EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "E00") )
        return FALSE;

    if (poOpenInfo->nHeaderBytes == 0)
        return FALSE;

    if (!(STARTS_WITH_CI((const char*)poOpenInfo->pabyHeader, "EXP  0") ||
          STARTS_WITH_CI((const char*)poOpenInfo->pabyHeader, "EXP  1")))
        return FALSE;

    if (strstr((const char*)poOpenInfo->pabyHeader, "GRD  2") != nullptr ||
        strstr((const char*)poOpenInfo->pabyHeader, "GRD  3") != nullptr )
        return FALSE;

    return TRUE;
}

/************************************************************************/
/*                                Open()                                */
/************************************************************************/

static GDALDataset *OGRAVCE00DriverOpen( GDALOpenInfo* poOpenInfo )

{
    if( !OGRAVCE00DriverIdentify(poOpenInfo) )
        return nullptr;
    if( poOpenInfo->eAccess == GA_Update )
        return nullptr;

    OGRAVCE00DataSource *poDSE00 = new OGRAVCE00DataSource();

    if( poDSE00->Open( poOpenInfo->pszFilename, TRUE )
        && poDSE00->GetLayerCount() > 0 )
    {
        return poDSE00;
    }
    delete poDSE00;

    return nullptr;
}

/************************************************************************/
/*                           RegisterOGRAVC()                           */
/************************************************************************/

void RegisterOGRAVCE00()

{
    if( GDALGetDriverByName( "AVCE00" ) != nullptr )
        return;

    GDALDriver  *poDriver = new GDALDriver();

    poDriver->SetDescription( "AVCE00" );
    poDriver->SetMetadataItem( GDAL_DCAP_VECTOR, "YES" );
    poDriver->SetMetadataItem( GDAL_DMD_LONGNAME,
                               "Arc/Info E00 (ASCII) Coverage" );
    poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "e00" );
    poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_avce00.html" );
    poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" );

    poDriver->pfnIdentify = OGRAVCE00DriverIdentify;
    poDriver->pfnOpen = OGRAVCE00DriverOpen;

    GetGDALDriverManager()->RegisterDriver( poDriver );
}


text:
package com.amazonaws.services.networkfirewall.model;

import java.io.Serializable;
import javax.annotation.Generated;

/**
 *
 * @see AWS
 *      API Documentation
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class DescribeRuleGroupResult extends com.amazonaws.AmazonWebServiceResult<com.amazonaws.ResponseMetadata> implements Serializable, Cloneable {

    /**
     *

     * A token used for optimistic locking. Network Firewall returns a token to your requests that access the rule
     * group. The token marks the state of the rule group resource at the time of the request.
     *

     *

     * To make changes to the rule group, you provide the token in your request. Network Firewall uses the token to
     * ensure that the rule group hasn't changed since you last retrieved it. If it has changed, the operation fails
     * with an InvalidTokenException. If this happens, retrieve the rule group again to get a current copy
     * of it with a current token. Reapply your changes as needed, then try the operation again using the new token.
     *

     */
    private String updateToken;
    /**
     *

     * The object that defines the rules in a rule group. This, along with RuleGroupResponse, define the rule
     * group. You can retrieve all objects for a rule group by calling DescribeRuleGroup.
     *

     *

     * Network Firewall uses a rule group to inspect and control network traffic. You define stateless rule groups to
     * inspect individual packets and you define stateful rule groups to inspect packets in the context of their traffic
     * flow.
     *

     *

     * To use a rule group, you include it by reference in an Network Firewall firewall policy, then you use the policy
     * in a firewall. You can reference a rule group from more than one firewall policy, and you can use a firewall
     * policy in more than one firewall.
     *

     */
    private RuleGroup ruleGroup;
    /**
     *

     * The high-level properties of a rule group. This, along with the RuleGroup, define the rule group. You can
     * retrieve all objects for a rule group by calling DescribeRuleGroup.
     *

     */
    private RuleGroupResponse ruleGroupResponse;

    /**
     *

     * A token used for optimistic locking. Network Firewall returns a token to your requests that access the rule
     * group. The token marks the state of the rule group resource at the time of the request.
     *

     *

     * To make changes to the rule group, you provide the token in your request. Network Firewall uses the token to
     * ensure that the rule group hasn't changed since you last retrieved it. If it has changed, the operation fails
     * with an InvalidTokenException. If this happens, retrieve the rule group again to get a current copy
     * of it with a current token. Reapply your changes as needed, then try the operation again using the new token.
     *

     *
     * @param updateToken
     *        A token used for optimistic locking. Network Firewall returns a token to your requests that access the
     *        rule group. The token marks the state of the rule group resource at the time of the request.

     *

     *        To make changes to the rule group, you provide the token in your request. Network Firewall uses the token
     *        to ensure that the rule group hasn't changed since you last retrieved it. If it has changed, the operation
     *        fails with an InvalidTokenException. If this happens, retrieve the rule group again to get a
     *        current copy of it with a current token. Reapply your changes as needed, then try the operation again
     *        using the new token.
     */

    public void setUpdateToken(String updateToken) {
        this.updateToken = updateToken;
    }

    /**
     *

     * A token used for optimistic locking. Network Firewall returns a token to your requests that access the rule
     * group. The token marks the state of the rule group resource at the time of the request.
     *

     *

     * To make changes to the rule group, you provide the token in your request. Network Firewall uses the token to
     * ensure that the rule group hasn't changed since you last retrieved it. If it has changed, the operation fails
     * with an InvalidTokenException. If this happens, retrieve the rule group again to get a current copy
     * of it with a current token. Reapply your changes as needed, then try the operation again using the new token.
     *

     *
     * @return A token used for optimistic locking. Network Firewall returns a token to your requests that access the
     *         rule group. The token marks the state of the rule group resource at the time of the request.

     *

     *         To make changes to the rule group, you provide the token in your request. Network Firewall uses the token
     *         to ensure that the rule group hasn't changed since you last retrieved it. If it has changed, the
     *         operation fails with an InvalidTokenException. If this happens, retrieve the rule group
     *         again to get a current copy of it with a current token. Reapply your changes as needed, then try the
     *         operation again using the new token.
     */

    public String getUpdateToken() {
        return this.updateToken;
    }

    /**
     *

     * A token used for optimistic locking. Network Firewall returns a token to your requests that access the rule
     * group. The token marks the state of the rule group resource at the time of the request.
     *

     *

     * To make changes to the rule group, you provide the token in your request. Network Firewall uses the token to
     * ensure that the rule group hasn't changed since you last retrieved it. If it has changed, the operation fails
     * with an InvalidTokenException. If this happens, retrieve the rule group again to get a current copy
     * of it with a current token. Reapply your changes as needed, then try the operation again using the new token.
     *

     *
     * @param updateToken
     *        A token used for optimistic locking. Network Firewall returns a token to your requests that access the
     *        rule group. The token marks the state of the rule group resource at the time of the request.

     *

     *        To make changes to the rule group, you provide the token in your request. Network Firewall uses the token
     *        to ensure that the rule group hasn't changed since you last retrieved it. If it has changed, the operation
     *        fails with an InvalidTokenException. If this happens, retrieve the rule group again to get a
     *        current copy of it with a current token. Reapply your changes as needed, then try the operation again
     *        using the new token.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public DescribeRuleGroupResult withUpdateToken(String updateToken) {
        setUpdateToken(updateToken);
        return this;
    }

    /**
     *

     * The object that defines the rules in a rule group. This, along with RuleGroupResponse, define the rule
     * group. You can retrieve all objects for a rule group by calling DescribeRuleGroup.
     *

     *

     * Network Firewall uses a rule group to inspect and control network traffic. You define stateless rule groups to
     * inspect individual packets and you define stateful rule groups to inspect packets in the context of their traffic
     * flow.
     *

     *

     * To use a rule group, you include it by reference in an Network Firewall firewall policy, then you use the policy
     * in a firewall. You can reference a rule group from more than one firewall policy, and you can use a firewall
     * policy in more than one firewall.
     *

     *
     * @param ruleGroup
     *        The object that defines the rules in a rule group. This, along with RuleGroupResponse, define the
     *        rule group. You can retrieve all objects for a rule group by calling DescribeRuleGroup.

     *

     *        Network Firewall uses a rule group to inspect and control network traffic. You define stateless rule
     *        groups to inspect individual packets and you define stateful rule groups to inspect packets in the context
     *        of their traffic flow.
     *

     *

     *        To use a rule group, you include it by reference in an Network Firewall firewall policy, then you use the
     *        policy in a firewall. You can reference a rule group from more than one firewall policy, and you can use a
     *        firewall policy in more than one firewall.
     */

    public void setRuleGroup(RuleGroup ruleGroup) {
        this.ruleGroup = ruleGroup;
    }

    /**
     *

     * The object that defines the rules in a rule group. This, along with RuleGroupResponse, define the rule
     * group. You can retrieve all objects for a rule group by calling DescribeRuleGroup.
     *

     *

     * Network Firewall uses a rule group to inspect and control network traffic. You define stateless rule groups to
     * inspect individual packets and you define stateful rule groups to inspect packets in the context of their traffic
     * flow.
     *

     *

     * To use a rule group, you include it by reference in an Network Firewall firewall policy, then you use the policy
     * in a firewall. You can reference a rule group from more than one firewall policy, and you can use a firewall
     * policy in more than one firewall.
     *

     *
     * @return The object that defines the rules in a rule group. This, along with RuleGroupResponse, define the
     *         rule group. You can retrieve all objects for a rule group by calling DescribeRuleGroup.

     *

     *         Network Firewall uses a rule group to inspect and control network traffic. You define stateless rule
     *         groups to inspect individual packets and you define stateful rule groups to inspect packets in the
     *         context of their traffic flow.
     *

     *

     *         To use a rule group, you include it by reference in an Network Firewall firewall policy, then you use the
     *         policy in a firewall. You can reference a rule group from more than one firewall policy, and you can use
     *         a firewall policy in more than one firewall.
     */

    public RuleGroup getRuleGroup() {
        return this.ruleGroup;
    }

    /**
     *

     * The object that defines the rules in a rule group. This, along with RuleGroupResponse, define the rule
     * group. You can retrieve all objects for a rule group by calling DescribeRuleGroup.
     *

     *

     * Network Firewall uses a rule group to inspect and control network traffic. You define stateless rule groups to
     * inspect individual packets and you define stateful rule groups to inspect packets in the context of their traffic
     * flow.
     *

     *

     * To use a rule group, you include it by reference in an Network Firewall firewall policy, then you use the policy
     * in a firewall. You can reference a rule group from more than one firewall policy, and you can use a firewall
     * policy in more than one firewall.
     *

     *
     * @param ruleGroup
     *        The object that defines the rules in a rule group. This, along with RuleGroupResponse, define the
     *        rule group. You can retrieve all objects for a rule group by calling DescribeRuleGroup.

     *

     *        Network Firewall uses a rule group to inspect and control network traffic. You define stateless rule
     *        groups to inspect individual packets and you define stateful rule groups to inspect packets in the context
     *        of their traffic flow.
     *

     *

     *        To use a rule group, you include it by reference in an Network Firewall firewall policy, then you use the
     *        policy in a firewall. You can reference a rule group from more than one firewall policy, and you can use a
     *        firewall policy in more than one firewall.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public DescribeRuleGroupResult withRuleGroup(RuleGroup ruleGroup) {
        setRuleGroup(ruleGroup);
        return this;
    }

    /**
     *

     * The high-level properties of a rule group. This, along with the RuleGroup, define the rule group. You can
     * retrieve all objects for a rule group by calling DescribeRuleGroup.
     *

     *
     * @param ruleGroupResponse
     *        The high-level properties of a rule group. This, along with the RuleGroup, define the rule group.
     *        You can retrieve all objects for a rule group by calling DescribeRuleGroup.
     */

    public void setRuleGroupResponse(RuleGroupResponse ruleGroupResponse) {
        this.ruleGroupResponse = ruleGroupResponse;
    }

    /**
     *

     * The high-level properties of a rule group. This, along with the RuleGroup, define the rule group. You can
     * retrieve all objects for a rule group by calling DescribeRuleGroup.
     *

     *
     * @return The high-level properties of a rule group. This, along with the RuleGroup, define the rule group.
     *         You can retrieve all objects for a rule group by calling DescribeRuleGroup.
     */

    public RuleGroupResponse getRuleGroupResponse() {
        return this.ruleGroupResponse;
    }

    /**
     *

     * The high-level properties of a rule group. This, along with the RuleGroup, define the rule group. You can
     * retrieve all objects for a rule group by calling DescribeRuleGroup.
     *

     *
     * @param ruleGroupResponse
     *        The high-level properties of a rule group. This, along with the RuleGroup, define the rule group.
     *        You can retrieve all objects for a rule group by calling DescribeRuleGroup.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public DescribeRuleGroupResult withRuleGroupResponse(RuleGroupResponse ruleGroupResponse) {
        setRuleGroupResponse(ruleGroupResponse);
        return this;
    }

    /**
     * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
     * redacted from this string using a placeholder value.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getUpdateToken() != null)
            sb.append("UpdateToken: ").append(getUpdateToken()).append(",");
        if (getRuleGroup() != null)
            sb.append("RuleGroup: ").append(getRuleGroup()).append(",");
        if (getRuleGroupResponse() != null)
            sb.append("RuleGroupResponse: ").append(getRuleGroupResponse());
        sb.append("}");
        return sb.toString();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;

        if (obj instanceof DescribeRuleGroupResult == false)
            return false;
        DescribeRuleGroupResult other = (DescribeRuleGroupResult) obj;
        if (other.getUpdateToken() == null ^ this.getUpdateToken() == null)
            return false;
        if (other.getUpdateToken() != null && other.getUpdateToken().equals(this.getUpdateToken()) == false)
            return false;
        if (other.getRuleGroup() == null ^ this.getRuleGroup() == null)
            return false;
        if (other.getRuleGroup() != null && other.getRuleGroup().equals(this.getRuleGroup()) == false)
            return false;
        if (other.getRuleGroupResponse() == null ^ this.getRuleGroupResponse() == null)
            return false;
        if (other.getRuleGroupResponse() != null && other.getRuleGroupResponse().equals(this.getRuleGroupResponse()) == false)
            return false;
        return true;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;

        hashCode = prime * hashCode + ((getUpdateToken() == null) ? 0 : getUpdateToken().hashCode());
        hashCode = prime * hashCode + ((getRuleGroup() == null) ? 0 : getRuleGroup().hashCode());
        hashCode = prime * hashCode + ((getRuleGroupResponse() == null) ? 0 : getRuleGroupResponse().hashCode());
        return hashCode;
    }

    @Override
    public DescribeRuleGroupResult clone() {
        try {
            return (DescribeRuleGroupResult) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }

}


text:
ACCEPTED

#### According to
Index Fungorum

#### Published in
Bull. Soc. mycol. Fr. 70(3): 280 (1955)

#### Original name
Diplodia perseana Delacr.

### Remarks
null


text:
package com.gemstone.gemfire.internal.lang;

import static org.junit.Assert.*;

import org.junit.Test;
import org.junit.experimental.categories.Category;

import com.gemstone.gemfire.test.junit.categories.UnitTest;

/**
 * The ObjectUtilsJUnitTest class is a test suite of test cases for testing the contract and functionality of the ObjectUtils
 * class.
 * <p/>
 * @author John Blum
 * @see com.gemstone.gemfire.internal.lang.ObjectUtils
 * @see org.junit.Assert
 * @see org.junit.Test
 * @since 6.8
 */
@Category(UnitTest.class)
public class ObjectUtilsJUnitTest {

  @Test
  public void testDefaultIfNull() {
    assertNull(ObjectUtils.defaultIfNull());
    assertNull(ObjectUtils.defaultIfNull((Object[]) null));
    assertNull(ObjectUtils.defaultIfNull(null, null));
    assertNull(ObjectUtils.defaultIfNull(null, null, null));
    assertEquals("test", ObjectUtils.defaultIfNull(null, null, "test"));
    assertEquals("test", ObjectUtils.defaultIfNull("test", null));
    assertEquals("test", ObjectUtils.defaultIfNull("test"));
    assertEquals("test", ObjectUtils.defaultIfNull("test", "mock", "assert"));
    assertEquals("null", ObjectUtils.defaultIfNull(null, "null", null));
    assertEquals("null", ObjectUtils.defaultIfNull("null", "test", null));
  }

  @Test
  public void testEqualsWithUnequalObjects() {
    assertFalse(ObjectUtils.equals(null, null));
    assertFalse(ObjectUtils.equals(null, "null"));
    assertFalse(ObjectUtils.equals("nil", null));
    assertFalse(ObjectUtils.equals("nil", "null"));
    assertFalse(ObjectUtils.equals("true", true));
    assertFalse(ObjectUtils.equals(false, true));
    assertFalse(ObjectUtils.equals('c', 'C'));
    assertFalse(ObjectUtils.equals(0.0d, -0.0d));
    assertFalse(ObjectUtils.equals(3.14159d, Math.PI));
    assertFalse(ObjectUtils.equals(Integer.MIN_VALUE, Integer.MAX_VALUE));
    assertFalse(ObjectUtils.equals("test", "TEST"));
  }

  @Test
  public void testEqualsWithEqualObjects() {
    assertTrue(ObjectUtils.equals(true, Boolean.TRUE));
    assertTrue(ObjectUtils.equals(new Character('c'), 'c'));
    assertTrue(ObjectUtils.equals(Double.MIN_VALUE, Double.MIN_VALUE));
    assertTrue(ObjectUtils.equals(Integer.MAX_VALUE, Integer.MAX_VALUE));
    assertTrue(ObjectUtils.equals("null", "null"));
    assertTrue(ObjectUtils.equals("test", new String("test")));
  }

  @Test
  public void testEqualsIgnoreNullWithUnequalObjects() {
    assertFalse(ObjectUtils.equalsIgnoreNull(null, "null"));
    assertFalse(ObjectUtils.equalsIgnoreNull("nil", null));
    assertFalse(ObjectUtils.equalsIgnoreNull("nil", "null"));
    assertFalse(ObjectUtils.equalsIgnoreNull("test", "testing"));
  }

  @Test
  public void testEqualsIgnoreNullWithEqualObjects() {
    assertTrue(ObjectUtils.equalsIgnoreNull(null, null));
    assertTrue(ObjectUtils.equalsIgnoreNull("nil", "nil"));
    assertTrue(ObjectUtils.equalsIgnoreNull("null", "null"));
    assertTrue(ObjectUtils.equalsIgnoreNull("test", "test"));
  }

  @Test
  public void testHashCode() {
    assertEquals(0, ObjectUtils.hashCode(null));
    assertEquals(Character.valueOf('c').hashCode(), ObjectUtils.hashCode('c'));
    assertEquals(Boolean.TRUE.hashCode(), ObjectUtils.hashCode(true));
    assertEquals(Double.valueOf(Math.PI).hashCode(), ObjectUtils.hashCode(Math.PI));
    assertEquals(Integer.valueOf(0).hashCode(), ObjectUtils.hashCode(0));
    assertEquals("test".hashCode(), ObjectUtils.hashCode("test"));
  }

  @Test
  public void testToString() {
    assertNull(ObjectUtils.toString(null));
    assertEquals("", ObjectUtils.toString(""));
    assertEquals(" ", ObjectUtils.toString(" "));
    assertEquals("null", ObjectUtils.toString("null"));
    assertEquals("test", ObjectUtils.toString("test"));
    assertEquals("J", ObjectUtils.toString('J'));
    assertEquals("2", ObjectUtils.toString(2));
    assertEquals(String.valueOf(Math.PI), ObjectUtils.toString(Math.PI));
    assertEquals("true", ObjectUtils.toString(Boolean.TRUE));
  }

  @Test
  public void testGetArgumentsTypesForNullArgumentsObjectArray() {
    assertNull(ObjectUtils.getArgumentTypes((Object[]) null));
  }

  @Test
  public void testGetArgumentsTypesForEmptyArgumentsObjectArray() {
    final Class[] argumentTypes = ObjectUtils.getArgumentTypes(new Object[0]);

    assertNotNull(argumentTypes);
    assertEquals(0, argumentTypes.length);
  }

  @Test
  public void testGetArgumentsTypes() {
    final Object[] arguments = { true, 'A', 0, Math.PI, "test" };
    final Class[] argumentTypes = ObjectUtils.getArgumentTypes(arguments);

    assertNotNull(argumentTypes);
    assertEquals(arguments.length, argumentTypes.length);

    int index = 0;

    for (Object argument : arguments) {
      assertEquals(argument.getClass(), argumentTypes[index++]);
    }
  }

  @Test
  public void testInvoke() {
    final ValueHolder<String> value = new ValueHolder<String>("test");

    assertEquals("test", ObjectUtils.invoke(value, "getValue"));
  }

  @Test
  public void testInvokeWithArguments() {
    final ValueHolder<String> value = new ValueHolder<String>("test");

    assertEquals("TEST", ObjectUtils.invoke(value, "transform", true));
  }

  @Test
  public void testInvokeWithParametersAndArguments() {
    final ValueHolder<Integer> value = new ValueHolder<Integer>(1);

    assertEquals("1 is the loneliest number!", ObjectUtils.invoke(value, "transform", new Class[] { String.class },
      " is the loneliest number!"));
  }

  public static final class ValueHolder<T> {

    private final T value;

    public ValueHolder(final T value) {
      assert value != null : "The value for this holder cannot be null!";
      this.value = value;
    }

    public T getValue() {
      return value;
    }

    public Object transform(final Boolean upperCase) {
      return String.valueOf(getValue()).toUpperCase();
    }

    public Object transform(final String concatenationValue) {
      return (String.valueOf(getValue()) + concatenationValue);
    }
  }

}


text:
(function (can, GGRC) {
  'use strict';

  var tpl = can.view(GGRC.mustache_path +
    '/components/ca-object/ca-object-modal.mustache');
  var baseCls = 'simple-modal';

  function recalculatePosition(el) {
    var pos = el[0].getBoundingClientRect();
    var top = Math
      .floor(window.document.body.scrollHeight / 2 - pos.height / 2);
    var left = Math
      .floor(window.document.body.scrollWidth / 2 - pos.width / 2);

    return {top: top, left: left};
  }

  GGRC.Components('customAttributeObjectModal', {
    tag: 'ca-object-modal',
    template: tpl,
    scope: {
      instance: null,
      modifiedField: null,
      modalEl: null,
      modalCls: function () {
        return this.attr('state.open') ? baseCls + '-open' : '';
      },
      modalOverlayCls: function () {
        return this.attr('state.open') ? baseCls + '__overlay-open' : '';
      },
      actionBtnText: function () {
        return this.attr('comment') ? 'Save' : 'Done';
      },
      isEmpty: function () {
        return this.attr('state.empty') && this.attr('comment');
      },
      isPerson: function () {
        return this.attr('modifiedField.value') &&
          this.attr('modifiedField.type') === 'person';
      },
      comment: false,
      evidence: false,
      state: {
        open: false,
        save: false,
        empty: true,
        controls: false
      },
      saveAttachments: function () {
        return this.attr('comment') ?
          this.attr('state.save', true) :
          this.attr('state.open', false);
      },
      hide: function hide() {
        this.attr('state.open', false);
        this.attr('state.save', false);
        this.attr('state.empty', true);
      },
      show: function () {
        this.attr('state.open', true);
        this.attr('state.save', false);
        this.attr('state.empty', true);
      },
      toggle: function (isOpen) {
        this.setAttachmentFields(isOpen);
        this.setPosition(isOpen);
      },
      mapToInternal: function () {
        this.attr('modifiedField', this.attr('modal'));
      },
      setAttachmentFields: function (isOpen) {
        var attachments = this.attr('modifiedField.fields');

        if (attachments && attachments.length) {
          attachments.forEach(function (item) {
            this.attr(item, isOpen);
          }.bind(this));
        }
      },
      setPosition: function (isOpen) {
        var modal = this.attr('modalEl');
        if (isOpen && modal) {
          modal.offset(recalculatePosition(modal));
        }
      }
    },
    events: {
      inserted: function (el) {
        var modal = el.find('.' + baseCls);
        modal.appendTo('body');
        this.scope.attr('modalEl', modal);
        el.find('.' + baseCls + '__overlay').appendTo('body');
      },
      show: function (scope, ev, val) {
        if (val) {
          this.scope.mapToInternal();
          this.scope.show();
        }
      },
      '{scope.modal} open': 'show',
      '{scope.state} open': function (scope, ev, val) {
        this.scope.toggle(val);
      },
      '{window} resize': function () {
        var isOpen = this.scope.attr('modifiedField.open');
        this.scope.setPosition(isOpen);
      }
    }
  });
})(window.can, window.GGRC);


text:
@interface GHNSURLConnectionTest : GHAsyncTestCase { }
@end

@implementation GHNSURLConnectionTest

- (void)testURLConnection {

  // Call prepare to setup the asynchronous action.
  // This helps in cases where the action is synchronous and the
  // action occurs before the wait is actually called.
  [self prepare];

  NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]];
  NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

  // Wait until notify called for timeout (seconds); If notify is not called with kGHUnitWaitStatusSuccess then
  // we will throw an error.
  [self waitForStatus:kGHUnitWaitStatusSuccess timeout:10.0];

  [connection release];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
  GHTestLog(@"%@", [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
  // Notify of success, specifying the method where wait is called.
  // This prevents stray notifies from affecting other tests.
  [self notify:kGHUnitWaitStatusSuccess forSelector:@selector(testURLConnection)];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
  // Notify of connection failure
  [self notify:kGHUnitWaitStatusFailure forSelector:@selector(testURLConnection)];
}

@end


text:
package org.jabref.logic.importer.fileformat;

import java.io.BufferedReader;
import java.io.IOException;
import java.util.Objects;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.jabref.logic.importer.Importer;
import org.jabref.logic.importer.ParserResult;
import org.jabref.logic.msbib.MSBibDatabase;
import org.jabref.logic.util.FileExtensions;

import org.w3c.dom.Document;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

/**
 * Importer for the MS Office 2007 XML bibliography format
 * By S. M. Mahbub Murshed
 *
 * ...
 */
public class MsBibImporter extends Importer {

    @Override
    public boolean isRecognizedFormat(BufferedReader reader) throws IOException {
        Objects.requireNonNull(reader);

        /*
            The correct behaviour is to return false if it is certain that the file is
            not of the MsBib type, and true otherwise. Returning true is the safe choice
            if not certain.
         */
        Document docin;
        try {
            DocumentBuilder dbuild = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            dbuild.setErrorHandler(new ErrorHandler() {

                @Override
                public void warning(SAXParseException exception) throws SAXException {
                    // ignore warnings
                }

                @Override
                public void fatalError(SAXParseException exception) throws SAXException {
                    throw exception;
                }

                @Override
                public void error(SAXParseException exception) throws SAXException {
                    throw exception;
                }
            });
            docin = dbuild.parse(new InputSource(reader));
        } catch (Exception e) {
            return false;
        }
        return (docin == null) || docin.getDocumentElement().getTagName().contains("Sources");
    }

    @Override
    public ParserResult importDatabase(BufferedReader reader) throws IOException {
        Objects.requireNonNull(reader);

        MSBibDatabase dbase = new MSBibDatabase();
        return new ParserResult(dbase.importEntriesFromXml(reader));
    }

    @Override
    public String getName() {
        return "MSBib";
    }

    @Override
    public FileExtensions getExtensions() {
        return FileExtensions.MSBIB;
    }

    @Override
    public String getDescription() {
        return "Importer for the MS Office 2007 XML bibliography format.";
    }

}


text:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <display-name>tc-api</display-name>

    <!-- Welcome File Start -->
    <welcome-file-list>
        <welcome-file>/index.html</welcome-file>
    </welcome-file-list>

    <listener>
        <listener-class>com.alibaba.dubbo.remoting.http.servlet.BootstrapListener</listener-class>
    </listener>

    <!-- spring config -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath*:/config/tc-spring-deploy.xml,
            classpath*:/config/tc-spring-cache-redis.xml,
            classpath*:/config/tc-spring-se-elasticsearch.xml,
            classpath*:/config/tc-dubbox-provider.xml
        </param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- dubbox config -->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

    <!-- druid monitor -->
    <servlet>
        <servlet-name>DruidStatView</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
        <init-param>
            <param-name>resetEnable</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>loginUsername</param-name>
            <param-value>tc_admin</param-value>
        </init-param>
        <init-param>
            <param-name>loginPassword</param-name>
            <param-value>123456</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>DruidStatView</servlet-name>
        <url-pattern>/druid-monitor/*</url-pattern>
    </servlet-mapping>

</web-app>


text:
using System;
using System.Text.RegularExpressions;
using SystemWrapper.IO;
using FakeItEasy;
using NUnit.Framework;

namespace VMLib.VMware.UnitTest
{
    [TestFixture]
    public class PVNHelperTests
    {

        public IPVNHelper DefaultPVNHelperFactory(IFileWrap file = null)
        {
            if (file == null)
                file = A.Fake<IFileWrap>();

            var sut = new PVNHelper(file);
            return sut;
        }

        [Test]
        public void GetPVN_GenerateAValidPVN_WillReturnValidPVN()
        {
            var sut = DefaultPVNHelperFactory();

            //Function is randomised so give it a good 1000 tries to make sure we don't get intermitent errors.
            for (var i = 0; i < 1000; i++)
            {
                var result = sut.GetPVN("MyNonExistingVirtualNetwork");

                Assert.That(Regex.IsMatch(result,
                    "[0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2}-[0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2}"));
            }
        }

        [Test]
        public void GetPVN_PVNAlreadyExists_WillReturnPVNFromJSON()
        {
            var file = A.Fake<IFileWrap>();
            var sut = DefaultPVNHelperFactory(file: file);
            A.CallTo(() => file.Exists($"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}\\VMLib\\VMwarePVN.json")).Returns(true);
            A.CallTo(() => file.ReadAllText($"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}\\VMLib\\VMwarePVN.json")).Returns("[{\"Name\":\"ExistingNetwork\",\"PVN\":\"00 11 22 33 44 55 66 77-88 99 AA BB CC DD EE FF\"}]");

            var result = sut.GetPVN("ExistingNetwork");

            Assert.That(result == "00 11 22 33 44 55 66 77-88 99 AA BB CC DD EE FF");
        }

        [Test]
        public void GetPVN_StorePVN_WillstorePVNOnCreate()
        {
            var file = A.Fake<IFileWrap>();
            var sut = DefaultPVNHelperFactory(file: file);

            sut.GetPVN("MyPVN");

            A.CallTo(() => file.WriteAllText(null, null)).WhenArgumentsMatch((args => args[1].ToString().Contains("MyPVN"))).MustHaveHappened();

        }
    }
}


text:
//
//  YPPhotoStoreConfiguraion.h
//  YPPhotoDemo
//
//  Created by YueWen on 16/7/13.
//  Copyright © 2017年 YueWen. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "RITLPhotoConfig.h"

NS_ASSUME_NONNULL_BEGIN

/// @brief 相机胶卷
RITL_PHOTO_EXTERN NSString * ConfigurationCameraRoll;
/// @brief 所有照片
RITL_PHOTO_EXTERN NSString * ConfigurationAllPhotos;
/// @brief 隐藏
RITL_PHOTO_EXTERN NSString * ConfigurationHidden;
/// @brief 慢动作
RITL_PHOTO_EXTERN NSString * ConfigurationSlo_mo;
/// @brief 屏幕快照
RITL_PHOTO_EXTERN NSString * ConfigurationScreenshots;
/// @brief 视频
RITL_PHOTO_EXTERN NSString * ConfigurationVideos;
/// @brief 全景照片
RITL_PHOTO_EXTERN NSString * ConfigurationPanoramas;
/// @brief 定时拍照
RITL_PHOTO_EXTERN NSString * ConfigurationTime_lapse;
/// @brief 最近添加
RITL_PHOTO_EXTERN NSString * ConfigurationRecentlyAdded;
/// @brief 最近删除
RITL_PHOTO_EXTERN NSString * ConfigurationRecentlyDeleted;
/// @brief 快拍连照
RITL_PHOTO_EXTERN NSString * ConfigurationBursts;
/// @brief 喜欢
RITL_PHOTO_EXTERN NSString * ConfigurationFavorite;
/// @brief 自拍
RITL_PHOTO_EXTERN NSString * ConfigurationSelfies;

@interface RITLPhotoStoreConfiguraion : NSObject

@property (nonatomic, strong, readonly)NSArray * groupNamesConfig;

//初始化方法
- (instancetype)initWithGroupNames:(NSArray <NSString *> *) groupNames;
+ (instancetype)storeConfigWithGroupNames:(NSArray <NSString *> *)groupNames;

/** 设置获取的相册名 */
- (void)setGroupNames:(NSArray <NSString *> *)newGroupNames;

@end

NS_ASSUME_NONNULL_END


text:
package io.reactivex.netty.protocol.http.client;

import io.netty.channel.Channel;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpMessage;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.HttpVersion;
import io.netty.handler.codec.http.cookie.Cookie;
import io.reactivex.netty.channel.Connection;
import io.reactivex.netty.channel.ContentSource;
import io.reactivex.netty.protocol.http.internal.HttpMessageFormatter;
import io.reactivex.netty.protocol.http.sse.ServerSentEvent;
import rx.Observable;
import rx.Observable.Transformer;
import rx.Subscriber;

import java.text.ParseException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 * HTTP response for {@link HttpClient}
 *
 *
Thread safety

 *
 * This object is not thread-safe and must not be used by multiple threads.
 *
 *
Mutability

 *
 * Headers and trailing headers can be mutated for this response.
 */
public abstract class HttpClientResponse<T> {

    /**
     * Returns the HTTP version for this response.
     *
     * @return The HTTP version for this response.
     */
    public abstract HttpVersion getHttpVersion();

    /**
     * Returns the HTTP status for this response.
     *
     * @return The HTTP status for this response.
     */
    public abstract HttpResponseStatus getStatus();

    /**
     * Returns an immutable map of cookie names and cookies contained in this response.
     *
     * @return An immutable map of cookie names and cookies contained in this response.
     */
    public abstract Map<String, Set<Cookie>> getCookies();

    /**
     * Checks if there is a header with the passed name in this response.
     *
     * @param name Name of the header.
     *
     * @return {@code true} if there is a header with the passed name in this response.
     */
    public abstract boolean containsHeader(CharSequence name);

    /**
     * Checks if there is a header with the passed name and value in this response.
     *
     * @param name Name of the header.
     * @param value Value of the header.
     * @param ignoreCaseValue {@code true} then the value comparision is done ignoring case.
     *
     * @return {@code true} if there is a header with the passed name and value in this response.
     */
    public abstract boolean containsHeader(CharSequence name, CharSequence value, boolean ignoreCaseValue);

    /**
     * Returns an iterator over the header entries. Multiple values for the same header appear as separate entries in
     * the returned iterator.
     *
     * @return An iterator over the header entries
     */
    public abstract Iterator<Entry<CharSequence, CharSequence>> headerIterator();

    /**
     * Returns the value of a header with the specified name.  If there are more than one values for the specified name,
     * the first value is returned.
     *
     * @param name The name of the header to search
     * @return The first header value or {@code null} if there is no such header
     */
    public abstract String getHeader(CharSequence name);

    /**
     * Returns the value of a header with the specified name.  If there are more than one values for the specified name,
     * the first value is returned.
     *
     * @param name The name of the header to search
     * @param defaultValue Default if the header does not exist.
     *
     * @return The first header value or {@code defaultValue} if there is no such header
     */
    public abstract String getHeader(CharSequence name, String defaultValue);

    /**
     * Returns the values of headers with the specified name
     *
     * @param name The name of the headers to search
     *
     * @return A {@link List} of header values which will be empty if no values are found
     */
    public abstract List<String> getAllHeaderValues(CharSequence name);

    /**
     * Returns the length of the content.
     *
     * @return the content length
     *
     * @throws NumberFormatException if the message does not have the {@code "Content-Length"} header or its value is
     * not a number.
     */
    public abstract long getContentLength();

    /**
     * Returns the length of the content.
     *
     * @param defaultValue Default value if the message does not have a {@code "Content-Length"} header or its value is
     * not a number
     *
     * @return the content length or {@code defaultValue} if this message does not have the {@code "Content-Length"}
     * header or its value is not a number
     */
    public abstract long getContentLength(long defaultValue);

    /**
     * Returns the date header value with the specified header name.  If there are more than one header value for the
     * specified header name, the first value is returned.
     * The value is parsed as per the
     * HTTP specifications using the format:
     *
"E, dd MMM yyyy HH:mm:ss z"

     *
     * @param name The name of the header to search
     *
     * @return the header value
     *
     * @throws ParseException if there is no such header or the header value is not a formatted date
     */
    public abstract long getDateHeader(CharSequence name) throws ParseException;

    /**
     * Returns the date header value with the specified header name.  If there are more than one header value for the
     * specified header name, the first value is returned.
     * The value is parsed as per the
     * HTTP specifications using the format:
     *
"E, dd MMM yyyy HH:mm:ss z"

     *
     * @param name The name of the header to search
     * @param defaultValue Default value if there is no header with this name.
     *
     * @return the header value or {@code defaultValue} if there is no header with this name.
     */
    public abstract long getDateHeader(CharSequence name, long defaultValue);

    /**
     * Returns the value of the {@code "Host"} header.
     */
    public abstract String getHostHeader();

    /**
     * Returns the value of the {@code "Host"} header.
     *
     * @param defaultValue Default if the header does not exist.
     *
     * @return The value of the {@code "Host"} header or {@code defaultValue} if there is no such header.
     */
    public abstract String getHost(String defaultValue);

    /**
     * Returns the integer header value with the specified header name.  If there are more than one header value for
     * the specified header name, the first value is returned.
     *
     * @param name The name of the header to search
     *
     * @return the header value
     *
     * @throws NumberFormatException if there is no such header or the header value is not a number
     */
    public abstract int getIntHeader(CharSequence name);

    /**
     * Returns the integer header value with the specified header name.  If there are more than one header value for
     * the specified header name, the first value is returned.
     *
     * @param name The name of the header to search
     * @param defaultValue Default if the header does not exist.
     *
     * @return the header value or the {@code defaultValue} if there is no such header or the header value is not a
     * number
     */
    public abstract int getIntHeader(CharSequence name, int defaultValue);

    /**
     * Returns {@code true} if and only if this response has the content-length header set.
     */
    public abstract boolean isContentLengthSet();

    /**
     * Returns {@code true} if and only if the connection can remain open and thus 'kept alive'.  This methods respects
     * the value of the {@code "Connection"} header first and then the return value of
     * {@link HttpVersion#isKeepAliveDefault()}.
     */
    public abstract boolean isKeepAlive();

    /**
     * Checks to see if the transfer encoding of this response is chunked
     *
     * @return True if transfer encoding is chunked, otherwise false
     */
    public abstract boolean isTransferEncodingChunked();

    /**
     * Returns a new {@link Set} that contains the names of all headers in this response.  Note that modifying the
     * returned {@link Set} will not affect the state of this response.
     */
    public abstract Set<String> getHeaderNames();

    /**
     * Adds an HTTP header with the passed {@code name} and {@code value} to this response.
     *
     * @param name Name of the header.
     * @param value Value for the header.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> addHeader(CharSequence name, Object value);

    /**
     * Adds the passed {@code cookie} to this response.
     *
     * @param cookie Cookie to add.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> addCookie(Cookie cookie);

    /**
     * Adds the passed header as a date value to this response. The date is formatted using netty's
     * {@link HttpHeaders#addDateHeader(HttpMessage, CharSequence, Date)} which formats the date as per the
     * HTTP specifications into the format:
     *
"E, dd MMM yyyy HH:mm:ss z"

     *
     * @param name Name of the header.
     * @param value Value of the header.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> addDateHeader(CharSequence name, Date value);

    /**
     * Adds multiple date values for the passed header name to this response. The date values are formatted using netty's
     * {@link HttpHeaders#addDateHeader(HttpMessage, CharSequence, Date)} which formats the date as per the
     * HTTP specifications into the format:
     *
     *
"E, dd MMM yyyy HH:mm:ss z"

     *
     * @param name Name of the header.
     * @param values Values for the header.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> addDateHeader(CharSequence name, Iterable<Date> values);

    /**
     * Adds an HTTP header with the passed {@code name} and {@code values} to this response.
     *
     * @param name Name of the header.
     * @param values Values for the header.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> addHeader(CharSequence name, Iterable<Object> values);

    /**
     * Overwrites the current value, if any, of the passed header to the passed date value for this response. The date is
     * formatted using netty's {@link HttpHeaders#addDateHeader(HttpMessage, CharSequence, Date)} which formats the date
     * as per the HTTP specifications into
     * the format:
     *

     *
"E, dd MMM yyyy HH:mm:ss z"

     *
     * @param name Name of the header.
     * @param value Value of the header.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> setDateHeader(CharSequence name, Date value);

    /**
     * Overwrites the current value, if any, of the passed header to the passed value for this response.
     *
     * @param name Name of the header.
     * @param value Value of the header.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> setHeader(CharSequence name, Object value);

    /**
     * Overwrites the current value, if any, of the passed header to the passed date values for this response. The date
     * is formatted using netty's {@link HttpHeaders#addDateHeader(HttpMessage, CharSequence, Date)} which formats the
     * date as per the HTTP specifications
     * into the format:
     *

     *
"E, dd MMM yyyy HH:mm:ss z"

     *
     * @param name Name of the header.
     * @param values Values of the header.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> setDateHeader(CharSequence name, Iterable<Date> values);

    /**
     * Overwrites the current value, if any, of the passed header to the passed values for this response.
     *
     * @param name Name of the header.
     * @param values Values of the header.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> setHeader(CharSequence name, Iterable<Object> values);

    /**
     * Removes the passed header from this response.
     *
     * @param name Name of the header.
     *
     * @return {@code this}
     */
    public abstract HttpClientResponse<T> removeHeader(CharSequence name);

    /**
     * Returns the content as a stream of Server sent events.
     * There can only be one {@link Subscriber} to the returned {@link Observable}, any subsequent subscriptions will
     * get an error.
     *
     * @return Stream of content as {@link ServerSentEvent} messages.
     */
    public abstract ContentSource<ServerSentEvent> getContentAsServerSentEvents();

    /**
     * Returns the content as a stream. There can only be one {@link Subscriber} to the returned {@link Observable}, any
     * subsequent subscriptions will get an error.
     *
     * @return Stream of content.
     */
    public abstract ContentSource<T> getContent();

    /**
     * Marks the content to be discarded. This means that the content can not be read from this response from now.
     *
     * @return An {@link Observable}, subscription to which will discard the content. This {@code Observable} will
     * error/complete when the content errors/completes and unsubscription from here will unsubscribe from the content.
     */
    public abstract Observable<Void> discardContent();

    /**
     * Transforms the type of objects read from the content of this response, using the supplied {@code transformer}.
     *
     * @return A new instance of {@code HttpClientResponse} with transformed content.
     */
    public abstract <TT> HttpClientResponse<TT> transformContent(Transformer<T, TT> transformer);

    /**
     * Returns the underlying channel on which this response was received.
     *
     * @return The underlying channel on which this response was received.
     */
    public abstract Channel unsafeNettyChannel();

    /**
     * Returns the underlying connection on which this response was received.
     *
     * @return The underlying connection on which this response was received.
     */
    public abstract Connection<?, ?> unsafeConnection();

    public String toString() {
        return HttpMessageFormatter.formatResponse(getHttpVersion(), getStatus(), headerIterator());
    }
}


text:
#pragma once

#include "il2cpp-config.h"

#ifndef _MSC_VER
# include <alloca.h>
#else
# include <malloc.h>
#endif

#include <stdint.h>
#include <assert.h>
#include <exception>

#include "codegen/il2cpp-codegen.h"
#include "mscorlib_System_Array_InternalEnumerator_1_gen2953159047MethodDeclarations.h"

// System.Void System.Array/InternalEnumerator`1<Mono.Globalization.Unicode.Contraction>::.ctor(System.Array)
#define InternalEnumerator_1__ctor_m3668424286(__this, ___array0, method) ((  void (*) (InternalEnumerator_1_t2781113352 *, Il2CppArray *, const MethodInfo*))InternalEnumerator_1__ctor_m2616641763_gshared)(__this, ___array0, method)
// System.Void System.Array/InternalEnumerator`1<Mono.Globalization.Unicode.Contraction>::System.Collections.IEnumerator.Reset()
#define InternalEnumerator_1_System_Collections_IEnumerator_Reset_m102463106(__this, method) ((  void (*) (InternalEnumerator_1_t2781113352 *, const MethodInfo*))InternalEnumerator_1_System_Collections_IEnumerator_Reset_m2224260061_gshared)(__this, method)
// System.Object System.Array/InternalEnumerator`1<Mono.Globalization.Unicode.Contraction>::System.Collections.IEnumerator.get_Current()
#define InternalEnumerator_1_System_Collections_IEnumerator_get_Current_m450324206(__this, method) ((  Il2CppObject * (*) (InternalEnumerator_1_t2781113352 *, const MethodInfo*))InternalEnumerator_1_System_Collections_IEnumerator_get_Current_m390763987_gshared)(__this, method)
// System.Void System.Array/InternalEnumerator`1<Mono.Globalization.Unicode.Contraction>::Dispose()
#define InternalEnumerator_1_Dispose_m1273363893(__this, method) ((  void (*) (InternalEnumerator_1_t2781113352 *, const MethodInfo*))InternalEnumerator_1_Dispose_m2760671866_gshared)(__this, method)
// System.Boolean System.Array/InternalEnumerator`1<Mono.Globalization.Unicode.Contraction>::MoveNext()
#define InternalEnumerator_1_MoveNext_m2165594350(__this, method) ((  bool (*) (InternalEnumerator_1_t2781113352 *, const MethodInfo*))InternalEnumerator_1_MoveNext_m3716548237_gshared)(__this, method)
// T System.Array/InternalEnumerator`1<Mono.Globalization.Unicode.Contraction>::get_Current()
#define InternalEnumerator_1_get_Current_m3444508709(__this, method) ((  Contraction_t3998770676 * (*) (InternalEnumerator_1_t2781113352 *, const MethodInfo*))InternalEnumerator_1_get_Current_m2178852364_gshared)(__this, method)


text:
//
//  ASLayoutSpecPrivate.h
//  AsyncDisplayKit
//
//  Created by Michael Schneider on 9/15/16.
//
//  Copyright (c) 2014-present, Facebook, Inc.  All rights reserved.
//  This source code is licensed under the BSD-style license found in the
//  LICENSE file in the root directory of this source tree. An additional grant
//  of patent rights can be found in the PATENTS file in the same directory.
//

#import <AsyncDisplayKit/ASAvailability.h>
#import <AsyncDisplayKit/ASInternalHelpers.h>
#import <AsyncDisplayKit/ASThread.h>

NS_ASSUME_NONNULL_BEGIN

@interface ASLayoutSpec() {
  ASDN::RecursiveMutex __instanceLock__;
#if AS_TARGET_OS_IOS
  ASPrimitiveTraitCollection _primitiveTraitCollection;
#endif
  ASLayoutElementStyle *_style;
  NSMutableArray *_childrenArray;
}

/**
 * Recursively search the subtree for elements that occur more than once.
 */
- (nullable NSSet<id<ASLayoutElement>> *)findDuplicatedElementsInSubtree;

@end

NS_ASSUME_NONNULL_END