text:
Q: Microblink: successfully reading an image I'm asking the Microblink card reader to look at a photo of a card, rather than using the camera. I've tried both a portrait, and landscape version of a Mastercard. This is how I'm declaring my main variables:
let blinkCardRecognizer = MBCBlinkCardRecognizer()
var recognizerList = [MBCRecognizer]()

lazy var recognizerCollection: MBCRecognizerCollection = {
    blinkCardRecognizer.extractCvv = false
    blinkCardRecognizer.extractIban = false
    blinkCardRecognizer.extractExpiryDate = false

    recognizerList.append(blinkCardRecognizer)
    return MBCRecognizerCollection(recognizers: recognizerList)
}()
lazy var recognizerRunner: MBCRecognizerRunner = {
    MBCRecognizerRunner(recognizerCollection: recognizerCollection)
}()

I've declared these two delegates:
MBCBlinkCardOverlayViewControllerDelegate, MBCScanningRecognizerRunnerDelegate

After I get my UIImage, I call this function:
func prepareToReadImage(_ theImage: UIImage?) {
    recognizerRunner.scanningRecognizerRunnerDelegate = self

    var image: MBCImage? = nil
    if let anImage = theImage {
        image = MBCImage(uiImage: anImage)
    }
    image?.cameraFrame = true
    image?.orientation = MBCProcessingOrientation.down
    let _serialQueue = DispatchQueue(label: "com.microblink.DirectAPI-sample-swift")
    _serialQueue.async(execute: {() -> Void in
        self.recognizerRunner.processImage(image!)
    })
}

Here is my delegate callback. Every time, I am getting a status of .empty:
func recognizerRunner(_ recognizerRunner: MBCRecognizerRunner, didFinishScanningWith state: MBCRecognizerResultState) {
    if state == .valid { // values: .empty, .uncertain, .valid, .stageValid
        let result = blinkCardRecognizer.result

        DispatchQueue.main.async(execute: {() -> Void in
            print (result.owner)
            print (result.cardNumber)
            print (result.cardNumberPrefix)
        })
    }
}

Any reason why I'm not getting a .valid response? Also, does this look like the correct way to be pulling off the card details, once (if and when) I do?  Thanks!

A: Is this issue connected with the issue here?
If so, I can also suggest the following:
You can add a func which calls the image picker (I am using the devices camera as the source type):
private func openImagePicker() {
        let imagePicker = UIImagePickerController()
        imagePicker.sourceType = .camera
        imagePicker.cameraDevice = .rear

        addOverlayLabel(toImagePicker: imagePicker)

        // Displays a control that allows the user to choose only photos
        imagePicker.mediaTypes = [kUTTypeImage as String]

        // Hides the controls for moving & scaling pictures, or for trimming movies.
        imagePicker.allowsEditing = false

        // Shows default camera control overlay over camera preview.
        imagePicker.showsCameraControls = true

        // set delegate
        imagePicker.delegate = self
        present(imagePicker, animated: true) {() -> Void in }
        imagePickerController = imagePicker
    }

In the func recognizerRunner, you can place the func to be called when the state is not valid, like this:
extension ViewController: MBCScanningRecognizerRunnerDelegate {

func recognizerRunner(_ recognizerRunner: MBCRecognizerRunner, didFinishScanningWith state: MBCRecognizerResultState) {
    DispatchQueue.main.async(execute: {() -> Void in
        if state != .valid {
            self.openImagePicker()
            return
        }

        print(state.rawValue)
        let result = self.blinkCardRecognizer.result

        print("Owner: \(result.owner)")
        print("Card number: \(result.cardNumber)")
        print("Card number prefix: \(result.cardNumberPrefix)")

    })
  }
}

This will give you a chance to re-take the image again if the state is not valid.
Also to ask, where are you placing the prepareToReadImage?
You need to place it in the func imagePickerController, like this:
extension ViewController: UIImagePickerControllerDelegate {

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    let mediaType = info[UIImagePickerController.InfoKey.mediaType] as? String

    if CFStringCompare(mediaType as CFString?, kUTTypeImage, CFStringCompareFlags(rawValue: 9)) == .compareEqualTo {
        let originalImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
        prepareToReadImage(originalImage)
    }

    picker.dismiss(animated: true, completion: nil)
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    serialQueue.async {
        self.recognizerRunner?.resetState()
    }

    dismiss(animated: true, completion: nil)

  }
}

Lastly, make sure you're placing the settings of the recognizer before starting the scanning process.
I've added the func setupRecognizerRunner, where I'm defining everything you did in your block of code:
    private func setupRecognizerRunner() {

    blinkCardRecognizer = MBCBlinkCardRecognizer()
    var recognizers = [MBCRecognizer]()

    blinkCardRecognizer.extractCvv = false
    blinkCardRecognizer.extractIban = false
    blinkCardRecognizer.extractExpiryDate = false

    recognizers.append(blinkCardRecognizer)
    let recognizerCollection = MBCRecognizerCollection(recognizers: recognizers)
    recognizerRunner = MBCRecognizerRunner(recognizerCollection: recognizerCollection)

    recognizerRunner?.scanningRecognizerRunnerDelegate = self
}

And I've placed it in the viewDidLoad(), after the license key method has been loaded.

A: Removing the following line allowed me to get a .valid response:
image?.cameraFrame = true


Computer antivirus software is an important barrier preventing viruses to your computer. There are many viruses become more powerful, computer antivirus software is a must. There is antivirus software will not open today to solve this problem.
AV terminator is to undermine the system in safe mode and mainstream anti-virus antivirus software, implant thief Trojan virus. It agglomeration currently Internet most popular of virus technology Yu one, damage process after has closely of "planning", first damage user computer of antivirus software and firewall of run, then virus automatically connection to hacker specified of server, to download large of stolen, Trojans, and advertising rogue software to you of computer in, eventually led to user of network silver, and online game, and QQ account password and confidential documents will Shang to hacker specified of server in the.
1. mainstream antivirus software will not open, all kinds of killing cannot be installed, run directly by the virus removed.
2. systems destroyed by the virus in safe mode could not be in safe mode use antivirus software virus removal.
3. shut down antivirus, virus, Trojan page.
first, virus programs prevent the major security software installed and running second, hijack your browser home page, and an icon is created on the desktop cannot be deleted; and, third, infection, Ddraw.dll, System files such as Mshtml.dll,Dsound.dll,olepr032.dll,D3D9.dll,winrnr.dll,D3d8.dll, steal hot online games WOW, DNF, asked, Tian long BA BU, fantasy westward journey, such as the account number four will pop up in disguise Tencent QQ messages, phishing fraud attacks. Even more problematic is that there is a bug of the virus can lead to computer blue screen, just reinstall the system to resolve.
download kingsoft stubborn trojans kill, kill root directory to download to e (because the killing found the killing will remove the desktop, it is recommended to download to any partition of the hard disk) and then open, click on the quick scan can be cleared.
1 the computer, enter the main interface into "killing the Trojan"
2, and then click on the "full scan"
AV Terminator Salvation through bad video Web sites and popular online games hack spread, viruses hiding among them. Jinshan Defender will intercept these dangerous downloads by kingsoft Web site security system prevents users from these dangerous downloaded files.


Mary Tuomanen as Cassius in JULIUS CAESAR. Costumes by Jane Casanave. Photo by Shawn May.
Was Brutus an honorable man? The debate was a common rhetorical device in 16th-century schools, and Shakespeare uses this familiar conflict to frame his JULIUS CAESAR, now in production by Quintessence Theatre Group.
The play is set in the final death throes of the Roman Republic. Fresh off of his bloody victory against his frenemy Pompey, Caesar is at the height of his powers and chafing quite a few once-eminent politicians. Cassius convinces Caesar's maybe-son Brutus to join in a conspiracy which successfully murders the would-be tyrant. After some powerful speeches by Brutus and Caesar-partisan Antony ("Friends, Romans, countrymen, lend me your ears"), the empire falls into civil war, ending with the deaths of Brutus and Cassius.
This spring's production of JULIUS CAESAR by Quintessence Theatre Group, directed by artistic director Alexander Burns, doesn't seem too interested in being a referendum on Brutus or his contemporaries. Here, Cassius (Mary Tuomanen) isn't a silver-tongued villain or hero of republican virtue; he's a proud man repeatedly humiliated by a proto-tyrant. Michael Brusasco's Brutus isn't a too-virtuous stoic; rather, he is almost aggressively average (the very fashionable hair is a turnoff, though; is this Brutus meant to be a dandy?). Both Antony and Octavius begin the play (seemingly) sincere and shocked by violence, and at some point, off-stage, learn to love bloodshed and power. Even Paul Hebron's Caesar comes across not as a charismatic and magnetic leader, but pompous and hardheaded, perhaps a bit too comfortable in his role, and eminently stabable.
So these main characters, in Burns' production, range from inscrutable to obviously normal. Brett Ashley Robinson's Antony in particular is difficult to read. Robinson plays the hard-partying Antony as a charismatic and powerful performer. The most entrancing moment of the production is her slow walk among the conspirators, shaking each one's bloody hand, and ending up in the center of a knife-wielding circle; Antony should be terrified, but Robinson is all coiled, potential energy, and it's the conspirators who look lost, as if they've suddenly found themselves having to corral a lion. Is Antony really lost in the moment, or is this all carefully staged? Robinson doesn't let us know.
"And tell sad stories about the death of kings." J. Alex Cordaro's fight choreography for Caesar's assassination. Photo by Shawn May.
This subverts what is often seen as a larger anti-democratic theme in Shakespeare's play. Burns cuts the opening scene, where two senators berate the unwashed masses for cheering for Caesar's victory over Pompey, whom the people who had so recently loved. Shakespeare is often read as painting the people as fickle, mindless, less noble than deliberative Brutus, less intelligent than plotting Cassius. This is shown again in the people's reactions to Brutus and Antony's subsequent speeches over the body of Caesar, where the people are easily swayed from defending Caesar, to loving his assassin Brutus, to wanting to burn Brutus' house to the ground.
Burns keeps this scene in, and the people are adequately buffoonish, but watching them scratch their heads and run in fevered circles while Antony gradually raises the temperature of his denouncements of the assassins, I find myself curiously sympathetic to them. Antony's motives are unclear to me. Is this practiced speaker an idealist outraged by the violation of Roman mos maiorum, or a partisan grabbing an opportunity at power, or a grief-stricken friend? All I know is, too much is happening too quickly for the populus to grasp it, and they're doing their best to show their love for Rome. Perhaps Antony himself doesn't know what's happening, and is already swept up in the struggle for power and survival.
Some framing items subtly suggest a larger power structure. The device that is used as a sort of subtitle/marketing pitch for the production, "all republics fall," suggests inevitability; white-on-black captions which help tell the story also raise us, somewhat, above the drama of the individuals playing out on stage and remind us that things have to go this way.
Is this an excellent production of Julius Caesar? It's got a lot to chew on, some stunning scenes (watch Robinson and Tuomanen, in particular), and it's ultimately better-than-average. I'd recommend it based on everything I've said above, but here are my quibbles. Burns's attempts to ground us in Roman history by inserting sections from other, popular masques and plays of the time is interesting but probably a waste of energy; none of the added content really shines, we find ourselves learning about Cato and wondering why, and I doubt anyone really learned anything. Brusasco as Brutus is perhaps too normal; I don't really know what to remember (except for that fashionable hair). Even his contemplation scenes, such as they are, seem decided from the start, which is a shame, because if we don't buy his virtue he's just a bungler, a mediocre white guy. He provides a rousing bout of rage in his touching argument with Cassius, but even at the end of their quarrel, he gives me no reason why Cassius should love him so much. I would have left this Brutus out of the conspiracy altogether.


Drug and/or alcohol addiction is a powerfully debilitating disease as anyone suffering from it would tell you. It's time to explore assistance from a professional addiction counselor when an addict recognizes that they cannot handle their addiction by themselves. You will be able to establish a recovery plan, stay sober and gain an understanding as to what caused your addiction with the variety of therapy options available.
An important component of addiction therapy is the involvement and role that the counselor plays in the treatment process. An addiction counselor assists the addict throughout the entire process of treatment creating a customized plan for recovery as well as post-care providing constant and consistent support.
Group therapy sessions are also conducted as a way to incorporate other patients undergoing treatment or family members. Group therapy often leads to dialogues regarding family dynamics and the resulting detrimental relationships generate and encourage addictive behaviors. These flaws once identified allow the patient to begin taking important steps toward recovery and post-treatment.
Dialectical Behavior Therapy (DBT) – Used on patients with a dual diagnosis, the main objective of DBT is to assist patients to gain coping abilities and confidence to manage stressful scenarios in healthier ways. Additionally, DBT helps to improve self-image and communication.
Cognitive Behavioral Therapy (CBT) – CBT is an effective method in helping addiction because of its focus on the relationship between the choices and behaviors that are a result of a particular thought process. The patient is trained to modify the thinking process in order to gain control of the physiological outcomes. Through CBT a counselor is able to help a patient determine triggers that lead to unhealthy choices and behaviors and replace them with healthier ones.
Biofeedback and Neurofeedback – Using real-time displays of activity in the brain, monitoring blood pressure, heart rate and muscle tension. This helps the patient understand how to modify their brain function so that they can better control their actions.
Holistic therapies – Gaining an understanding of their addiction through learning coping skills and introspection holistic can be helpful to addiction patients. It provides patients with an alternative way of opening up such as art therapy, yoga and equine therapy.
Mindfulness, Guided Imagery, Hypnotherapy and Medication – A focus is placed on pinpointing triggers, using deep relaxation methods and controlling stress with these forms of therapy. The objective is to get the patient into a more relaxed state of mind to gain a greater understanding of what is causing the addictive behavior.
A standard addiction treatment center will provide a diversity of therapies so that treatment can address the entire program, eventually leading to the patient's long-lasting recovery.
The temptation to think that you can recover without the assistance of addiction counseling and therapy is great – considering it isn't the most pleasurable experience. Uncovering painful and traumatic experiences is no walk in the park. Without doing the work to expose any latent issues that are feeding the addictive behavior, any potential recovery you gain is temporary at best.


Join us for this informal monthly gathering of bee enthusiasts - a chat fest of beekeeping information! All are welcome!
No experience necessary, though if you're really new to it, reading up some before you come is a good idea so you can have questions in mind to share.
Betty Evans Community Room in the new wing (left hand door) of the E.J. Noble Medical Bldg.
80 E. Main Street, Canton, NY.
Next to the Best Western, across from the Price Chopper on Rt. 11, Canton.
Usually we post an orange 'Local Living Workshop Site' lawn site near the door.
Become a Pollinator Pal! Plant for Pollinators!
A collaborative project of Local Living Venture, the WISER Center at SUNY Potsdam and the St. Regis Mohawk Tribe Environmental Division with many community partners. Click the link above for details!
The LLV coordinates near-weekly Resourceful Living Skills Workshops, community events and information exchanges - sharing traditional rural and simple living skills for a healthy and capable community.


These spring-forward earrings have a double hoop - one hammered plated gold over a colorful resin hoop. Available in either a blue or pink. Perfect for everyday wear, these super lightweight earrings add the perfect pop.
Available gold plated sterling silver.


There's not been much crochet since Sunday since I, for some bizarre reason, only bought one ball of the main colour! So I can't crochet any more of my beanie. Unbelievably I also ran out of grey when adding more to my Star Ripple on Monday! The curse of grey yarn… I know it's not much of a Yarning Along post, but it's entirely truthful.
The good news is that I'm near a yarn shop tomorrow. But I was very keen to do some crochet over the bank holiday weekend, feeling a little under par and needing distraction from the marathon snooker coverage on TV (anyone else suffer experience a lot of this too?!) but couldn't do anything about it at all due to my local yarn shops being closed on Sundays and for the holiday. I'm better if I only have two things on the go at a time, so resisted the urge to start some knitting.
I enjoyed Love Nina, by Nina Stibbe so much that I'm now listening to Paradise Lodge, which is a semi-autobiographical account. I've found a good Guardian review if you fancy reading a bit more about her books. Do you remember the awful stereotypical character Emily, in Friends, played by Helen Baxendale? She's narrating this book really well. Apparently a Leicestershire accent is hard to do but she's doing a good job.
I'm always making something and I never go a day without reading. I'm really missing Ginny's Yarn Along as I always enjoyed seeing everyone's posts, so I've decided to host my own version.
Come and share what you're making and reading every Wednesday. Get inspired by others and motivated to finish your makes. You might even pick up some good book recommendations. Leave a current link here by clicking on the blue box below, and following the instructions. Don't forget to include a link back to this post on your blog etc, so others can find us! Tell your followers about Yarning Along on your blog, Facebook, Instagram, Twitter etc using #yarningalong.
I was hoping your image thumbnails would magically appear here, rather than on an external page (I've paid for a subscription.) The issue seems to be with WordPress blogs, but one click on the blue box will take you to view them. If you've hosted a link up with a link-up provider, which does work well with WordPress, let me know!
OMGosh, is this a Sunday thing then? So sorry. My head is everywhere. Workin' on my post now.
That is such neat crochet. I like this maroon with that grey.
Thank you, can't wait to pick up more yarn today.
Every Wednesday, but I've left the link up active for the whole week after as Ginny used to do, then people can still join in when they can.


text:
Old School Lane presents Kevin's Top 100 Favorite Animated Shows (29-20)
Hey everyone, welcome back to my list of my favorite animated shows of all time. We're almost finished, so let's not waste any time.
29. Jem and the Holograms (1985)
Yes, I know. I'm a guy. But I can't help but love this show. If there are some guys who can admit liking My Little Pony and people finding that okay, then why can't I admit that I love Jem? It's about a girl named Jerrica Benton who owns her father's music company after his death. When she comes across her father's computer, known as Synergy, she's given a pair of earrings to transformed into her pop singing, pink haired alter ego Jem. Think of it like Hanna Montana, except it was in the 80's and was, well, good. Jem and her bandmates Kimber, Aja, and Shana have many adventures competing against their rival rock bands, The Misfits and The Stingers. They had over 150 songs that was catered to the show exclusively. Almost each song was catchy and memorable. It also showed music videos of the bands which was capturing the popularity of MTV and made the cartoon unique for its time. It was like Josie and the Pussycats for a new generation. They finally released it on DVD and they're showing it again on The Hub for kids who had never seen it before, which is awesome. Now if only they would release the soundtrack of all the songs. That would be outrageous! Truly, truly, truly outrageous!
28. Aaahh!!! Real Monsters (1994)
This classic Nickelodeon cartoon had all the things I loved when I was a kid. Monsters, gross humor, and funny adult jokes. It involves with three monsters, Ickis, Krumm, and Oblina, going into a monster academy to learn how to be scary for the human world. Throughout each adventure, they always get themselves into trouble and have to find ways to get out of it. Each character were funny and memorable from their teacher, The Gromble to the crazy monster obsessed man named Simon the Monster Hunter. This show was animated by Klasky Csupo, the same studio who animated Rugrats and Duckman. Just like every show that was trying to capture the popularity of Ren and Stimpy at the time, Aaahh!!! Real Monsters was dark, gross, and not really intended for children.
Originally, there was supposed to be an Aaahh!!! Real Monsters movie that was supposed to come out, but Nickelodeon rejected it because they thought it would be too scary for children. That is straight up crap right there! Overall, I love this show and I always watch it on Netflix whenever I have the time to do so.
27. Extreme Ghostbusters (1997)
Not a lot of people remember that there was another cartoon of the Ghostbusters after The Real Ghostbusters. It was released in 1997, 13 years after the first Ghostbusters movie, 8 years after Ghostbusters II, and 6 years after The Real Ghostbusters had ended. So the popularity of the Ghostbusters series at the time was gone. However, this cartoon was good and it shouldn't be forgotten. It takes place years after The Real Ghostbusters had ended. Since there aren't any more supernatural crimes as there was before, the original Ghostbusters retired and had moved on with their lives, with the exception of Egon. He still lives in the firehouse with Slimer and is now a college professor teaching a paranormal class to four students, Eduardo, Roland, Garrett, and Kylie. When the ghosts start reappearing again, Egon recruits his students to fight the ghosts and save the day.
This was like Ghostbusters for a new generation. It kept the same scary moments and funny humor from its predecessors, but also added in a darker and moodier atmosphere. It's a show that has been sadly overlooked and if you're a fan of Ghostbusters, you should really check it out. Also, I'm still waiting for Ghostbusters III. Even if Bill Murray isn't going to be in it!
26. Underdog (1964)
There's no need to fear! Underdog is here! This classic 1964 cartoon involves with a dog named Shoeshing Boy, who shines shoes, but when trouble is calling, he runs to a nearby phone booth and turns into Underdog. His powers are similiar to Superman; he has flight, super strength, X-Ray vision, super breath, atomic breath, invulnerability from harm, and more. He mostly rescues the beautiful Sweet Polly Purebred from the evil villains The Electric Eel, Battyman, Tap-Tap the Chisler, and Overcat. Whenever he gets weak, he takes the "Underdog Super Energy Pill" and finishes his fight. Similar to Rocky and Bullwinkle, Underdog has different segments on the show such as Tennessee Tuxedo, Commander McBragg, Go Go Gophers, and Klondike Kat. This show was funny and action packed. A fantastic cartoon to watch again and again.
However, don't watch the crappy Underdog movie! It has almost nothing to do with the cartoon and it pains me that they made this! Ugh!
25. Bobby's World (1990)
If I were to mention the name Howie Mandel, what would you immediately associate him with?
Yeah, yeah. Deal or No Deal. But did you know that he had created an animated sitcom based on some stories from his childhood? Well, if you didn't, then you should really check out Bobby's World.
The story involves with a 4-year-old boy named Bobby Generic (who was voiced by Howie himself) and his family. Throughout the segments of each episode, we see his imaginative world and the interactions that he has with his family and friends. It was a show that really made me use my imagination that most kids shows today don't have. Bobby, his friends, and his family members are all funny and memorable. At the end of each episode, Howie and Bobby would talk to each other about today's lesson that they had learned from the episode. Overall, it was a great animated sitcom. Also, Howie had mentioned that he is working on new episodes of Bobby's World. I can't wait to see it when it comes out!
I also loved Bobby's appearance in Deal or No Deal.
24. The Adventures of Jimmy Neutron: Boy Genius (2002)
After the success of the movie, Jimmy Neutron: Boy Genius, Nickelodeon decided to have a TV series based on the 10-year-old boy genius Jimmy Newtron, his robot dog Goddard, his rival Cindy Vortex, her best friend, Libby Folfax, and Jimmy's best friends Carl Wheezer and Sheen Estevez. Each episode involves with Jimmy inventing or experimenting on something that goes horribly wrong and he and his friends work together to fix it. Jimmy also saves his town of Retroville and sometimes the world from his arch enemies such as the aliens King Goobot and his assistant Ooblar, Professor Calamitous, Beautiful Gorgeous, and Eustace Strych. It had a catchy theme that I made Patricia sing to me all the time (no lie) and it was always fun to watch! A great show done by Nickelodeon!
However, the spinoff, Planet Sheen is really not that good. I would skip it.
23. Looney Tunes (1930)
What else can I say about it that you don't already know? They're fantastic cartoon shorts based on our favorite cartoon characters, Bugs Bunny, Daffy Duck, Porky Pig, Sylvester the Cat, Tweety Bird, Elmer Fudd, and more. Each cartoon was great to watch and a lot of fun. They're still showing it in Cartoon Netword as of today. Why? Because these cartoons are timeless and are still has much fun to watch as there were over 80 years ago.
22. Transformers (1984)
The original Transformers cartoons trumps the Michael Bay movies and the current Transformers cartoon by a mile. I did like Transformers: Beast Wars, but I would watch the original any day of the week. The fight between the Autobots led by Optimus Prime and the Decepticons led by Megatron was always action packed and violent. Each character was lovable and memorable. Also, the toys were fantastic. One of the most popular toy brands of the 80's that I still own some today.
Overall, a fantastic show that brings you back to your childhood. If you want to see a kickass Transformers movie, see the 1986 animated one. Not the Michael Bay ones! They suck!
21. Gargoyles (1994)
Due to the popularity of Batman: The Animated Series, Disney decided to release a dark, serious animated show called Gargoyles. It's about a group of gargoyles led by Goliath. They would turn to stone during the day, but at night, they would be released from their slumber and protect a castle, the king, and the princess during the Middle Ages. However, due to a crime they didn't commit, a wizard cast a spell that would turn them into stone until "the castle was higher than the clouds". Hundreds of years later, a billionaire named David Xanthos bought the castle and turned it into a skyscraper. This released the gargoyles from their spell. Along the way, a police officer named Elisa Maza discovers the gargoyles and together, they fight crime and stop the evils of supernatural beings in New York while adjusting to the new time period. It was a fantastic show with great characters and great storytelling. It's too bad that Disney doesn't release stuff like this anymore. Oh well, if you haven't seen it, check it out.
20. The Simpsons (1989)
"What? This show isn't at #1? Or even at your top 10? How dare you?!" Yes, yes, grab your torch and pitch forks! It's not that I don't love this show, I do. But in recent years, it hasn't been as funny as they were in their earlier years, so that's why it's #20. I don't even need to tell what it's about. You already know. It's about the Simpsons family, Homer, Marge, Bart, Lisa, and Maggie, living their everyday lives in the town of Springfield, Oregon! That's right. Oregon. Not Missouri, Maine, or Ohio. It's in Oregon. Anyway, each of the characters from the town of Springfield have their own unique characteristics and personalities that makes it fun to watch. Although, the show has gone downhill, it's still the longest running animated show in history and it's always a treat to watch. Hell, even Patricia had mentioned a Simpsons episode in her Top 10 Favorite Pee-wee Herman moments of 2011.
It still does a good job making fun of a bunch of celebrities and pop culture. Overall, it's still a great show.
Oh yeah, check out The Simpsons Movie if you haven't yet! It's really funny!
That's it for now. Tune in next time as I do a double header as we tackle the remaining cartoons until we reach #1. Thanks for hanging out with us at Old School Lane. Take care.
P.S. Also, Old School Lane's Patricia has a Twitter account! Check it out for the latest, up to date posts or if you have any questions or comments, click on https://twitter.com/#!/patty_b_miranda.
Labels: old school lane, Top 100
Old School Lane celebrates the 20th anniversary of...
First Impressions: God of War: Ascension
Old School Lane presents Kevin's Top 100 Favorite ...
Old School Lane's summer tribute to Nickelodeon's ...
TV Review: The Legend of Korra Pilot Episode
First Impressions: The Casual Vacancy
Old School Lane celebrates the 33rd anniversary of...
Old School Lane's Summer Project is...

redpajama_set_name: RedPajamaCommonCrawl


Tell your friends, family and colleagues about us and receive gift vouchers as a reward if they book with us!
They just need to give us your name when they book, then we'll contact you to ask what voucher you'd like and it'll be on it's way to you in no time.
For each booking of 1-4 people you'll receive a voucher for £25, and for each booking of 5 people or more you'll receive a voucher for £40. There's no limit to the number of vouchers you can receive, so the more people you tell about us the better!
*As long as we can buy the voucher online. Gift voucher rewards are only available to clients who have booked a holiday with us, and only for a referred client's first booking with us. To receive a voucher we must be given your name before or at the time of booking.


2. Heidari, M., Bahrami, A., Ghiasvand, A. R., Emam, M. R., Shahna, F. G., & Soltanian, A. R. (2015). Graphene packed needle trap device as a novel field sampler for determination of perchloroethylene in the air of dry cleaning establishments. Talanta, 131, 142-148.
3.Abedi, K., Ghorbani-Shahna, F., Jaleh, B., Bahrami, A., Mousavi, S., Haddadi, R., & Gandomi, M. (2014). Decomposition of chlorinated volatile organic compounds (CVOCs) using NTP coupled with TiO< sub> 2/GAC, ZnO/GAC, and TiO< sub> 2–ZnO/GAC in a plasma-assisted catalysis system. Journal of Electrostatics.
4. Attari, S. G., Bahrami, A., Shahna, F. G., & Heidari, M. (2014). Solid-phase microextraction fiber development for sampling and analysis of volatile organohalogen compounds in air. Journal of Environmental Health Science and Engineering, 12(1), 123.
5.Abedi, K., Ghorbani-Shahna, F., Jaleh, B., Bahrami, A., & Yarahmadi, R. (2014). Enhanced performance of non-thermal plasma coupled with TiO2/GAC for decomposition of chlorinated organic compounds: influence of a hydrogen-rich substance. Journal of Environmental Health Science and Engineering,12(1), 119.
6.Zeverdegani, S. K., Bahrami, A., Shahna, F. G., Rismanchian, M., & Heidari, M. (2014). Determination of Toluene by Needle Trap Micro-Extraction with Carbon Nanotube Sol-Gel and Polydimethylsiloxane Sorbents. Analytical Letters, 47(13), 2165-2172.
7.Assari, M. J., Rezaee, A., Jafari, A. J., & Bahrami, A. (2014). Development of a novel setup for direct colorimetric visualization of elemental mercury vapor adsorption on colloidal gold nanoparticles. Iranian Journal of Health, Safety and Environment, 1(3), 111-116.
8. Zeverdegani, S. K., Bahrami, A., Rismanchian, M., & Shahna, F. G. (2014). Analysis of xylene in aqueous media using needle‐trap microextraction with a carbon nanotube sorbent. Journal of separation science.
9. Sadeghi, F., Bahrami, A., & Fatemi, F. (2014). The Effects of Prioritize Inspections on Occupational Health Hazards Control in Workplaces in Iran. Journal of Research in Health Sciences, 14(4).
10. Assari, M. J., Rezaee, A., Jonidi Jafari, A., & Bahrami, A. (2013). Optimization of a Novel Setup for an On-Line Study of Elemental Mercury Adsorption by Cold-Vapor Atomic Absorption Spectrometry. Journal of research in health sciences, 13(1), 37-42.
11. Heidari, M., Bahrami, A., Ghiasvand, A. R., Shahna, F. G., & Soltanian, A. R. (2013). A needle trap device packed with a sol–gel derived, multi-walled carbon nanotubes/silica composite for sampling and analysis of volatile organohalogen compounds in air. Analytica chimica acta, 785, 67-74.
12.Sakhvidi, M. J. Z., Bahrami, A. R., Ghiasvand, A., Mahjub, H., & Tuduri, L. (2013). SPME-based air sampling method for inhalation exposure assessment studies: case study on perchlorethylene exposure in dry cleaning. Environmental monitoring and assessment, 185(6), 4933-4941.
13.Moghadam, R. M., Bahrami, A., Ghorbani, F., Mahjub, H., & Malaki, D. (2013). Investigation of qualitative and quantitative of volatile organic compounds of ambient air in the Mahshahr Petrochemical Complex in 2009. Journal of Research in Health Sciences, 13(1), 69-74.
14.Aliabadi, M., Golmohammadi, R., Ohadi, A., Mansoorizadeh, Z., Khotanlou, H., & Sarrafzadeh, M. S. (2014). Development of an Empirical Acoustic Model for Predicting Reverberation Time in Typical Industrial Workrooms Using Artificial Neural Networks. Acta Acustica united with Acustica, 100(6), 1090-1097.
15.Mohammadfam, I., Bastani, S., Esaghi, M., Golmohamadi, R., & Saei, A. (2014). Evaluation of Coordination of Emergency Response Team through the Social Network Analysis Case Study: Oil and Gas Refinery. Safety and Health at Work.
16.Aliabadi, M., Golmohammadi, R., & Mansoorizadeh, M. (2014). Objective approach for analysis of noise source characteristics and acoustic conditions in noisy computerized embroidery workrooms. Environmental monitoring and assessment, 186(3), 1855-1864.
17.Golmohammadi, R., Giahi, O., Aliabadi, M., & Darvishi, E. (2014). An Intervention for Noise Control of Blast Furnace in Steel Industry. Journal of Research in Health Sciences, 14(4).
18.Aliabadi, M., Golmohammadi, R., Khotanlou, H., Mansoorizadeh, M., & Salarpour, A. (2013). Development of a Noise Prediction Model Based on Advanced Fuzzy Approaches in Typical Industrial Workrooms. Journal of research in health sciences, 14(2), 157-162.
19.Mohammadfam, I., Kalatpour, O., Golmohammadi, R., & Khotanlou, H. (2013). Developing a process equipment failure knowledge base using ontology approach for process equipment related incident investigations. Journal of Loss Prevention in the Process Industries, 26(6), 1300-1307.
20.Aliabadi, M., Golmohammadi, R., Mansoorizadeh, M., Khotanlou, H., & Ohadi, A. (2013). Development of an empirical model for noise prediction in typical industrial workrooms based on artificial neural networks. Noise & Vibration Worldwide, 44(10), 9-21.
21.Monazzam-Esmaeelpour, M. R., Hashemi, Z., Golmohammadi, R., & Zaredar, N. (2013). A Passive Noise Control Approach Utilizing Air Gaps with Fibrous Materials in the Textile Industry. Journal of research in health sciences, 14(1), 46-51.
22.Golmohammadi, R., Mohammadi, H., Bayat, H., Habibi Mohraz, M., & Soltanian, A. R. (2013). Noise Annoyance Due to Construction Worksites. Journal of research in health sciences, 13(2), 201-207.
23.Aliabadi, M., Golmohammadi, R., Mansoorizadeh, M., Khotanlou, H., & Ohadi Hamadani, A. (2013). An empirical technique for predicting noise exposure level in the typical embroidery workrooms using artificial neural networks. Applied Acoustics, 74(3), 364-374.
24.Mohammadfam, I., Kalatpour, O., Golmohammadi, R., & Khotanlou, H. (2013). Developing an ontological explosion knowledge base for business continuity planning purposes. Journal of business continuity & emergency planning, 7(1), 77-86.
26.Afshari, D., Motamedzade, M., Salehi, R., & Soltanian, A. R. (2014). Continuous assessment of back and upper arm postures by long-term inclinometry in carpet weavers. Applied ergonomics, 45(2), 278-284.
27. Afshari, D., Motamedzade, M., Salehi, R., & Soltanian, A. R. (2013). The impact of ergonomics intervention on trunk posture and cumulative compression load among carpet weavers. Work: A Journal of Prevention, Assessment and Rehabilitation.
28. Motamedzade, M., & Moghimbeigi, A. (2012). Musculoskeletal disorders among female carpet weavers in Iran. Ergonomics, 55(2), 229-236.
29.Mohammadi, H., Motamedzade, M., Faghih, M. A., Bayat, H., Mohraz, M. H., & Musavi, S. (2012). Manual material handling assessment among workers of Iranian casting workshops. International journal of occupational safety and ergonomics: JOSE, 19(4), 675-681.
30. Motamedzade, M., Faghih, M. A., Golmohammadi, R., Faradmal, J., & Mohammadi, H. (2012). Effects of physical and personal risk factors on sick leave due to musculoskeletal disorders. International journal of occupational safety and ergonomics: JOSE, 19(4), 513-521.
31. Motamedzade, M. (2012). Ergonomics intervention in an Iranian tire manufacturing industry. International journal of occupational safety and ergonomics: JOSE, 19(3), 475-484.
32. Mahmoudi, S., Ghasemi, F., Mohammadfam, I., & Soleimani, E. (2014). Framework for Continuous Assessment and Improvement of Occupational Health and Safety Issues in Construction Companies. Safety and health at work, 5(3), 125-130.
33.Mohammadfam, I., Nikoomaram, H., Lotfi, F. H., Mansouri, N., Rajabi, A. A., & Mohammadfam, F. (2014). Development of a Decision-Making Model for Selecting and Prioritizing Accident Analysis Techniques in Process Industries. Journal of Scientific & Industrial Research, 73(8), 517-520.
34.Aliabadi, M. M., Naderi, G., Shahtaheri, S. J., Forushani, A. R., Mohammadfam, I., & Jahangiri, M. (2014). Mechanical and barrier properties of XNBR-clay nanocomposite: a promising material for protective gloves. Iranian Polymer Journal, 23(4), 289-296.
35. Aliabadi, M. M., Naderi, G., Shahtaheri, S. J., Forushani, A. R., Mohammadfam, I., & Jahangiri, M. (2014). Transport properties of carboxylated nitrile butadiene rubber (XNBR)-nanoclay composites; a promising material for protective gloves in occupational exposures. Journal of Environmental Health Science and Engineering, 12(1), 51.
36.Shirali, G. A., Mohammadfam, I., & Ebrahimipour, V. (2013). A new method for quantitative assessment of resilience engineering by PCA and NT approach: A case study in a process industry. Reliability Engineering & System Safety, 119, 88-94.
37. Mohammadfam, I., Saraji, G. N., Kianfar, A., & Mahmoudi, S. (2013). Developing the health, safety and environment excellence instrument. Iranian journal of environmental health science & engineering, 10(1), 1-5.
38.Mahmoudi, S., Mohammadfam, I., & Mortaza, H. R. Evaluation of Accident Proneness among Iranian Manufacturing Industries: Results and Perspectives. Journal of Engineering Research and Applications (IJERA) ISSN, 2248, 9622.
39.Azadeh, A., Rouhollah, F., Davoudpour, F., & Mohammadfam, I. (2013). Fuzzy modelling and simulation of an emergency department for improvement of nursing schedules with noisy and uncertain inputs. International Journal of Services and Operations Management, 15(1), 58-77.
40. Samarghandi, M. R., Babaee, S. A., Ahmadian, M., Asgari, G., Ghorbani Shahna, F., & Poormohammadi, A. (2014). Performance Catalytic Ozonation over the Carbosieve in the Removal of Toluene from Waste Air Stream. Journal of Research in Health Sciences, 14(2).
41. Hoseinzadeh, E., Samarghandi, M. R., Ghorbani Shahna, F., & Chavoshi, E. (2013). Isoconcentration mapping of particulate matter in Hamedan intercity bus stations. Water and Environment Journal, 27(3), 418-424.
42. Ghorbani Shahna, F., Golmohamadi, R., & Shahidi, R. (2013). Study on the Performance of Wet Electroscrubber in Purifying Airborne Particles. Journal of research in health sciences, 13(2), 135-142.
43. Amjadsoroudi, H., Bahrami, A., & Fardmal, J. (2013). Assessing Electrocyclone Performance in Collecting Smaller than 1 µm Silica Airborne Particles. Iranian Journal of Health and Environment, 6(1), 45-54.
47. Farhadian, M., Moghimbeigi, A., & Aliabadi, M. (2013). Mapping the Obesity in Iran by Bayesian Spatial Model. Iranian journal of public health, 42(6), 581.
48.Zaeimdar, M., Nasiri, P., Taghdisi, M., Abbaspour, M., Arjmandi, R., & Kalatipor, O. (2013). Determining proper strategies for health, safety, security and environmental (HSSE) management system. Work: A Journal of Prevention, Assessment and Rehabilitation, 45(3), 399-406.
49. Kalatpoor, O., Goshtasp, K., & Khavaji, S. (2011). Health, safety and environmental risk of a gas pipeline in an oil exploring area of Gachsaran. Industrial health, 49(2), 209-214.
50.Zare Sakhvidi, M. J., Mirzaei Aliabadi, M., Sakhvidi, F. Z., Halvani, G., Morowatisharifabad, M. A., Tezerjani, H. D., & Firoozichahak, A. (2014). Occupational Cancer Risk Perception in Iranian Workers. Archives of environmental & occupational health, 69(3), 167-171.
51.Golbabaei, F., Zakerian, S. A., DEHAGHI, B. F., GHAVAMABADI, L. I., Gharagozlou, F., ALIABADI, M. M., & Hematjo, R. (2014). Heat Stress and Physical Capacity: A Case Study of Semi-Profes-sional Footballers. Iranian Journal of Public Health, 43(3), 355-361.


text:
Stade Pierre de Coubertin – impianto sportivo di Cannes, in Francia
 Stade Pierre de Coubertin – impianto sportivo di Losanna, in Svizzera
 Stade Pierre de Coubertin – impianto sportivo di Parigi, in Francia

redpajama_set_name: RedPajamaWikipedia


Grilled cheese is my ultimate comfort food. They are also a good lunch that the carnivore and I can enjoy together on the weekend. I mean what's not to love about crunchy buttered bread and melted gooey cheese. And while my carnivore with his limited palate never wants anything more than the basics, I occasionally like to experiment with my sandwich.
Since there are so many showy apples at the stores these days I decided to switch things up a bit by adding a few slices of a pretty pink lady. I also used a nutty oat bread and colby jack cheddar. For a final flair I buttered the outside of my bread, but brushed the inside with nostril burning horseradish mustard. The result was amazing. Sweet and spicy all at the same time. (I think a stronger cheddar would have been even better to balance with the juicy warmed fruit and the chewy bread.) And it was as easy as ABC - Apple, Butter, Cheddar. Even baby omnivore gets that!
What things do you do to a simple grilled cheese to make it more special? I'd love some new suggestions!
An excellent food to dedicate a blog to!
I love adding meat to mine (turkey or tuna melts). I feed a carnivore at my house too, so you always have to add meat to everything.
I sometimes add tomatoes too.


3 Simple and Effective Exercises to Alleviate Neck Pain!
While the neck may be a relatively small region of muscles in comparison to the rest of the body, stress and tension often tend to build up in this area. Sitting down all day, staring at our phones, tablets and computers, causes us to slump into poor postures at our desks, contributing to tightness in the neck. Fortunately though, a little bit of yoga can go a long way. The three stretches below are simple and effective, creating space in the neck, shoulders and back, helping to soothe your state of mind too.
Hold each pose for a minimum of 5 to 10 deep breaths, focusing your attention on how you feel. The stretches below can be done while sitting or standing.
Here's How: Stretch your left arm beside your left hip, extending it away from your body at a 45-degree angle.
Take your right hand to the left side of your head. Exhale, take your right ear as close as you can get it to your right shoulder, and hold for 5 deep breaths. Then repeat on the other side.
Benefits: This side stretch will help lengthen and soothe the side of your neck and shoulders.
Here's How: Interlace your fingers and place them behind your head. Fold your elbows forward, hug the biceps toward the midline of your body.
Exhale, tuck your chin toward your chest. Hold for 5 to 10 deep breaths.
Benefits: Practice this stretch to lengthen and soothe the back of your neck.
Here's How: Take your left arm behind you, resting it toward the right side of your lower back.
Lower your chin slightly (about halfway) and place your right hand on the left side of your head.
Exhale, move your head until your right ear is as close as you can get it to your right shoulder. Hold for 5 breaths and repeat on the other side.
Benefits: This stretch works on lengthening and soothing both sides of your neck. It also stretches the upper shoulders, chest and the mid-upper back.


Enjoy all natural products with your breads and pastries, desserts or healthy protein packed breakfast or snack. These products are high quality, non-GMO spreads, with no artificial additives. Order for delivery within Metro Manila, Philippines.


Anvendelse af Jobkort er en af de metoder, der præsenteres i bogen "Karrierevejledning -Temaer og metoder". Kortene kan bruges på mange forskellige måder, fx til at udforske vejledtes forestillinger om forskellige typer job og de mønstre, der kan være i hendes valg og fravalg. Her kan bestilles ekstra sæt Jobkort, fx hvis I er flere vejledere i et center, der vil arbejde med metoden eller hvis denne skal præsenteres i en undervisningssammenhæng.
A handsome gift package, these fully illustrated playing cards and wooden keepsake box bring the beauty of the great outdoors to your fingertips!
As you bring the sky pyramid down to the ground for the first time in 6,000 years, you must venture into four elemental crypts and defeat the mummy lord Hakotep's generals. Should you live through this experience, the Sky Pharaoh himself will stand against you.
You and your allies are called to defend the city of Wati after a massive flying pyramid appears in the skies above it! To save the citizens of Osirion, you must venture deep into the monument vault in the far reaches of the Slave Trenches of Hakotep to discover a way to bring the Sky Pharoah's tomb crashing down to earth.
Travel to Tephu's vast and ancient library to uncover secrets about an ancient pharaoh and the cult attempting to resurrect him. The truth lies beneath the uncharted sands, in the pharaoh's hidden tomb. This is a 110-card expansion adds 5 new scenarios to the Pathfinder Adventure Card Game, and also includes new locations, villains, and monsters.
You've barely started exploring the tombs of Wati when the dead began to rise throughout the city. You'll need to calm the panic in the streets before you can cross swords with the cultists behind the undead uprising. This is a 110-card expansion that adds 5 new scenarios to the Pathfinder Adventure Card Game.
A 110-card expansion deck that includes four new Pathfinder Adventure Card Game characters - Ahmotep the magus, Channa Ti the druid, Drelm the cleric, and Mavaro the occultist - along with all the additional cards you need to expand your Mummy's Mask adventure to accommodate 5 or 6 players.
The ancient lands of Osirion are blanketed by the sands of time, and eldritch secrets and vast riches lie just beneath the sun-blistered surface. This complete cooperative strategy game pits 1 to 4 heroes against the monsters, curses, and traps of the Mummy's Mask Adventure Path.
Beyond Space and Time! Bonded to a mysterious creature called an eidolon, the summoner's true power lies in what he and his eidolon can accomplish together. This 109-card accessory holds a bevy of new spells and other goodies to take your summoner through an entire Adventure Path.
The Gods' Favored Weapon! Warpriests are dedicated to slaying their god's foes wherever they stand. This title for the Pathfinder Adventure Card Game allows players to bring these holy warriors to any Base Set, including the mysterious Mummy's Mask campaign.


text:
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
#include "common.h"

#include <windows.h>

#include "CommonTypes.h"
#include "CommonMacros.h"
#include "daccess.h"
#include "PalRedhawkCommon.h"
#include "regdisplay.h"
#include "ICodeManager.h"
#include "CoffNativeCodeManager.h"
#include "varint.h"
#include "holder.h"

#include "CommonMacros.inl"

#define GCINFODECODER_NO_EE
#include "coreclr/gcinfodecoder.cpp"

#define UBF_FUNC_KIND_MASK      0x03
#define UBF_FUNC_KIND_ROOT      0x00
#define UBF_FUNC_KIND_HANDLER   0x01
#define UBF_FUNC_KIND_FILTER    0x02

#define UBF_FUNC_HAS_EHINFO             0x04
#define UBF_FUNC_REVERSE_PINVOKE        0x08
#define UBF_FUNC_HAS_ASSOCIATED_DATA    0x10

#ifdef _TARGET_X86_
//
// x86 ABI does not define RUNTIME_FUNCTION. Define our own to allow unification between x86 and other platforms.
//
typedef struct _RUNTIME_FUNCTION {
    DWORD BeginAddress;
    DWORD EndAddress;
    DWORD UnwindData;
} RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;

typedef struct _KNONVOLATILE_CONTEXT_POINTERS {

    // The ordering of these fields should be aligned with that
    // of corresponding fields in CONTEXT
    //
    // (See REGDISPLAY in Runtime/regdisp.h for details)
    PDWORD Edi;
    PDWORD Esi;
    PDWORD Ebx;
    PDWORD Edx;
    PDWORD Ecx;
    PDWORD Eax;

    PDWORD Ebp;

} KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;

typedef struct _UNWIND_INFO {
    ULONG FunctionLength;
} UNWIND_INFO, *PUNWIND_INFO;

#elif defined(_TARGET_AMD64_)

#define UNW_FLAG_NHANDLER 0x0
#define UNW_FLAG_EHANDLER 0x1
#define UNW_FLAG_UHANDLER 0x2
#define UNW_FLAG_CHAININFO 0x4

//
// The following structures are defined in Windows x64 unwind info specification
// http://www.bing.com/search?q=msdn+Exception+Handling+x64
//
typedef union _UNWIND_CODE {
    struct {
        uint8_t CodeOffset;
        uint8_t UnwindOp : 4;
        uint8_t OpInfo : 4;
    };

    uint16_t FrameOffset;
} UNWIND_CODE, *PUNWIND_CODE;

typedef struct _UNWIND_INFO {
    uint8_t Version : 3;
    uint8_t Flags : 5;
    uint8_t SizeOfProlog;
    uint8_t CountOfUnwindCodes;
    uint8_t FrameRegister : 4;
    uint8_t FrameOffset : 4;
    UNWIND_CODE UnwindCode[1];
} UNWIND_INFO, *PUNWIND_INFO;

#endif // _TARGET_X86_

typedef DPTR(struct _UNWIND_INFO)      PTR_UNWIND_INFO;
typedef DPTR(union _UNWIND_CODE)       PTR_UNWIND_CODE;

static PTR_VOID GetUnwindDataBlob(TADDR moduleBase, PTR_RUNTIME_FUNCTION pRuntimeFunction, /* out */ size_t * pSize)
{
#if defined(_TARGET_AMD64_)
    PTR_UNWIND_INFO pUnwindInfo(dac_cast<PTR_UNWIND_INFO>(moduleBase + pRuntimeFunction->UnwindInfoAddress));

    size_t size = offsetof(UNWIND_INFO, UnwindCode) + sizeof(UNWIND_CODE) * pUnwindInfo->CountOfUnwindCodes;

    // Chained unwind info is not supported at this time
    ASSERT((pUnwindInfo->Flags & UNW_FLAG_CHAININFO) == 0);

    if (pUnwindInfo->Flags & (UNW_FLAG_EHANDLER | UNW_FLAG_UHANDLER))
    {
        // Personality routine
        size = ALIGN_UP(size, sizeof(DWORD)) + sizeof(DWORD);
    }

    *pSize = size;

    return pUnwindInfo;

#elif defined(_TARGET_X86_)

    PTR_UNWIND_INFO pUnwindInfo(dac_cast<PTR_UNWIND_INFO>(moduleBase + pRuntimeFunction->UnwindInfoAddress));

    *pSize = sizeof(UNWIND_INFO);

    return pUnwindInfo;

#elif defined(_TARGET_ARM_)

    // if this function uses packed unwind data then at least one of the two least significant bits
    // will be non-zero.  if this is the case then there will be no xdata record to enumerate.
    ASSERT((pRuntimeFunction->UnwindData & 0x3) == 0);

    // compute the size of the unwind info
    PTR_TADDR xdata = dac_cast<PTR_TADDR>(pRuntimeFunction->UnwindData + moduleBase);

    ULONG epilogScopes = 0;
    ULONG unwindWords = 0;
    ULONG size = 0;

    if ((xdata[0] >> 23) != 0)
    {
        size = 4;
        epilogScopes = (xdata[0] >> 23) & 0x1f;
        unwindWords = (xdata[0] >> 28) & 0x0f;
    }
    else
    {
        size = 8;
        epilogScopes = xdata[1] & 0xffff;
        unwindWords = (xdata[1] >> 16) & 0xff;
    }

    if (!(xdata[0] & (1 << 21)))
        size += 4 * epilogScopes;

    size += 4 * unwindWords;

    if ((xdata[0] & (1 << 20)) != 0)
    {
        // Personality routine
        size += 4;
    }

    *pSize = size;
    return xdata;
#else
    PORTABILITY_ASSERT("GetUnwindDataBlob");
    *pSize = 0;
    return NULL;
#endif
}

CoffNativeCodeManager::CoffNativeCodeManager(TADDR moduleBase,
                                             PTR_RUNTIME_FUNCTION pRuntimeFunctionTable, UInt32 nRuntimeFunctionTable,
                                             PTR_PTR_VOID pClasslibFunctions, UInt32 nClasslibFunctions)
    : m_moduleBase(moduleBase),
      m_pRuntimeFunctionTable(pRuntimeFunctionTable), m_nRuntimeFunctionTable(nRuntimeFunctionTable),
      m_pClasslibFunctions(pClasslibFunctions), m_nClasslibFunctions(nClasslibFunctions)
{
}

CoffNativeCodeManager::~CoffNativeCodeManager()
{
}

static int LookupUnwindInfoForMethod(UInt32 relativePc,
                                     PTR_RUNTIME_FUNCTION pRuntimeFunctionTable,
                                     int low,
                                     int high)
{
#ifdef _TARGET_ARM_
    relativePc |= THUMB_CODE;
#endif

    // Entries are sorted and terminated by sentinel value (DWORD)-1

    // Binary search the RUNTIME_FUNCTION table
    // Use linear search once we get down to a small number of elements
    // to avoid Binary search overhead.
    while (high - low > 10)
    {
       int middle = low + (high - low) / 2;

       PTR_RUNTIME_FUNCTION pFunctionEntry = pRuntimeFunctionTable + middle;
       if (relativePc < pFunctionEntry->BeginAddress)
       {
           high = middle - 1;
       }
       else
       {
           low = middle;
       }
    }

    for (int i = low; i <= high; ++i)
    {
        // This is safe because of entries are terminated by sentinel value (DWORD)-1
        PTR_RUNTIME_FUNCTION pNextFunctionEntry = pRuntimeFunctionTable + (i + 1);

        if (relativePc < pNextFunctionEntry->BeginAddress)
        {
            PTR_RUNTIME_FUNCTION pFunctionEntry = pRuntimeFunctionTable + i;
            if (relativePc >= pFunctionEntry->BeginAddress)
            {
                return i;
            }
            break;
        }
    }

    return -1;
}

struct CoffNativeMethodInfo
{
    PTR_RUNTIME_FUNCTION mainRuntimeFunction;
    PTR_RUNTIME_FUNCTION runtimeFunction;
    bool executionAborted;
};

// Ensure that CoffNativeMethodInfo fits into the space reserved by MethodInfo
static_assert(sizeof(CoffNativeMethodInfo) <= sizeof(MethodInfo), "CoffNativeMethodInfo too big");

bool CoffNativeCodeManager::FindMethodInfo(PTR_VOID        ControlPC,
                                           MethodInfo *    pMethodInfoOut)
{
    CoffNativeMethodInfo * pMethodInfo = (CoffNativeMethodInfo *)pMethodInfoOut;

    TADDR relativePC = dac_cast<TADDR>(ControlPC) - m_moduleBase;

    int MethodIndex = LookupUnwindInfoForMethod((UInt32)relativePC, m_pRuntimeFunctionTable,
        0, m_nRuntimeFunctionTable - 1);
    if (MethodIndex < 0)
        return false;

    PTR_RUNTIME_FUNCTION pRuntimeFunction = m_pRuntimeFunctionTable + MethodIndex;

    pMethodInfo->runtimeFunction = pRuntimeFunction;

    // The runtime function could correspond to a funclet.  We need to get to the
    // runtime function of the main method.
    for (;;)
    {
        size_t unwindDataBlobSize;
        PTR_VOID pUnwindDataBlob = GetUnwindDataBlob(m_moduleBase, pRuntimeFunction, &unwindDataBlobSize);

        uint8_t unwindBlockFlags = *(dac_cast<DPTR(uint8_t)>(pUnwindDataBlob) + unwindDataBlobSize);
        if ((unwindBlockFlags & UBF_FUNC_KIND_MASK) == UBF_FUNC_KIND_ROOT)
            break;

        pRuntimeFunction--;
    }

    pMethodInfo->mainRuntimeFunction = pRuntimeFunction;

    pMethodInfo->executionAborted = false;

    return true;
}

bool CoffNativeCodeManager::IsFunclet(MethodInfo * pMethInfo)
{
    CoffNativeMethodInfo * pMethodInfo = (CoffNativeMethodInfo *)pMethInfo;

    size_t unwindDataBlobSize;
    PTR_VOID pUnwindDataBlob = GetUnwindDataBlob(m_moduleBase, pMethodInfo->runtimeFunction, &unwindDataBlobSize);

    uint8_t unwindBlockFlags = *(dac_cast<DPTR(uint8_t)>(pUnwindDataBlob) + unwindDataBlobSize);

    // A funclet will have an entry in funclet to main method map
    return (unwindBlockFlags & UBF_FUNC_KIND_MASK) != UBF_FUNC_KIND_ROOT;
}

bool CoffNativeCodeManager::IsFilter(MethodInfo * pMethInfo)
{
    CoffNativeMethodInfo * pMethodInfo = (CoffNativeMethodInfo *)pMethInfo;

    size_t unwindDataBlobSize;
    PTR_VOID pUnwindDataBlob = GetUnwindDataBlob(m_moduleBase, pMethodInfo->runtimeFunction, &unwindDataBlobSize);

    uint8_t unwindBlockFlags = *(dac_cast<DPTR(uint8_t)>(pUnwindDataBlob) + unwindDataBlobSize);

    return (unwindBlockFlags & UBF_FUNC_KIND_MASK) == UBF_FUNC_KIND_FILTER;
}

PTR_VOID CoffNativeCodeManager::GetFramePointer(MethodInfo *   pMethInfo,
                                         REGDISPLAY *   pRegisterSet)
{
    CoffNativeMethodInfo * pMethodInfo = (CoffNativeMethodInfo *)pMethInfo;

    size_t unwindDataBlobSize;
    PTR_VOID pUnwindDataBlob = GetUnwindDataBlob(m_moduleBase, pMethodInfo->runtimeFunction, &unwindDataBlobSize);

    uint8_t unwindBlockFlags = *(dac_cast<DPTR(uint8_t)>(pUnwindDataBlob) + unwindDataBlobSize);

    // Return frame pointer for methods with EH and funclets
    if ((unwindBlockFlags & UBF_FUNC_HAS_EHINFO) != 0 || (unwindBlockFlags & UBF_FUNC_KIND_MASK) != UBF_FUNC_KIND_ROOT)
    {
        return (PTR_VOID)pRegisterSet->GetFP();
    }

    return NULL;
}

void CoffNativeCodeManager::EnumGcRefs(MethodInfo *    pMethodInfo,
                                       PTR_VOID        safePointAddress,
                                       REGDISPLAY *    pRegisterSet,
                                       GCEnumContext * hCallback)
{
    CoffNativeMethodInfo * pNativeMethodInfo = (CoffNativeMethodInfo *)pMethodInfo;

    size_t unwindDataBlobSize;
    PTR_VOID pUnwindDataBlob = GetUnwindDataBlob(m_moduleBase, pNativeMethodInfo->mainRuntimeFunction, &unwindDataBlobSize);

    PTR_UInt8 p = dac_cast<PTR_UInt8>(pUnwindDataBlob) + unwindDataBlobSize;

    uint8_t unwindBlockFlags = *p++;

    if ((unwindBlockFlags & UBF_FUNC_HAS_ASSOCIATED_DATA) != 0)
        p += sizeof(int32_t);

    if ((unwindBlockFlags & UBF_FUNC_HAS_EHINFO) != 0)
        p += sizeof(int32_t);

    TADDR methodStartAddress = m_moduleBase + pNativeMethodInfo->mainRuntimeFunction->BeginAddress;
    UInt32 codeOffset = (UInt32)(dac_cast<TADDR>(safePointAddress) - methodStartAddress);

    GcInfoDecoder decoder(
        GCInfoToken(p),
        GcInfoDecoderFlags(DECODE_GC_LIFETIMES | DECODE_SECURITY_OBJECT | DECODE_VARARG),
        codeOffset - 1 // TODO: Is this adjustment correct?
        );

    ICodeManagerFlags flags = (ICodeManagerFlags)0;
    if (pNativeMethodInfo->executionAborted)
        flags = ICodeManagerFlags::ExecutionAborted;
    if (IsFilter(pMethodInfo))
        flags = (ICodeManagerFlags)(flags | ICodeManagerFlags::NoReportUntracked);

    if (!decoder.EnumerateLiveSlots(
        pRegisterSet,
        false /* reportScratchSlots */,
        flags,
        hCallback->pCallback,
        hCallback
        ))
    {
        assert(false);
    }
}

UIntNative CoffNativeCodeManager::GetConservativeUpperBoundForOutgoingArgs(MethodInfo * pMethodInfo, REGDISPLAY * pRegisterSet)
{
    // @TODO: CORERT: GetConservativeUpperBoundForOutgoingArgs
    assert(false);
    return false;
}

bool CoffNativeCodeManager::UnwindStackFrame(MethodInfo *    pMethodInfo,
                                      REGDISPLAY *    pRegisterSet,                 // in/out
                                      PTR_VOID *      ppPreviousTransitionFrame)    // out
{
    CoffNativeMethodInfo * pNativeMethodInfo = (CoffNativeMethodInfo *)pMethodInfo;

    size_t unwindDataBlobSize;
    PTR_VOID pUnwindDataBlob = GetUnwindDataBlob(m_moduleBase, pNativeMethodInfo->runtimeFunction, &unwindDataBlobSize);

    PTR_UInt8 p = dac_cast<PTR_UInt8>(pUnwindDataBlob) + unwindDataBlobSize;

    uint8_t unwindBlockFlags = *p++;

    if ((unwindBlockFlags & UBF_FUNC_HAS_ASSOCIATED_DATA) != 0)
        p += sizeof(int32_t);

    if ((unwindBlockFlags & UBF_FUNC_REVERSE_PINVOKE) != 0)
    {
        // Reverse PInvoke transition should on the main function body only
        assert(pNativeMethodInfo->mainRuntimeFunction == pNativeMethodInfo->runtimeFunction);

        if ((unwindBlockFlags & UBF_FUNC_HAS_EHINFO) != 0)
            p += sizeof(int32_t);

        GcInfoDecoder decoder(GCInfoToken(p), DECODE_REVERSE_PINVOKE_VAR);
        INT32 slot = decoder.GetReversePInvokeFrameStackSlot();
        assert(slot != NO_REVERSE_PINVOKE_FRAME);

        TADDR basePointer = NULL;
        UINT32 stackBasedRegister = decoder.GetStackBaseRegister();
        if (stackBasedRegister == NO_STACK_BASE_REGISTER)
        {
            basePointer = dac_cast<TADDR>(pRegisterSet->GetSP());
        }
        else
        {
            basePointer = dac_cast<TADDR>(pRegisterSet->GetFP());
        }
        *ppPreviousTransitionFrame = *(void**)(basePointer + slot);
        return true;
    }

    *ppPreviousTransitionFrame = NULL;

    CONTEXT context;
    KNONVOLATILE_CONTEXT_POINTERS contextPointers;

#ifdef _DEBUG
    memset(&context, 0xDD, sizeof(context));
    memset(&contextPointers, 0xDD, sizeof(contextPointers));
#endif

#ifdef _TARGET_X86_
    #define FOR_EACH_NONVOLATILE_REGISTER(F) \
        F(E, ax) F(E, cx) F(E, dx) F(E, bx) F(E, bp) F(E, si) F(E, di)
    #define WORDPTR PDWORD
#else
    #define FOR_EACH_NONVOLATILE_REGISTER(F) \
        F(R, ax) F(R, cx) F(R, dx) F(R, bx) F(R, bp) F(R, si) F(R, di) \
        F(R, 8) F(R, 9) F(R, 10) F(R, 11) F(R, 12) F(R, 13) F(R, 14) F(R, 15)
    #define WORDPTR PDWORD64
#endif

#define REGDISPLAY_TO_CONTEXT(prefix, reg) \
    contextPointers.prefix####reg = (WORDPTR) pRegisterSet->pR##reg; \
    if (pRegisterSet->pR##reg != NULL) context.prefix##reg = *(pRegisterSet->pR##reg);

#define CONTEXT_TO_REGDISPLAY(prefix, reg) \
    pRegisterSet->pR##reg = (PTR_UIntNative) contextPointers.prefix####reg;

    FOR_EACH_NONVOLATILE_REGISTER(REGDISPLAY_TO_CONTEXT);

#ifdef _TARGET_X86_
    PORTABILITY_ASSERT("CoffNativeCodeManager::UnwindStackFrame");
#else // _TARGET_X86_
    memcpy(&context.Xmm6, pRegisterSet->Xmm, sizeof(pRegisterSet->Xmm));

    context.Rsp = pRegisterSet->SP;
    context.Rip = pRegisterSet->IP;

    SIZE_T  EstablisherFrame;
    PVOID   HandlerData;

    RtlVirtualUnwind(NULL,
                    dac_cast<TADDR>(m_moduleBase),
                    pRegisterSet->IP,
                    (PRUNTIME_FUNCTION)pNativeMethodInfo->runtimeFunction,
                    &context,
                    &HandlerData,
                    &EstablisherFrame,
                    &contextPointers);

    pRegisterSet->SP = context.Rsp;
    pRegisterSet->IP = context.Rip;

    pRegisterSet->pIP = PTR_PCODE(pRegisterSet->SP - sizeof(TADDR));

    memcpy(pRegisterSet->Xmm, &context.Xmm6, sizeof(pRegisterSet->Xmm));
#endif // _TARGET_X86_

    FOR_EACH_NONVOLATILE_REGISTER(CONTEXT_TO_REGDISPLAY);

#undef FOR_EACH_NONVOLATILE_REGISTER
#undef REGDISPLAY_TO_CONTEXT
#undef CONTEXT_TO_REGDISPLAY

    return true;
}

// Convert the return kind that was encoded by RyuJIT to the
// value that CoreRT runtime can understand and support.
GCRefKind GetGcRefKind(ReturnKind returnKind)
{
    static_assert((GCRefKind)ReturnKind::RT_Scalar == GCRK_Scalar, "ReturnKind::RT_Scalar does not match GCRK_Scalar");
    static_assert((GCRefKind)ReturnKind::RT_Object == GCRK_Object, "ReturnKind::RT_Object does not match GCRK_Object");
    static_assert((GCRefKind)ReturnKind::RT_ByRef  == GCRK_Byref, "ReturnKind::RT_ByRef does not match GCRK_Byref");
    ASSERT((returnKind == RT_Scalar) || (returnKind == GCRK_Object) || (returnKind == GCRK_Byref));

    return (GCRefKind)returnKind;
}

bool CoffNativeCodeManager::GetReturnAddressHijackInfo(MethodInfo *    pMethodInfo,
                                                REGDISPLAY *    pRegisterSet,       // in
                                                PTR_PTR_VOID *  ppvRetAddrLocation, // out
                                                GCRefKind *     pRetValueKind)      // out
{
#if defined(_TARGET_AMD64_)
    CoffNativeMethodInfo * pNativeMethodInfo = (CoffNativeMethodInfo *)pMethodInfo;

    size_t unwindDataBlobSize;
    PTR_VOID pUnwindDataBlob = GetUnwindDataBlob(m_moduleBase, pNativeMethodInfo->runtimeFunction, &unwindDataBlobSize);

    PTR_UInt8 p = dac_cast<PTR_UInt8>(pUnwindDataBlob) + unwindDataBlobSize;

    uint8_t unwindBlockFlags = *p++;

    if ((unwindBlockFlags & UBF_FUNC_HAS_ASSOCIATED_DATA) != 0)
        p += sizeof(int32_t);

    // Check whether this is a funclet
    if ((unwindBlockFlags & UBF_FUNC_KIND_MASK) != UBF_FUNC_KIND_ROOT)
        return false;

    // Skip hijacking a reverse-pinvoke method - it doesn't get us much because we already synchronize
    // with the GC on the way back to native code.
    if ((unwindBlockFlags & UBF_FUNC_REVERSE_PINVOKE) != 0)
        return false;

    if ((unwindBlockFlags & UBF_FUNC_HAS_EHINFO) != 0)
        p += sizeof(int32_t);

    // Decode the GC info for the current method to detemine its return type
    GcInfoDecoder decoder(
        GCInfoToken(p),
        GcInfoDecoderFlags(DECODE_RETURN_KIND),
        0
        );

    GCRefKind gcRefKind = GetGcRefKind(decoder.GetReturnKind());

    // Unwind the current method context to the caller's context to get its stack pointer
    // and obtain the location of the return address on the stack
    SIZE_T  EstablisherFrame;
    PVOID   HandlerData;
    CONTEXT context;
    context.Rsp = pRegisterSet->GetSP();
    context.Rbp = pRegisterSet->GetFP();
    context.Rip = pRegisterSet->GetIP();

    RtlVirtualUnwind(NULL,
                    dac_cast<TADDR>(m_moduleBase),
                    pRegisterSet->IP,
                    (PRUNTIME_FUNCTION)pNativeMethodInfo->runtimeFunction,
                    &context,
                    &HandlerData,
                    &EstablisherFrame,
                    NULL);

    *ppvRetAddrLocation = (PTR_PTR_VOID)(context.Rsp - sizeof (PVOID));
    *pRetValueKind = gcRefKind;
    return true;
#else
    return false;
#endif // defined(_TARGET_AMD64_)
}

void CoffNativeCodeManager::UnsynchronizedHijackMethodLoops(MethodInfo * pMethodInfo)
{
    // @TODO: CORERT: UnsynchronizedHijackMethodLoops
}

PTR_VOID CoffNativeCodeManager::RemapHardwareFaultToGCSafePoint(MethodInfo * pMethodInfo, PTR_VOID controlPC)
{
    // GCInfo decoder needs to know whether execution of the method is aborted
    // while querying for gc-info.  But ICodeManager::EnumGCRef() doesn't receive any
    // flags from mrt. Call to this method is used as a cue to mark the method info
    // as execution aborted. Note - if pMethodInfo was cached, this scheme would not work.
    //
    // If the method has EH, then JIT will make sure the method is fully interruptible
    // and we will have GC-info available at the faulting address as well.

    CoffNativeMethodInfo * pNativeMethodInfo = (CoffNativeMethodInfo *)pMethodInfo;
    pNativeMethodInfo->executionAborted = true;

    return controlPC;
}

struct CoffEHEnumState
{
    PTR_UInt8 pMethodStartAddress;
    PTR_UInt8 pEHInfo;
    UInt32 uClause;
    UInt32 nClauses;
};

// Ensure that CoffEHEnumState fits into the space reserved by EHEnumState
static_assert(sizeof(CoffEHEnumState) <= sizeof(EHEnumState), "CoffEHEnumState too big");

bool CoffNativeCodeManager::EHEnumInit(MethodInfo * pMethodInfo, PTR_VOID * pMethodStartAddress, EHEnumState * pEHEnumStateOut)
{
    assert(pMethodInfo != NULL);
    assert(pMethodStartAddress != NULL);
    assert(pEHEnumStateOut != NULL);

    CoffNativeMethodInfo * pNativeMethodInfo = (CoffNativeMethodInfo *)pMethodInfo;
    CoffEHEnumState * pEnumState = (CoffEHEnumState *)pEHEnumStateOut;

    size_t unwindDataBlobSize;
    PTR_VOID pUnwindDataBlob = GetUnwindDataBlob(m_moduleBase, pNativeMethodInfo->mainRuntimeFunction, &unwindDataBlobSize);

    PTR_UInt8 p = dac_cast<PTR_UInt8>(pUnwindDataBlob) + unwindDataBlobSize;

    uint8_t unwindBlockFlags = *p++;

    if ((unwindBlockFlags & UBF_FUNC_HAS_ASSOCIATED_DATA) != 0)
        p += sizeof(int32_t);

    // return if there is no EH info associated with this method
    if ((unwindBlockFlags & UBF_FUNC_HAS_EHINFO) == 0)
    {
        return false;
    }

    *pMethodStartAddress = dac_cast<PTR_VOID>(m_moduleBase + pNativeMethodInfo->mainRuntimeFunction->BeginAddress);

    pEnumState->pMethodStartAddress = dac_cast<PTR_UInt8>(*pMethodStartAddress);
    pEnumState->pEHInfo = dac_cast<PTR_UInt8>(m_moduleBase + *dac_cast<PTR_Int32>(p));
    pEnumState->uClause = 0;
    pEnumState->nClauses = VarInt::ReadUnsigned(pEnumState->pEHInfo);

    return true;
}

bool CoffNativeCodeManager::EHEnumNext(EHEnumState * pEHEnumState, EHClause * pEHClauseOut)
{
    assert(pEHEnumState != NULL);
    assert(pEHClauseOut != NULL);

    CoffEHEnumState * pEnumState = (CoffEHEnumState *)pEHEnumState;
    if (pEnumState->uClause >= pEnumState->nClauses)
        return false;
    pEnumState->uClause++;

    pEHClauseOut->m_tryStartOffset = VarInt::ReadUnsigned(pEnumState->pEHInfo);

    UInt32 tryEndDeltaAndClauseKind = VarInt::ReadUnsigned(pEnumState->pEHInfo);
    pEHClauseOut->m_clauseKind = (EHClauseKind)(tryEndDeltaAndClauseKind & 0x3);
    pEHClauseOut->m_tryEndOffset = pEHClauseOut->m_tryStartOffset + (tryEndDeltaAndClauseKind >> 2);

    // For each clause, we have up to 4 integers:
    //      1)  try start offset
    //      2)  (try length << 2) | clauseKind
    //      3)  if (typed || fault || filter)    { handler start offset }
    //      4a) if (typed)                       { type RVA }
    //      4b) if (filter)                      { filter start offset }
    //
    // The first two integers have already been decoded

    switch (pEHClauseOut->m_clauseKind)
    {
    case EH_CLAUSE_TYPED:
        pEHClauseOut->m_handlerAddress = pEnumState->pMethodStartAddress + VarInt::ReadUnsigned(pEnumState->pEHInfo);

        // Read target type
        {
            // @TODO: CORERT: Compress EHInfo using type table index scheme
            // https://github.com/dotnet/corert/issues/972
            UInt32 typeRVA = *((PTR_UInt32&)pEnumState->pEHInfo)++;
            pEHClauseOut->m_pTargetType = dac_cast<PTR_VOID>(m_moduleBase + typeRVA);
        }
        break;
    case EH_CLAUSE_FAULT:
        pEHClauseOut->m_handlerAddress = pEnumState->pMethodStartAddress + VarInt::ReadUnsigned(pEnumState->pEHInfo);
        break;
    case EH_CLAUSE_FILTER:
        pEHClauseOut->m_handlerAddress = pEnumState->pMethodStartAddress + VarInt::ReadUnsigned(pEnumState->pEHInfo);
        pEHClauseOut->m_filterAddress = pEnumState->pMethodStartAddress + VarInt::ReadUnsigned(pEnumState->pEHInfo);
        break;
    default:
        UNREACHABLE_MSG("unexpected EHClauseKind");
    }

    return true;
}

PTR_VOID CoffNativeCodeManager::GetMethodStartAddress(MethodInfo * pMethodInfo)
{
    CoffNativeMethodInfo * pNativeMethodInfo = (CoffNativeMethodInfo *)pMethodInfo;
    return dac_cast<PTR_VOID>(m_moduleBase + pNativeMethodInfo->mainRuntimeFunction->BeginAddress);
}

void * CoffNativeCodeManager::GetClasslibFunction(ClasslibFunctionId functionId)
{
    uint32_t id = (uint32_t)functionId;

    if (id >= m_nClasslibFunctions)
        return nullptr;

    return m_pClasslibFunctions[id];
}

PTR_VOID CoffNativeCodeManager::GetAssociatedData(PTR_VOID ControlPC)
{
    TADDR relativePC = dac_cast<TADDR>(ControlPC) - m_moduleBase;

    int MethodIndex = LookupUnwindInfoForMethod((UInt32)relativePC, m_pRuntimeFunctionTable, 0, m_nRuntimeFunctionTable - 1);
    if (MethodIndex < 0)
        return NULL;

    PTR_RUNTIME_FUNCTION pRuntimeFunction = m_pRuntimeFunctionTable + MethodIndex;

    size_t unwindDataBlobSize;
    PTR_VOID pUnwindDataBlob = GetUnwindDataBlob(m_moduleBase, pRuntimeFunction, &unwindDataBlobSize);

    PTR_UInt8 p = dac_cast<PTR_UInt8>(pUnwindDataBlob) + unwindDataBlobSize;

    uint8_t unwindBlockFlags = *p++;
    if ((unwindBlockFlags & UBF_FUNC_HAS_ASSOCIATED_DATA) == 0)
        return NULL;

    UInt32 dataRVA = *(UInt32*)p;
    return dac_cast<PTR_VOID>(m_moduleBase + dataRVA);
}

extern "C" bool __stdcall RegisterCodeManager(ICodeManager * pCodeManager, PTR_VOID pvStartRange, UInt32 cbRange);
extern "C" void __stdcall UnregisterCodeManager(ICodeManager * pCodeManager);
extern "C" bool __stdcall RegisterUnboxingStubs(PTR_VOID pvStartRange, UInt32 cbRange);

extern "C"
bool RhRegisterOSModule(void * pModule,
                        void * pvManagedCodeStartRange, UInt32 cbManagedCodeRange,
                        void * pvUnboxingStubsStartRange, UInt32 cbUnboxingStubsRange,
                        void ** pClasslibFunctions, UInt32 nClasslibFunctions)
{
    PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)pModule;
    PIMAGE_NT_HEADERS pNTHeaders = (PIMAGE_NT_HEADERS)((TADDR)pModule + pDosHeader->e_lfanew);

    IMAGE_DATA_DIRECTORY * pRuntimeFunctions = &(pNTHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXCEPTION]);

    NewHolder<CoffNativeCodeManager> pCoffNativeCodeManager = new (nothrow) CoffNativeCodeManager((TADDR)pModule,
        dac_cast<PTR_RUNTIME_FUNCTION>((TADDR)pModule + pRuntimeFunctions->VirtualAddress),
        pRuntimeFunctions->Size / sizeof(RUNTIME_FUNCTION),
        pClasslibFunctions, nClasslibFunctions);

    if (pCoffNativeCodeManager == nullptr)
        return false;

    if (!RegisterCodeManager(pCoffNativeCodeManager, pvManagedCodeStartRange, cbManagedCodeRange))
        return false;

    if (!RegisterUnboxingStubs(pvUnboxingStubsStartRange, cbUnboxingStubsRange))
    {
        UnregisterCodeManager(pCoffNativeCodeManager);
        return false;
    }

    pCoffNativeCodeManager.SuppressRelease();

    return true;
}

redpajama_set_name: RedPajamaGithub


Since I joined our party in October 2014 it has faced unprecedented electoral "challenges". To recover we must fully engaging with members to ensure they can make an effective contribution to the Labour movement's fight for social justice. This is my aim.
Transform the SEC's relevance by consulting directly with members on the decisions it makes.
Covert the lessons we learn from our successes and defeats into winning tactics.
Attend your CLP to ensure its voice is hear in policy making.


text:
Universal Motorcycle MTB Bike Bicycle Handlebar Mount Holder For Cell Phone GPS
Motorcycle Bike Phone Mount Holder Cell Phone Wireless Charger Handlebar Mirror
Universal Motorcycle Bicycle MTB Bike Handlebar Mount Holder For Cell Phone GPS
Full Aluminum Motorcycle Bike Handlebar Cell Phone Holder Mount USB Fast Charger
hotyoyo (117707 )
Details about Motorcycle Bicycle MTB Road Bikes Phone Mount Cell Phone Holder Handlebar D3V9
Motorcycle Bicycle MTB Road Bikes Phone Mount Cell Phone Holder Handlebar D3V9
Original priceC $7.71
C $0.39 (5% off)
Discounted price C $7.32
Does not ship to United States | See details
Shen Zhen, China
Americas, Europe, Asia | See exclusions
30 day buyer pays return shipping | See details
Fit handlebar size: 20-33mm Manufacturer Part Number: XAD9272668904034JK
Package size: 16 * 7 * 5cm / 6.3 * 2.8 * 2in MPN: XAD9272668904034JK
UPC: Does not apply ASIN: B07QCWK91G
Material: Synthetic nylon ISBN: Does not apply
Weight: 63g / 2.2oz Color: Black
99 Cents Online Store
Computers / Networking
Bags,Hats,Shoes & Accessories
199 Cents
RC Models and Accessories
Tablet PCs & Cell Phone
Flashlights / LEDs
RC-Wltoys & FPV Parts & Other
RC-SYMA & JJRC & Other Parts
RC Cheerson & Car & Boat
The seller has not specified a shipping method to United States. Contact the seller- opens in a new window or tab and request shipping to your location.
Item location: Shen Zhen, China
Shipping to: Americas, Europe, Asia
Excludes: Central America and Caribbean, South America, Bermuda, Greenland, Saint Pierre and Miquelon, United States, Algeria, Angola, Benin, Botswana, Burkina Faso, Burundi, Cameroon, Cape Verde Islands, Central African Republic, Chad, Comoros, Congo, Republic of the, Côte d'Ivoire (Ivory Coast), Djibouti, Egypt, Equatorial Guinea, Eritrea, Ethiopia, Gabon Republic, Gambia, Ghana, Guinea, Guinea-Bissau, Kenya, Lesotho, Liberia, Libya, Madagascar, Malawi, Mali, Mauritania, Mauritius, Mayotte, Morocco, Mozambique, Namibia, Niger, Nigeria, Reunion, Rwanda, Saint Helena, Senegal, Seychelles, Sierra Leone, Somalia, Swaziland, Tanzania, Togo, Tunisia, Uganda, Western Sahara, Zambia, Zimbabwe, Bahrain, Iraq, Jordan, Kuwait, Lebanon, Oman, Qatar, Saudi Arabia, Turkey, United Arab Emirates, Yemen, Afghanistan, Armenia, Azerbaijan Republic, Bangladesh, Bhutan, China, Georgia, India, Kyrgyzstan, Maldives, Mongolia, Nepal, Pakistan, Sri Lanka, Tajikistan, Turkmenistan, Uzbekistan, American Samoa, Australia, Cook Islands, Fiji, French Polynesia, Guam, Kiribati, Marshall Islands, Micronesia, Nauru, New Caledonia, Niue, Palau, Papua New Guinea, Solomon Islands, Tonga, Tuvalu, Vanuatu, Wallis and Futuna, Western Samoa, Albania, Andorra, Austria, Bosnia and Herzegovina, Cyprus, Estonia, France, Germany, Gibraltar, Guernsey, Iceland, Ireland, Italy, Jersey, Liechtenstein, Macedonia, Moldova, Monaco, Montenegro, San Marino, Serbia, Spain, Svalbard and Jan Mayen, Switzerland, Ukraine, United Kingdom, Vatican City State, Brunei Darussalam, Cambodia, Hong Kong, Indonesia, Laos, Macau, Taiwan, Vietnam
Change country: -Select- Belarus Belgium Bulgaria Canada Croatia, Republic of Czech Republic Denmark Finland Greece Hungary Israel Japan Kazakhstan Korea, South Latvia Lithuania Luxembourg Malaysia Malta Mexico Netherlands Norway Philippines Poland Portugal Romania Russian Federation Singapore Slovakia Slovenia Sweden Thailand
This item does not ship to United States
Handlebar Cell Phone Mounts & Holders,
MTB Bicycle Handlebars,
RAM Cell Phone Bike Mounts/Holders,
Bike Cell Phone Mounts/Holders,
Handlebar Cell Phone Bike Mounts for Universal,
Rokform Handlebar Cell Phone Mounts & Holders,
Quad Lock Handlebar Cell Phone Mounts & Holders,
Cell Phone Bike Mounts for Xiaomi,
Cup Holder Cell Phone Bike Mounts for Universal,
LifeProof Handlebar Cell Phone Mounts & Holders


The Syrian conflict—now in its 5th year—is the worst humanitarian crisis of our time. In an effort to make a difference, Interlink Publishing, a Massachusetts-based independent publishing house, has collaborated with bestselling cookbook author, photographer, and food writer Barbara Abdeni Massaad (Man'oushe: Inside the Lebanese Street Corner Bakery)--together with nearly 80 acclaimed chefs—on a humanitarian cookbook project whose profits will be donated to the UN Refugee Agency UNHCR to provide urgently needed food relief for Syrian refugees.
How does Rocktown Rallies fit in?
Rocktown Rallies held a Soup for Syria Supper on Saturday, January 21st at Horizons at Valley Pike at 5:30pm.
NOW.... We need for you to host your own Soup for Syria Supper in your home, church, or business during the month of February. Make soup to share, invite your friends, and encourage everyone to support UNHCR with direct donations or by purchasing the Soup for Syria cookbook.
Add Your Party to this List!


text:
Clint Hill does not understand that his description of JFK's head wound is in conflict with the official description
Yes, it's another article about "The Kennedy Detail." Yet another whitewash of the Secret Service. Yet, despite how much the try to support the Warren Commission because they really don't understand the case they really undermine it.
JFK's Secret Service opens up, say no conspiracy behind assassination
"I could see that his eyes were fixed, there was a gaping hole in the upper right rear of his head about the size of my palm," said Hill, struggling to hold his composure."


text:
This Little Bag of Dreams
O body swayed to music, O brightening glance,/How can we know the dancer from the dance?
Month: March, 2014
G.I. Brides by Duncan Barrett and Nuala Calvi
As the 8.10 to Charing Cross pulled out of Woolwich, Sylvia Bradley could hardly contain her excitement. At fifteen and a half, she had only just left school, and was thrilled to be joining the crowds of glamorous women who took the train 'Up West' every morning to work in the capital's grand hotels and shops.
It was fitting that I read GI Brides, the second book from the authors of the Sunday Times bestseller, The Sugar Girls, thousands of miles away from home in Perth, Australia. There, however, the similarities between the G.I. Brides and me end. For not only was I reading the book surrounded by my family, I also will be returning to my own country soon. In contrast, the G.I. Brides sacrificed not only perhaps never seeing England again, but also even seeing their own family again once they set sail (or flew, if they were lucky) for America.
For those of you who have read The Sugar Girls, the format of G.I. Brides will be reassuringly familiar. Barrett and Calvi have chosen four brides to tell their stories – Gwen, Rae, Margaret and Sylvia – and each chapter is devoted to one of the women. This interwoven approach keeps the reader interested, for no sooner have you become involved in one of the bride's latest predicaments, their chapter ends and your focus to redirected to one of the other brides.
What I found fascinating, and shocking about G.I. Brides, was the extent to which the women emigrating for love were reviled by some Americans. Even their new families were not altogether welcoming. Although obviously, wartime, despite involving many nations uniting for a common cause, is a time in which every country involved fights to protect itself. Hence those who were jealous of the G.I. Brides were mostly women, angry that those from another country had taken their men. It is a concept difficult to appreciate from a modern viewpoint, given that we have not experienced warfare on such a scale since WWII.
There are harrowing stories in G.I. Brides, but there is much to giggle at too. Some of the funniest episodes in the book result from the differences between British English and American English. My favourite was when Gwen/Lyn kept asking the train porter to 'knock her up' each morning, on her great odyssey across America to California, so that she could glimpse the changing scenery. The porter told her to make sure she told her boyfriend that he 'knocked her up' every morning. Little did innocent Lyn know that the expression took on quite a different meaning in America!
I enjoyed G.I. Brides immensely and look forward to what the authors investigate next.
If you have enjoyed this review, you may find this Guardian interview with Nuala Calvi interesting.
Many thanks to Harper Collins for the review copy.
The List – Joanna Bolouri
Hilarious review! Def putting The List on my TBR pile.
Having Read The Book
This is SO far and away NOT a book I would usually have picked up: there is pink swirly writing and a cartoon woman winking on the cover. But Bolouri is hella funny on twitter, so I thought, what the hell! I CAN read a book with pink swirly writing and a cartoon woman winking on the cover. So I paid my electronic money and downloaded it.
Ever since I discovered Adrian Mole I have been a sucker for calendar based writing, so once I saw "Saturday January 1st" introducing the first page, I was in.
Phoebe Henderson is a woman scorned, still reeling from discovering her ex in bed with another women she is seeing in a new year in a mess. Stuck in a job she hates, with no new relationship, and nothing else on the horizon to keep her chin up (other than being totally happy for…
Ostrich by Matt Greene
I can tell my parents are unhappy by the way they smile at waiters. In that small act of ingratiation I can see the custody battle to come. It won't be fought in the courtroom but in HMV and Game. Stocks in Nintendo will soar as my affections are auctioned off to the highest bidder. My teeth will rot.
I picked up this book because of its wonderful cover: a gorgeously retro black and white camera, resplendent in a sea of orange. Yet the camera's appeal is not merely aesthetic: not only does one of the main characters have a darkroom, but this camera image also serves to remind us that we only ever get a snapshot into the psyche of others.
Twelve year old Alex has problems. His parents hate each other and his hamster Jaws 2 is acting out of character. Oh, and he's just had major brain surgery. Not quite your average adolescent, then.
What I liked the most about Ostrich was that there was no clichéd terrible sense of foreboding (sorry, a cliché in itself) with regards to Alex's predicament. Instead, we see him traversing the usual teenage routes of conspiracy theories, re Jaws 2's behaviour, with his new 'girl friend', Chloe, playing Spin the Bottle and tricking younger kids on the school bus. Furthermore, Greene gives us a History Boys-style reasoned debate about why there is no future, and this is discussed in the context of language, rather than Alex's illness:
Then she took out some chalk and wrote the words I'M THERE on the blackboard.
'Does that make sense to you?' she asked.
'Yes,' I replied.
'Why?'
'Because I've heard people say it.'
'But it shouldn't make sense though, should it? Not if you think about it. Are you thinking about it?
'Yes,' I said. And then I started to think about it.
'What tense is the verb?' asked Miss Farthingdale.
'Present.'
'And what does the present tense mean?'
'Now.'
'Exactly,' she smiled. 'And how could I be there now?'
Alex became a bit like spending a month surrounded by your family: you veer between loving them and wanting them to go away. Greene is a genius, but sometimes, it felt like being entertained by a stand up: Alex's cleverness is constant and occasionally irksome. But for the most part, I found it endearing, particularly when he talks about his French class alter ego, Marcel, and the limitations to his life:
(In many ways my life is so much simpler in French. I don't get headaches or déjà vu in French because I don 't know the words for them. Moreover I don't worry about my parents' marriage or my own mortality or why I haven't had a wet dream because these are emotions I am not able to express. Sometimes I'm jealous of Marcel. I think that if I moved to France I'd be a completely different person. (For one thing I'd agree with people a lot more and for another I'd spend much more time in libraries and swimming pools.)
Deliberately, I imagine, the novel veers between the present and the past (but not the future, of course), and this switching can be confusing for the reader. All in all, however, this is a brilliant début novel which deserves to be noticed.
Keep Your Friends Close by Paula Daly
Are you living in the moment?
Me neither. I'm trying to. Really, I am. Periodically, throughout the day, I stop what I'm doing and say to myself, This is it. This moment is all you have. Enjoy it. Feel it. Embrace the Now.
You know the drill: house, work, 2.4 children. Barely enough time to eat, let alone romance your husband or practise mindfulness. So when your daughter's teacher phones to tell you she's in A & E, you don't think twice about making the trip to France alone. After all, there is your other daughter to look after, the hotel to run, your mother in law to entertain. And look, here is your friend from university, ready to step in and take your place in your absence. Hold the fort, I mean. Of course I mean hold the fort.
For, barely two weeks later, the overworked and undersexed Natty returns from France, with her seriously ill daughter, to find that her husband Sean has shacked up with her so-called friend, Eve, who is evidently oversexed. So much for the sisterhood.
Soon, however, we realise that Eve is not the superwoman, domestic/sex goddess she purports to be. Her crimes, despite the obvious sin of husband stealing, range from the casually cruel (trashing Natty's make-up) to injuring herself, making it look like GBH, with Natty the perpetrator. Natty struggles to convince the police, and even her own family, just how psychotic Eve is. But then an anonymous note arrives, telling her that Eve has wrecked homes before. Is everyone else convinced by this evidence? And can Eve be stopped before it's too late?
Daly writes as grippingly as she did in her début, Just What Kind of Mother Are You?. I especially enjoyed her further exploration of today's harried mothers in the form of Natty, and thought that her characterisation of überbitch Eve was spot on.
What I love perhaps the most about Daly's writing is that it is set firmly in the luscious landscapes of her home, the Lake District, contrary to the idea that all modern novels are set in North London. I do hope she continues in this fashion.
Zenith Hotel by Oscar Coop Phane
When I wake up, my teeth feel furry. There's a foul taste in my mouth – a nasty sort of animal taste. Still, it's better than at night, when I have the taste of other people and their filth.
Fans of Lou Reed and the Velvets will recognise the seedier side of life portrayed in Zenith Hotel. The novel is told from several viewpoints: we hear from a prostitute, Nanou, the highly sexed Robért, the psychotic 'jailbird' Dominic, the suicidal misanthrope, Victor, the moped-repairing, newly separated Luc and the heartbroken widow, Pio. Despite their differences, they are all connected by one thing : they sleep with Nanou.
What I loved the most about Zenith Hotel, despite its bleakness, was its absolute honesty and its refusal to bow to the reader's demands. For example, Nanou only lets the reader so far into her rough existence, unwilling to discuss any of the seedier aspects:
I don't intend to go into detail and tell you about my childhood, my love life and all my woes. I'm not going to tell you how I ended up like this – you'd get too much of a kick out of it. All you're going to get is my day. If you were expecting me to talk about rape , being abandoned, HIV and heroin, you can fuck off, pervert.HIV
Zenith Hotel is refreshingly honest about how, in the most literal sense, we are absolutely alone as human beings, just as it is frank about our sexual fantasies. Emmanuel fantasises about other women when he sleeps with Estelle, when ironically, despite partaking in the closest human contact possible, Nanou maintains that we are alone even during sex:
Go on, try, get married, fuck old whores, have kids, read novels, you'll always be alone.
Given this honesty, Zenith Hotel can be quite challenging to read at times, and some characters occasionally descend into a rant. But despite that, I found it a most engaging début .
The Book of Souls by James Oswald
Having loved the first Inspector McLean novel, Natural Causes, I had high hopes for The Book of Souls. I was not disappointed.
The novel begins with the death of Donald Anderson, a serial killer who just so happens to have murdered Tony McLean's fiancée, Kirsty Summers, ten years ago. Despite attending his funeral in order to gain that elusive 'closure', McLean starts seeing Anderson everywhere. The plot thickens further when copycat murders start to occur. Is Anderson still alive? Or is someone merely imitating his methods?
Although The Book of Souls had a slower start than Natural Causes, soon enough, I was taking the novel everywhere with me. I loved the clashes between McLean and his nemesis superior, Dagwood, and the fact that McLean carries on in pursuit of the truth, regardless of Dagwood's opinion. It was good, too, to see the return of the slightly supernatural, John Connolly-esque touch introduced in Natural Causes. And like all good crime novels, I was one step behind McLean, only realising the culprit when he was caught.
My next task is to purchase The Hangman's Song, where I hope to see the relationship develop between McLean and Emma, his on-off love interest.
Blog Tour, Day 7: The Lido by Libby Page
Fear by Dirk Kurbjuweit
Three Things About Elsie by Joanna Cannon
Hot Mess by Lucy Vine
The Man Who Loved Islands by David F. Ross – Blog Tour


In addition to the craziness a 2 month old has added to daily life around the Leipprandt house, I've got a strange new addiction - Harry Potter.
I downloaded all 7 books onto my Kindle just before Britain was born and am just about to finish the last one. I was really hoping to read all 7 in the first seven weeks of Britain's life, but these darn kids keep getting in the way of my reading time.
So anyway, I've joined the Harry Potter fan club and now I'm DYING for the final movie to come out! Are any of y'all Pottheads too?!
I'm a Potthead! So glad that you love them!
It took me forever, but I finally got my husband to try the Harry Potter books. He got so obsessed that he TOOK NOTES while re-reading them for the 9th time. This was before the last book came out and he was trying to make educated guesses about what would happen. And this is a Metallica-loving, read-nothing-but-military-history kinda guy. I created a monster.
We have ALL the movies if you want to borrow them. How on earth have you found time to read all of those book!?!? You must be a speed reader!


text:
Congolese Rebels Refuse to Disarm as Deadline Nears
Rebels in the eastern Democratic Republic of Congo are refusing to disband and disarm, one day before a deadline set by President Joseph Kabila.
Rebel leader Laurent Nkunda told the BBC Sunday that more talks with the government are necessary before his troops can be integrated into the national army.
President Kabila has said the rebels must join the army by Monday or face unspecified action. Rebels and foreign observers have said they expect an army offensive against the rebels.
Mr. Kabila arrived in Congo's North Kivu province Sunday with the army chief of staff and his ministers of defense and humanitarian affairs. A spokesman said the president came to assess the region's military and humanitarian situation.
The army said it captured three rebel-held towns in North Kivu last week and killed at least 85 rebel fighters.
The sides have engaged in weeks of often heavy fighting in villages near the provincial capital, Goma. Nkunda called for a new ceasefire on Wednesday, two days after abandoning an earlier ceasefire he said the army had already broken by attacking his troops.
Sunday, Nkunda said he would be prepared to leave Congo if certain conditions are met. He said he wants discussions on the return of Congolese Tutsi refugees from neighboring countries such as Rwanda and Burundi.
The renegade general has said his forces are protecting Congo's minority Tutsi population. He accuses the Congolese government of collaborating with Hutu rebels who entered the area after the Rwandan 1994 genocide.
Congo's army has been fighting Nkunda since 2004 as part of efforts to assert control over the country's volatile east. Militias and rebel groups remain active in the region, more than four years after the end of Congo's civil war.